一个完全本地运行的中文文档查错与批量修复工具。双击一个 HTML 文件就能用——不装软件、不联网、文档不上传。
中文文档里反复出现几类不起眼的小毛病:全角字母(Excel)、重复标点(。。)、中英文之间漏空格(用QGIS处理)。逐份人工检查费时又容易漏;而在线的校对工具都要先把文档传到别人的服务器上——简历、合同、内部材料恰恰是最不方便外传的那一类。
所以这个工具做成了一个 HTML 文件:拖进 .docx 或 .md,它列出所有问题并逐条给出改法,全程在你自己的浏览器里跑完。
截图中用的是自检样本,工具自己扫出来的 34 处问题。
- 下载
文档体检.html - 双击打开(Chrome / Edge 都可以)
- 把
.docx或.md拖进窗口 - 逐条勾选要改的,点导出
导出的是一份新文件,你原来的文档一个字节都不会被动。
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 辅助实现。
这是一个自用工具,也是作者产品作品集的一部分:从真实痛点出发,把需求落成规则,再用真实文档验证——包括承认「这条规则机器判断不了」。
