Come posso utilizzare il correttore ortografico / grammaticale di Microsoft Word a livello di codice?

StackOverflow https://stackoverflow.com/questions/1646801

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top