AI 文档版本比较适合核对新旧安装说明、项目需求和文章修订。直接把两份长文交给模型,可能漏掉删除的条件,或把措辞变更夸大成功能升级。本文先用 Python 生成可回查的差异,再让 AI 解释,最后人工确认。适用于 UTF-8 文本与 Markdown,PDF 和 Word 需要先按章节提取可核对文字。

一、准备同一范围的新旧文本
文件分别命名为 old.md 和 new.md,保留来源、日期和版本。不要把旧版完整手册与新版节选当成同等范围,否则“缺少章节”可能只是提取不全。
使用演示文本练习:旧版写“每周日备份,可覆盖测试目录”,新版写“每周六备份,不得覆盖原始目录”。这既有日期变化,也有操作对象与限制变化,应分别记录。
二、生成确定性的差异报告
保存为 compare_docs.py。脚本只读两个输入,新建 diff.txt,不修改原文。它展示行级变化,不负责判断技术含义。
from pathlib import Path
import difflib
old = Path("old.md").read_text(encoding="utf-8-sig").splitlines(keepends=True)
new = Path("new.md").read_text(encoding="utf-8-sig").splitlines(keepends=True)
if old and not old[-1].endswith("\n"):
old[-1] += "\n"
if new and not new[-1].endswith("\n"):
new[-1] += "\n"
report = "".join(difflib.unified_diff(old, new, fromfile="old.md", tofile="new.md"))
with open("diff.txt", "x", encoding="utf-8") as output:
output.write(report or "No line differences found.\n")
print("Created diff.txt")
py compare_docs.py
差异中的减号行表示旧版移除,加号行表示新版加入。文件头也会出现加减号,不应把它们当作正文改动。
三、让 AI 解释改动,而不是重写来源
依据差异报告和对应原文,整理变更表。
字段:位置、旧内容、新内容、变化类型、可能影响、待确认问题。
变化类型区分:措辞、数值、条件、功能、删除内容。
只有原文明确说明的行为才写成确定变化;影响推测明确标记为推测。
不要把重排段落自动当成新增功能,不忽略被删除的限制。
先处理命令、版本、数字和否定词,再处理语言风格变化。同一个句子里可能同时有多种变化,应拆开解释,避免“整体优化”这种无法核查的概括。
四、建立确认表
| 项目 | 本例实际变化 | 不能直接推出的结论 |
|---|---|---|
| 备份时间 | 周日改成周六 | 备份速度变快 |
| 操作限制 | 不得覆盖原始目录 | 新版本自动保护全部数据 |
| 目标范围 | 测试与原始目录需区分 | 可以不做备份 |
新版说明更谨慎,不等于软件新增了保护功能。读者常把文档修改当作产品能力改变,这一步应回到产品更新记录或实际测试确认。
五、处理长文和不同格式
先按章节比较,保留章节名与页码映射。表格转文本后可能发生换行变化,导致大量噪声;用原表再次核对数值和单位。不要为了减少差异,把所有空白和标点无条件删除,那可能抹掉命令中的重要变化。
如果只想比较内容,不比较排版,可另做一份规范化副本,但保留原版差异供回查。两种报告用途不同,不要混在一起声称完全一致。
六、常见问题与排错
只改了换行,为什么差异很多?
行级比较会把换行结构视为变化。先确认是否只是排版,再按段落或小节比对,不让 AI 凭大量差异推断重大更新。
两份报告说没有差异,就代表文件完全一样吗?
本文比较的是解码后的文本,并对最后换行做了处理,不是逐字节文件校验。二进制一致应另做哈希比较。
AI 给出了原文没有的升级收益怎么办?
要求每项影响对应具体变更位置,无法支持的内容降为待确认或删除。
工具依据见 Python difflib 文档。翻译资料可结合术语与条件核对,工作迁移可用项目交接模板。