Skip to content
z1y1nPublic

About

完全本地运行的中文文档查错与批量修复工具,双击一个 HTML 文件就能用,不联网、文档不上传

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

文档体检 doccheck

一个完全本地运行的中文文档查错与批量修复工具。双击一个 HTML 文件就能用——不装软件、不联网、文档不上传。

中文文档里反复出现几类不起眼的小毛病:全角字母(Excel)、重复标点(。。)、中英文之间漏空格(用QGIS处理)。逐份人工检查费时又容易漏;而在线的校对工具都要先把文档传到别人的服务器上——简历、合同、内部材料恰恰是最不方便外传的那一类。

所以这个工具做成了一个 HTML 文件:拖进 .docx 或 .md,它列出所有问题并逐条给出改法,全程在你自己的浏览器里跑完。

文档体检界面:拖入文档后,按规则分组列出问题,逐条给出改前改后,底部显示将自动修改多少处、留多少处给用户自己看

截图中用的是自检样本,工具自己扫出来的 34 处问题。

怎么用

  1. 下载 文档体检.html
  2. 双击打开(Chrome / Edge 都可以)
  3. 把 .docx 或 .md 拖进窗口
  4. 逐条勾选要改的,点导出

导出的是一份新文件,你原来的文档一个字节都不会被动。

它查什么

6 条规则,按「改错了风险有多大」分三档:

🟢 可安全自动修(默认勾上)

规则 说明
全角字母 / 数字 Excel → Excel。全角字母数字只用于特殊排版,混在正文里会忽宽忽窄
重复的中文标点 。。 → 。。…… 和 —— 是正确写法,不会被误报

🟡 能修,但要你点头(默认不勾)

规则 说明
中文里混用半角标点 方案可行,但是 → 方案可行,但是。已排除小数、版本号、英文缩写和网址邮箱
中文与英文之间缺空格 用QGIS处理 → 用 QGIS 处理。全角标点两侧自带间距,所以 :PRD、(QGIS) 不会被画蛇添足

🔴 只报不改(不给勾选框,默认折叠)

规则 说明
全角空格 第一部分 小标题 这种分隔、段首缩进,都是有意的
连续多个空格 经常是刻意用来对齐的,删掉排版会塌

最后这两条只指出位置,不提供自动修复。机器分不清「刻意的排版」和「手滑」,判断权还给人。

这两条规则原本是自动修的。拿真实文档一试:「第X部分 标题」的分隔符全被误删;加上过滤条件后又误报列表缩进,再调还是分不清。 规则调两轮还调不准,就不该继续调——降级成只报不改,反而更有用。

一条贯穿始终的原则:修改权在用户手上

工具只负责定位,改哪些由用户勾选。导出前还会自检一遍——字数变化、段落数、加粗数逐项核对,对不上就拒绝导出。

实测

在 37 份真实文档上跑过,一共查出 469 处问题。分布很有意思:

  • 439 处(94%)集中在简历类文档
  • 其余文档几乎干净:205 段的问答手册、177 段的英文报告都是 0 处

这说明问题不在规则,而在工具不知道自己在看什么文档——简历里大量的 | 分隔符和 ▍ 装饰性空格是有意为之的排版,不是错误。

据此把 🔴「只能人工判断」那一组默认折叠,简历的报告从 23 行降到 2 行。规则一条没改。

另外顺手做了个东西:node test/make-sample.js 会生成一份自检样本,每一节埋一类问题、再埋一条反例(写正确的、不该被报的),用来核对工具查得全不全、有没有乱报。目前这份样本应该报出 34 处。

技术实现

  • 纯静态:没有框架、没有构建工具、没有后端。src/ 四个文件加起来 46 KB,打包出来一个 141 KB 的 HTML
  • 直接改 XML,不引入解析器:.docx 本质是个 zip,正文在 word/document.xml。工具用字符串偏移量直接定位和改写——用 XML 解析器会重排属性和命名空间,等你再打包回去,Word 可能就不认了
  • 引擎与界面彻底分离:engine.js 不碰 DOM(所以能在 Node 里跑测试),ui.js 不碰文档逻辑
  • 踩过的一个坑:Word 会把一句话拆成好几个 <w:t>,反过来同一个 <w:t> 里也可能藏着好几处要改。必须按节点归拢再统一重写,否则后改的会覆盖先改的——而且长度可能刚好抵消,靠长度校验查不出来
  • 规则不级联:所有规则都跑在原文上。所以一次修改可能制造出新的问题(用Excel 改成 用Excel 之后才出现中英边界),导出时会如实提示

开发

npm install

node build.js             # 打包成 文档体检.html(单文件,零依赖)
npm test                  # 163 项断言,四套一起跑

node test/node.js         # 引擎:一个 <w:t> 里多处修复
node test/md.js           # Markdown 路径:代码块、链接、邮箱一个字都不许动
node test/ui.js           # 界面:勾选、合并、导出、报告渲染
node test/ship.js         # 打包产物:单文件版和源码行为必须一致

node test/make-sample.js  # 生成自检样本
node test/run.js <文档.docx> [标签]   # 对任意文档跑一遍,导出修复版和 Markdown 报告
node test/real.js <文档.docx>         # 看真实文档在界面里到底会显示几行

test/*.ps1 是三个 Windows 专用脚本,用真 Word 打开导出件核对页数和排版——「zip 能解开」和「Word 愿意打开」是两回事,这一步别的测试证明不了。

关于这个项目

需求定义、功能边界、检查规则、测试验收与迭代反馈由 @z1y1n 完成;代码由 AI 辅助实现。

这是一个自用工具,也是作者产品作品集的一部分:从真实痛点出发,把需求落成规则,再用真实文档验证——包括承认「这条规则机器判断不了」。

许可

MIT

About

完全本地运行的中文文档查错与批量修复工具,双击一个 HTML 文件就能用,不联网、文档不上传

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages