Come posso utilizzare il correttore ortografico / grammaticale di Microsoft Word a livello di codice?
Domanda
Voglio elaborare un numero medio-alto di frammenti di testo usando un correttore ortografico / grammaticale per ottenere un'approssimazione approssimativa e la classificazione della loro qualità "quotata". Anche la velocità non è davvero preoccupante, quindi penso che il modo più semplice sia scrivere uno script che trasmetta gli snippet a Microsoft Word (2007) e esegua il controllo ortografico e grammaticale su di essi.
C'è un modo per farlo da uno script (in particolare, Python)? Qual è una buona risorsa per imparare a controllare Word in modo programmatico?
In caso contrario, suppongo di poter provare qualcosa da Open Source Grammar Checker (SO) .
Aggiornamento
In risposta alla risposta di Chris, c'è almeno un modo per a) aprire un file (contenente i frammenti), b) eseguire uno script VBA dall'interno di Word che chiama il controllo ortografico e grammaticale ec ) restituisce alcune indicazioni del "punteggio" dello / i frammento / i?
Aggiornamento 2
Ho aggiunto una risposta che sembra funzionare, ma se qualcuno ha altri suggerimenti terrò aperta questa domanda per un po 'di tempo.
Soluzione
Ci sono voluti degli scavi, ma penso di aver trovato una soluzione utile. Seguendo i consigli su http://www.nabble.com/ Edit-a-Word-document-programmatical-td19974320.html Sto usando il win32com module (se il link SourceForge non funziona, secondo questa risposta Stack Overflow è possibile utilizzare pip
per ottenere il modulo), che consente l'accesso agli oggetti COM di Word. Il seguente codice lo dimostra bene:
import win32com.client, os
wdDoNotSaveChanges = 0
path = os.path.abspath('snippet.txt')
snippet = 'Jon Skeet lieks ponies. I can haz reputashunz? '
snippet += 'This is a correct sentence.'
file = open(path, 'w')
file.write(snippet)
file.close()
app = win32com.client.gencache.EnsureDispatch('Word.Application')
doc = app.Documents.Open(path)
print "Grammar: %d" % (doc.GrammaticalErrors.Count,)
print "Spelling: %d" % (doc.SpellingErrors.Count,)
app.Quit(wdDoNotSaveChanges)
che produce
Grammar: 2 Spelling: 3
che corrispondono ai risultati quando si richiama il controllo manualmente da Word.