Skip to content

721806280/doc-diff-vision

Repository files navigation

📄 DocDiff Pro

面向审阅和校对场景的 .docx 文档比对工具。你可以在浏览器中上传基准文档与修订文档,快速查看新增、删除和修改位置。

项目基于 Vue 3、Vite、mammoth 和 diff-match-patch 构建,文档解析、文本归一化、差异计算和双栏高亮均在本地浏览器内完成。

✨ 主要能力

  • 📥 双栏上传基准文档与修订文档,直接进行对照审阅。
  • 🔍 支持语义级、词组级、字符级三种比对粒度,兼顾快速审阅与精细校对。
  • 🧭 支持差异导航,可在上一处、下一处差异之间快速跳转。
  • 🔗 支持双视图同步滚动,长文档对照时更容易保持上下文。
  • 🧹 支持忽略空白、统一全半角、忽略大小写,减少格式差异带来的干扰。
  • 🧩 保留原文档结构展示,并将归一化后的差异映射回原始 DOM 文本位置。

🧹 文本归一化

忽略空白

用于忽略常见版式差异,减少排版、转换或文档结构变化带来的干扰。

当前会处理的典型情况包括:

  • 段落或列表项合并造成的多余换行或空白。
  • 条款、列表编号后的版式空白,例如 1.3.1. 访问
  • 中文、英文、数字混排中的空白,例如 2025 年A 座8 号
  • 数字内部空白,例如电话、日期、编号中的 010 59618935
  • 邮箱、域名、URL 中的局部空白,例如 Yuki. Sun@example. com
  • 中文上下文里的字段标点空白,例如 邮箱: name@example.com邮箱:name@example.com

普通英文词间空格不会默认忽略,例如 Wolters Kluwer,以避免将英文正文中的真实差异误判为格式差异。

统一全半角

用于统一全角 ASCII 与半角 ASCII 的差异,包括全角字母、数字和常见符号。

⚙️ 使用建议

  • 📝 普通文档版本比对:按需开启 忽略空白统一全半角
  • 🎯 严格逐字符校对:选择字符级颗粒度,并关闭不需要的归一化开关。
  • 🔎 转换后文档比对:建议开启 忽略空白,减少格式转换带来的空白差异。

🛠️ 开发命令

npm install
npm run dev

常用检查:

npm run typecheck
npm run build

🔧 技术说明

  • 📦 .docx 解析由 mammoth 完成。
  • 🧮 文本比对由 diff-match-patch 完成。
  • 🧱 文本映射、空白折叠和归一化规则集中在 src/utils/documentText.ts
  • 🎯 差异标记通过原始文本节点映射回 DOM,避免归一化逻辑散落到渲染层。

About

基于 Vue 3、Vite 和高级字符级拓扑算法构建的企业级高能文档比对系统。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors