¿Cómo puedo usar el corrector ortográfico / gramatical de Microsoft Word mediante programación?

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

Pregunta

Deseo procesar un número medio a grande de fragmentos de texto utilizando un corrector ortográfico / gramatical para obtener una aproximación y clasificación aproximada de su "calidad". La velocidad tampoco es realmente preocupante, por lo que creo que la forma más fácil es escribir un script que pase los fragmentos a Microsoft Word (2007) y ejecute su corrector ortográfico y gramatical en ellos.

¿Hay alguna manera de hacer esto desde un script (específicamente, Python)? ¿Cuál es un buen recurso para aprender a controlar Word mediante programación?

Si no, supongo que puedo probar algo de Open Source Grammar Checker (SO) .

Actualizar

En respuesta a la respuesta de Chris, ¿hay al menos una forma de a) abrir un archivo (que contenga los fragmentos), b) ejecutar un script VBA desde Word que llame al corrector ortográfico y gramatical, y c ) devuelve alguna indicación de la "puntuación" del fragmento (s)?

Actualización 2

He agregado una respuesta que parece funcionar, pero si alguien tiene otras sugerencias, mantendré esta pregunta abierta por algún tiempo.

¿Fue útil?

Solución

Me tomó algo de tiempo, pero creo que encontré una solución útil. Siguiendo el consejo en http://www.nabble.com/ Edit-a-Word-document-programmatic-td19974320.html Estoy usando el win32com módulo (si el enlace SourceForge no funciona, de acuerdo con esta respuesta de desbordamiento de pila puede usar pip para obtener el módulo), que permite el acceso a los objetos COM de Word. El siguiente código demuestra esto muy bien:

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)

que produce

Grammar: 2
Spelling: 3

que coinciden con los resultados al invocar el cheque manualmente desde Word.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top