中文错别字扫描工具实测:开源全灭,LLM 是正解
给 860 篇博客文章做全量错别字扫描时,实测了三类方案:pycorrector+kenlm(统计模型)、pycorrector+MacBERT(深度模型)、DeepSeek API 直扫。结论明确:开源纠错工具为输入法/OCR 场景设计,对博客文本误报率极高;LLM 是唯一靠谱的路线,误报率 <10% 且能抓语义级错误。
背景
博客 860 篇(中文散文 + 技术文混杂,人名/书名/英文术语多),想找一个现成的中文错别字修复工具批量扫描。需求:低误报、能处理中英混杂、能批量跑。
实测结果
pycorrector + kenlm(2019 统计模型)
- 部署:需要编译 kenlm,Python 3.13 编译失败(
_PyGC_FINALIZED等 C API 被移除),换 3.11 解决 - 首次运行下载 2.9GB 中文语言模型
- 结果:10 篇样本命中 3 篇,7 处命中全是假阳性(微信→威信、人名全报错)
- 词表是 2019 年的,连「微信」都不认识
pycorrector + MacBERT(macbert4csc-base-chinese)
- 400MB 模型,从 HF 下载(国内用 hf-mirror 或走代理)
- 结果:基础错字(因该→应该)能抓,但博客真实文本误报率 80%+
- 假阳性:网络→路、技术栈→户、阿尔吉侬→依、业余→馀
- 阈值 0.7→0.95 几乎无改善(误报置信度极高)
- 训练语料是输入法/OCR 错误,词表里没有当代词汇
DeepSeek API 直扫
- 8 workers 并发,860 篇 18.8 分钟跑完,成本几块钱
- 190/860 篇有命中,322 处,抽检误报率 <10%
- 能抓语义级错误(自立更生→自力更生、搏弈→博弈、美名其曰→美其名曰)
- 能抓系统性高频错字(登陆×10、公匙×10、密匙×5)
批量替换的坑
「想往→向往」规则误伤 4 处:不想往家里打电话、想往上钻营、想往哪里走、想往深刻了说——全是「想往X」动词结构,不是「向往」。全量回退重跑,仅保留人工确认的 1 处(音乐剧的想往所在)。
教训:批量替换规则必须人工复核上下文,尤其是同音词(想往/向往、翅果/吃过——翅果还是植物学术语)。确定性强的规则(登陆→登录、公匙→公钥)可以全量,歧义规则只能精确替换。
结论
- 开源中文纠错工具(pycorrector 系)服务输入法/OCR 场景,不适合博客校对
- LLM 校对质量碾压,成本极低(860 篇几块钱)
- 批量替换前必须人工抽检,同音词规则最危险
- deepseek-v4-flash 是 reasoning 模型,max_tokens 设太小会返回空 content(思考链截断),不要设 max_tokens 或设大
参考
shibing624/pycorrector - GitHub
相关:use-prettier