Как программно использовать программу проверки правописания / грамматики Microsoft Word? - PullRequest
6 голосов
/ 30 октября 2009

Я хочу обработать от среднего до большого количества текстовых фрагментов, используя проверку орфографии / грамматики, чтобы получить грубое приближение и ранжирование их "качества". Скорость на самом деле тоже не имеет значения, поэтому я думаю, что самый простой способ - написать скрипт, который передает фрагменты в Microsoft Word (2007) и запускает на них проверку орфографии и грамматики.

Есть ли способ сделать это из скрипта (в частности, Python)? Что такое хороший ресурс для изучения программного управления Word?

Если нет, то я могу попробовать что-то из Средство проверки грамматики с открытым исходным кодом (SO) .

Обновление

В ответ на ответ Криса есть ли хотя бы способ а) открыть файл (содержащий фрагмент (ы)), б) запустить скрипт VBA изнутри Word, который вызывает проверку орфографии и грамматики, и с ) вернуть какое-нибудь указание на «оценку» фрагмента (ов)?

Обновление 2

Я добавил ответ, который, кажется, работает, но если у кого-то есть другие предложения, я оставлю этот вопрос открытым в течение некоторого времени.

1 Ответ

8 голосов
/ 30 октября 2009

Потребовалось некоторое копание, но я думаю, что нашел полезное решение. Следуя совету на http://www.nabble.com/Edit-a-Word-document-programmatically-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.

...