Как программно использовать программу проверки правописания / грамматики Microsoft Word?

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

Вопрос

Я хочу обработать от среднего до большого количества текстовых фрагментов с помощью средства проверки орфографии / грамматики, чтобы получить грубое приближение и ранжировать их " качество. " Скорость на самом деле тоже не имеет значения, поэтому я думаю, что самый простой способ - написать скрипт, который передает фрагменты в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top