Как программно использовать программу проверки правописания / грамматики Microsoft Word?
Вопрос
Я хочу обработать от среднего до большого количества текстовых фрагментов с помощью средства проверки орфографии / грамматики, чтобы получить грубое приближение и ранжировать их " качество. " Скорость на самом деле тоже не имеет значения, поэтому я думаю, что самый простой способ - написать скрипт, который передает фрагменты в Microsoft Word (2007) и запускает на них проверку орфографии и грамматики.
Есть ли способ сделать это из скрипта (в частности, Python)? Что такое хороший ресурс для изучения программного управления Word?
Если нет, то я могу попробовать что-то из Средство проверки грамматики с открытым исходным кодом (SO) . р>
Update
В ответ на ответ Криса есть ли хотя бы способ а) открыть файл (содержащий фрагмент (ы)), б) запустить скрипт VBA изнутри Word, который вызывает проверку орфографии и грамматики, и с ) вернуть некоторое указание на «счет»; фрагментов?
Обновление 2
Я добавил ответ, который, кажется, работает, но если у кого-то есть другие предложения, я оставлю этот вопрос открытым в течение некоторого времени.
Решение
Потребовалось немного покопаться, но я думаю, что нашел полезное решение. Следуя совету на http://www.nabble.com/ Edit-a-Word-document-programically-td19974320.html Я использую win32com модуль (если ссылка SourceForge не работает, в соответствии с этим ответом о переполнении стека вы можете использовать pip
для получения модуля), что позволяет получить доступ к COM-объектам Word. Следующий код демонстрирует это прекрасно:
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)
который производит
Grammar: 2 Spelling: 3
которые соответствуют результатам при вызове чека вручную из Word.