在日常办公场景中合同审批、技术文档迭代、公文修订等工作中经常需要对比两个 Word 文档版本之间的差异。虽然 Word 本身提供了“比较”功能但当需要批量处理或集成到自动化流程中时通过编程方式实现文档对比就变得非常必要。本文将介绍如何使用 Python 和 Free Spire.Doc for Python 库来实现 Word 文档的自动对比。说明本文使用的 Free Spire.Doc for Python 是免费库有篇幅限制无需安装 Microsoft Office可在 Python 环境中独立运行。一、环境准备1.1 安装库免费 Python 库可以通过 pip 直接安装pip install Spire.Doc.Free1.2 核心 API 说明库中 Document 类提供了 Compare() 方法用于将当前文档与另一文档进行比对语法如下document.Compare(Document document, string author)document待比对的另一个 Document 对象 author修订标记的作者名称用于标识是谁做出的修改比对完成后差异会以修订Track Changes的形式标记在原文档对象中保存后即可在 Word 中查看。二、基础文档对比2.1 基础代码示例下面是最基础的对比代码加载两个文档后执行比对直接输出带修订标记的结果文件。from spire.doc import *from spire.doc.common import *加载原始文档基准版本firstDoc Document(“Original.docx”)加载修订文档对比版本secondDoc Document(“Revised.docx”)执行对比以 firstDoc 为基准识别 secondDoc 相对于它的所有改动第二个参数为修订人名称会显示在修订标记中firstDoc.Compare(secondDoc, “系统审计员”)将对比结果保存为新文档firstDoc.SaveToFile(“对比结果.docx”, FileFormat.Docx2016)释放资源firstDoc.Dispose()secondDoc.Dispose()代码逻辑非常简洁实例化两个 Document 对象分别装载原始文档与修订文档调用 Compare() 方法后所有差异会以 Word 修订模式记录在新文档中最后保存即可。2.2 运行结果执行上述代码后生成的 对比结果.docx 会包含完整的修订标记新增内容以下划线或不同颜色标记删除内容以删除线标记每处修订都会显示修订人信息三、自定义比较选项在实际应用中有时我们只关心文本内容的变化而不希望格式修改如字体、字号、颜色等被标记为修订。这时可以使用 CompareOptions 类来定制比较行为。3.1 忽略格式差异from spire.doc import *from spire.doc.common import *加载文档firstDoc Document(“Original.docx”)secondDoc Document(“Revised.docx”)创建比较选项并设置忽略格式compareOptions CompareOptions()compareOptions.IgnoreFormatting True执行对比时传入比较选项firstDoc.Compare(secondDoc, “系统审计员”, compareOptions)保存结果firstDoc.SaveToFile(“对比结果_仅内容差异.docx”, FileFormat.Docx2016)firstDoc.Dispose()secondDoc.Dispose()设置 IgnoreFormatting True 后对比结果中将只体现文本内容的增删改字体、颜色、段落格式等变化不会被标记为修订。3.2 其他比较选项根据版本不同CompareOptions 还支持更多精细化控制属性 说明IgnoreFormatting 忽略格式差异IgnoreHeadersAndFooters 忽略页眉/页脚内容的差异TextCompareLevel 控制文本对比粒度的核心属性默认值为 Word单词级对比四、处理包含修订的文档在实际工作中待对比的文档可能本身就包含修订记录。需要注意的是参与对比的两个文档不能包含未处理的修订否则会抛出异常。解决方案是在对比前先接受Accept所有修订from spire.doc import *from spire.doc.common import *加载文档并接受所有修订firstDoc Document(“Original_with_revisions.docx”)firstDoc.AcceptChanges()重新加载或直接使用已清理的文档secondDoc Document(“Revised.docx”)此时可以正常对比firstDoc.Compare(secondDoc, “系统审计员”)firstDoc.SaveToFile(“对比结果.docx”, FileFormat.Docx2016)firstDoc.Dispose()secondDoc.Dispose()或者先将清理后的文档保存为新文件再重新加载进行对比。五、小结通过以上代码示例可以看出使用 Python 配合 Free Spire.Doc 实现 Word 文档对比只需要寥寥数行核心代码。该方案的主要优势在于自动化可批量处理大量文档对比任务独立性不依赖 Microsoft Office 环境可定制支持忽略格式、页眉页脚、表格等差异输出标准对比结果直接输出为带修订标记的标准 Word 文档无论是用于文档审核、版本管理还是自动化办公流程这套方案都能显著提升工作效