【问题标题】:How can I use Microsoft Word's spelling/grammar checker programmatically?如何以编程方式使用 Microsoft Word 的拼写/语法检查器?
【发布时间】:2010-12-11 10:24:53
【问题描述】:

我想使用拼写/语法检查器处理中等到大量的文本 sn-ps,以获得它们“质量”的粗略近似值和排名。速度也不是问题,所以我认为最简单的方法是编写一个脚本,将 sn-ps 传递给 Microsoft Word (2007) 并在它们上运行拼写和语法检查器。

有没有办法通过脚本(特别是 Python)做到这一点?什么是学习以编程方式控制 Word 的好资源?

如果没有,我想我可以从Open Source Grammar Checker (SO) 尝试一些东西。

更新

响应 Chris 的回答,是否至少有一种方法可以 a) 打开一个文件(包含 sn-p(s)),b) 从 Word 内部运行一个调用拼写和语法检查器的 VBA 脚本, c) 返回一些关于 sn-p(s) 的“分数”的指示?

更新 2

我添加了一个似乎可行的答案,但如果有人有其他建议,我会保留这个问题一段时间。

【问题讨论】:

  • 摘要底部的注释似乎表明这是不可能的。 support.microsoft.com/kb/262605
  • Word 的语法检查器还有很多不足之处。很多假阳性和假阴性。当然,我不知道有什么明显更好的东西。 :(

标签: python com ms-word word-2007 win32com


【解决方案1】:

它需要一些挖掘,但我认为我找到了一个有用的解决方案。按照http://www.nabble.com/Edit-a-Word-document-programmatically-td19974320.html 的建议,我正在使用win32com 模块(如果SourceForge 链接不起作用,根据this Stack Overflow answer,您可以使用pip 获取模块),它允许访问Word 的COM 对象.下面的代码很好地证明了这一点:

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)

产生

语法:2 拼写:3

从 Word 手动调用检查时的结果匹配。

【讨论】:

  • nabble.com/… 此链接无效,他们可能会更改 domian 或其他内容,您能否提供该站点的新链接??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
相关资源
最近更新 更多