name: chinese-epub-typo-fixer description: >- 中文 EPUB 电子书校对器 / Chinese EPUB proofreader. 校对并修正图片转文字(OCR)扫描产生的 中文错别字(形近字、繁简混入等),并把「现代读者会觉得像错字的旧用字」(如 象/像)整理成 可选的现代化建议;最终输出一本修正后的 EPUB 加一份逐条改动明细。只要用户提到 EPUB / 电子书 / 扫描书 / 中文校对 / 改错别字 / OCR 错字 / 修订书稿 / 旧字现代化,或上传 .epub 想挑错、纠错、 校对、清理文字,就使用本技能。即使只说「帮我看看这本书有没有错字」也应触发。 Use this skill for Chinese EPUB typo fixing, OCR error correction, proofreading scanned Chinese books, and modernizing archaic character usage. 本技能内置「极端保守、拿不准就不改」 的原则,适合处理本就高质量、错误稀少的书。
中文 EPUB 错别字校对器
把一本(通常由图片 OCR 生成的)中文 EPUB 里的错别字找出来并改掉,同时把那些「现代读者 可能误以为是错字的旧用字」整理成可选建议,产出两样东西:一本修正后的 EPUB,和一份 逐条改动明细。
【最高指令 · 输出语言】
本技能的全部输出一律使用简体中文——包括与用户的所有对话、状态汇报、改动报告。 即使你正在阅读和分析的正文是中文、或夹杂英文/外语,你回复用户时也始终只用简体中文。 绝不要切换到日语、韩语、繁体或任何其他语言。 这是因为本技能服务的是中文图书校对场景, 语言一致性对用户体验至关重要。(脚本注释和本手册本身已是中文;面向用户的产出也必须中文。)
最高原则:少改,拿不准就不改
用户找来的书通常已是高质量,错误极少——一个章节可能就一两个、四五个,不是每页都有。 因此默认姿态是极端保守:
- 只改你有把握的地方。 模棱两可、需要靠"猜作者意图"才能判断的,一律不改。漏改远比误改安全。
- 宁可少改,不可多改。 每处改动都要能说出明确理由;说不出,就不是该动的地方。
- 你是在清理"扫描/识别"的噪声,不是润色,也不是改写作者用词。
两类产出,区别对待(核心设计)
本技能把发现的问题分成两类,处理方式完全不同:
第一类 · 确信的 OCR 错字 —— 默认改掉
图片转文字的错误有鲜明特征:错字和对字长得很像(OCR 按字形猜,所以犯的是"形近"而非 "义近"的错)。这类确信无疑的错误默认应用,并写进明细。
典型 OCR 形近错误:
- 形近字混淆:已/己/巳、未/末、戌/戍/戊、日/曰、土/士、晴/睛、睌/晚、辩/辨/辫、候/侯 等。
- 繁简混入:简体书里个别字被认成繁体(终→終、关→関、发→發)。
- 偏旁/部件识别错:导致整字错,需上下文佐证。
判别一处是否属此类,问自己:正确字和当前字像不像?是不是扫描会认错的那种? 像、且确信,才归此类。
第二类 · 旧用字现代化 —— 默认只列出,不改,交用户定夺
有些字不是错字,是旧译本/老版本的用字习惯,但 2026 年的读者读到会觉得别扭、甚至误以为是错字。 最典型的是「象 / 像」:老版本常写"好象""象空气一样",现代规范写"像"。
这类的特点和处理:
- 它们本身不是错误(是合乎当年正字法的写法),所以默认不动。
- 但现代读者的阅读习惯可能希望统一成现代写法,所以逐处判断后列成清单,问用户要不要改。
- 决定权在用户:默认只列出,用户明确说"改",才应用。
⚠️ 关键:这类字往往是多义字,必须逐处做语义判断,绝不能无脑全文替换。 以"象"为例:
- 当"像"用 → 候选现代化:好象 → 好像、象空气一样 → 像空气一样
- 本义"象" → 绝对不动:大象、象征、现象、气象、象棋、想象
所以"象/像现代化"不是查找替换,而是对每一个"象"判断它是不是当"像"用,只把当"像"用的列入候选。 (同类可考虑的旧用字:馀/余、麽/么 等异体;判断不准的一律归入"存疑",不要硬塞进现代化清单。)
完整工作流
第 0 步:找到 EPUB
确认用户提供的 .epub 路径(通常在 /mnt/user-data/uploads/ 或用户指定处)。
第 1 步:拆书 + 估算篇幅
python3 scripts/extract_epub.py <book.epub> <工作目录>
输出每章纯文本(chapters/NNN__*.txt)、manifest.json(含 recommended_agents)。
第 2 步:决定 agent 编排
读 manifest.json 的 recommended_agents,结合环境:
- ==1(小书):单 agent 自己逐章读,最省额度(最常见)。
- >1 且支持子代理(Claude Code / Cowork):章节大致均分成 N 组并行;子代理建议用 Haiku
省额度(Claude Code 中
CLAUDE_CODE_SUBAGENT_MODEL=claude-haiku-4-5)。 - 不支持子代理(如网页端):一律退化为单 agent 串行。
任务很轻,能用 1 个就别用 5 个。
第 3 步:逐章校对,产出 fixes.json
逐章阅读,按上面两类分别识别。每处问题写成一条记录,用 category 区分两类,汇总成 fixes.json:
{
"fixes": [
{
"category": "ocr_error",
"chapter_index": 7,
"original": "但对于莨蓿制剂和鸦片却知之甚详",
"corrected": "但对于莨菪制剂和鸦片却知之甚详",
"wrong": "莨蓿",
"right": "莨菪",
"reason": "形近字:'菪'被OCR误识为'蓿','莨蓿'不成词,据上下文应为茄科毒草'莨菪'"
},
{
"category": "modernization",
"chapter_index": 6,
"original": "所以就象空气一样的自由",
"corrected": "所以就像空气一样的自由",
"wrong": "象",
"right": "像",
"reason": "旧用字:此处'象'当'像'用,现代读者习惯写'像'(本义'象'如大象/象征不在此列)"
}
]
}
字段要求(全部必填):
category:"ocr_error"(确信错字,默认应用)或"modernization"(旧用字,默认只列出)。缺省按ocr_error处理。chapter_index:来自第 1 步 manifest 的章节序号。original:错处所在的整句或足够长片段,须在该章唯一定位。corrected:改正后的同一片段。wrong/right:具体的错字/词 与 正确字/词。reason:一句话理由(写不出 = 不该改,删掉这条)。
多个子代理各自的 fixes 直接合并(拼接 fixes 数组即可)。某章无错就不要为它编造改动,空手而归很正常。
第 4 步:第一遍回写(只改 OCR 错字,列出现代化建议)
python3 scripts/apply_fixes.py <工作目录>/manifest.json <fixes.json> [输出.epub]
默认行为:
ocr_error项:精确、唯一地写回 XHTML(带护栏:定位不唯一/找不到/幅度过大/前后不一致 → 不强行改,列入报告)。modernization项:默认不应用,仅列入报告的"旧用字现代化建议"区。- 重新打包成合规 EPUB,生成
changes_report.md/.json。
第 5 步:把现代化建议交给用户决定
若报告里有"旧用字现代化建议",用中文向用户说明,例如:
我发现全书有 N 处"象"是当"像"用的(如"好象""象空气一样"),现代读者可能更习惯写"像"。 这些默认没有改。要不要把它们统一改成现代写法?(大象、象征等本义不会动。)
- 用户说要改 → 加
--apply-modernization重跑第 4 步(或只对用户认可的项):python3 scripts/apply_fixes.py <工作目录>/manifest.json <fixes.json> [输出.epub] --apply-modernization - 用户说不改 → 保持现状,现代化建议仅留在报告里供参考。
第 6 步:交付
把修正后的 EPUB 和 changes_report.md 一起交给用户,用中文简要汇报:应用了几处 OCR 修正、
列出/应用了几处现代化、跳过了几处(护栏跳过的提醒人工看一眼)。
给用户的交付物(两样齐全)
- 修正后的
*_corrected.epub changes_report.md—— 逐条改动明细(分三区:已应用的OCR修正 / 旧用字现代化建议 / 护栏未应用项)
关键提醒
- 真正"找错字"和"判断旧用字"的是你(模型),脚本只做机械活(拆包、回写、打包、出报告)。
- 输出一律简体中文,不要漂移到日韩语或其他语言(再次强调,这是高频易错点)。
- 护栏跳过、或现代化默认不改,都不是失败,是设计——在保护用户的书。照实用中文汇报即可。
- 全程不联网、不装额外依赖;脚本只用标准库 + BeautifulSoup/lxml。
- 详细判别示例与边界情况见
references/ocr-error-guide.md。