Install
openclaw skills install @c0s1n3/boardgame-rulebook-zh将英文桌游 PDF 规则书汉化并保持原版图文位置。内置桌游术语表、表格/内嵌图标处理和自动 QA。Use when the user asks to translate or localize a board game rulebook PDF into Chinese, 汉化规则书,or when images/tables must stay aligned.
openclaw skills install @c0s1n3/boardgame-rulebook-zh把英文桌游 PDF 规则书翻译成中文,同时不移动、不覆盖原版的插图、棋盘、卡牌图、图标、表格线和装饰。译文按原段落的位置、字号、颜色和栏宽就地写回;表格单元、双栏、页眉页脚和内嵌图标都有专门处理。
它同时解决两个常见问题:
适用
不适用
references/scanned-pdfs.md。pymupdf,测试于 1.26.5)python -m pip install -r requirements.txt
# 1. 提取文字段、生成页面预览、术语命中和译文模板
python scripts/extract.py rulebook.pdf -o work
# 2. 阅读 work/source.md,填写 work/translations.tsv
# 同时检查/补充 work/termbase.tsv 与 work/glossary_hits.md
# 3. 渲染 + 自动 QA
python scripts/render.py rulebook.pdf -w work -o out
# 4. 看 out/qa/report.md 和 out/qa/pages/page_*.png
# 修译文或写 work/layout_overrides.json,重跑第 3 步
最终交付:out/rulebook_zh.pdf、out/qa/report.md、work/termbase.tsv。
QA 有 error 时不要交付。 有 warning 时逐条复核;termbase-mismatch 是 info,只作参考。
python scripts/extract.py rulebook.pdf -o work
输出:
| 文件 | 用途 |
|---|---|
work/source.md | 按页/段列出原文、字号、对齐、bbox、表格/内嵌图标标记;带原页预览链接 |
work/segments.json | 机器可读的分段数据(渲染用) |
work/translations.tsv | 译文模板:id<TAB>中文;= 表示保留原文 |
work/termbase.tsv | 项目术语库:source<TAB>zh<TAB>category<TAB>note |
work/glossary_hits.md | 本 PDF 命中的术语表条目、建议译法、页码 |
work/original/page_*.png | 原页预览 |
work/manifest.json | 页数、字体、位图/矢量图摘要、警告 |
检查 source.md 顶部警告:
references/scanned-pdfs.md。只提取部分页做试译:--pages 1-3,5。
重新提取时默认要求 --force,并保留已有 translations.tsv / termbase.tsv;如果 id 变化,用 --reset-translations 重新生成。
先读 references/glossary.csv(推荐译法、avoid、wrong)和 references/glossary-notes.md(易混词解释)。
work/termbase.tsv 的规则:
termbase-mismatch 是 info,不是错误。常用官方参考:references/official-titles.md。游戏名不要直译;没有把握就保留英文名。
work/translations.tsv 是唯一的译文入口:
=:保留原文(URL、版权行、纯页码、已经中文的段落)。--allow-missing 仅用于预览)。2d6)、数字。翻译时同时读 source.md 和原页预览;不要只看文字,因为图标、表格、栏宽会决定译文长度。分段翻译建议每次 20–40 段,保持术语库一致;长书可按页分批,但不要在不同批次里换译名。
文风、句式、量词、标点、卡牌名规则见 references/style.md。核心要求:
may=可以,must=必须,cannot=不能,up to=至多,at least=至少,instead=改为。layout_overrides.json 调整排版框。术语/文风参考:
references/glossary.csv — 机器可读术语表references/glossary-notes.md — 易混词深解释references/style.md — 文风与句式references/official-titles.md — 常见游戏官方中文名python scripts/render.py rulebook.pdf -w work -o out
输出:
out/rulebook_zh.pdfout/qa/report.md(中文)、report.jsonout/qa/pages/page_0001.png(左原文/右译文,逐页目检)out/qa/contact_sheet.png渲染机制(简述,详见 references/layout-and-qa.md):
fill=False、images=NONE、graphics=NONE:擦字不擦图。missing-glyphs,可用 --font / --bold-font 指定。常用参数:
--font "C:/Windows/Fonts/simsun.ttc" # 衬线/羊皮纸风格规则书
--bold-font "C:/Windows/Fonts/simsun.ttc"
--allow-missing # 只做部分预览,不算最终交付
--no-previews # 不生成预览(不建议用于最终交付)
--overrides work/layout_overrides.json # 手动排版修正
自动 QA 通过不等于视觉通过。逐页打开 out/qa/pages/*.png,重点看:
。,、;:!? 出现在行首)。修正优先级:
work/layout_overrides.json 扩大/移动安全排版框。layout_overrides.json 示例(坐标是 PDF point,原点左上):
{
"p003_s008": {
"box": [28, 423, 292, 540],
"font_size": 10.0,
"align": "left",
"note": "加宽 10pt,避免逗号落到行首"
},
"p003_s034": {
"box": [297.64, 340.6, 545.0, 430.0],
"note": "略收窄,避免句号落到行首"
}
}
表格单元会被强制夹在 cell 内;overrides 不能越过表格边框。
out/qa/report.md 中:
line-start-punctuation 通常改译文或用 override 解决;small-font 要确认可读性。重点错误:
| code | 含义 | 处理 |
|---|---|---|
images-changed / vector-art-changed | 位图/矢量图位置或内容变了 | 停止交付;检查是否扫描页/特殊 PDF |
geometry-changed | 页面尺寸/旋转变了 | 停止;检查输入/输出 |
overflow / table-cell-overflow | 译文放不下/越出表格 | 精简译文或 override |
art-covered / vector-covered | 译文压住图标/插图 | 精简/override,绝不能忽略 |
text-overlap / text-overlap-source | 译文互相压/压到未翻译原文 | 精简/override |
source-residue | 原英文没擦干净 | 检查文字层/扫描页;重新渲染 |
text-not-found | 输出里找不到完整译文 | 多为缺字/字体问题;换字体或改译文 |
missing-glyphs | 字体缺字(emoji、生僻字) | 换字体或删掉非必要符号 |
missing-translation | 漏译 | 补 translations.tsv |
glossary-wrong | 命中明确错译 | 按 references/glossary.csv 改 |
line-start-punctuation | 中文标点跑到行首 | 改译文或 override |
scanned-page | 疑似扫描页 | 见 references/scanned-pdfs.md |
完整清单和逐条修法:references/qa-checklist.md。
如果 extract.py 报“没有提取到任何文字段”,或 source.md 标记扫描页:
不要直接跑渲染。扫描页上的英文是像素,擦除会破坏原图;把中文盖上去会造成图文重叠。
可选方案:
详见 references/scanned-pdfs.md。
python examples/selftest.py --negative
会生成一份合成样例规则书(双栏、表格、羊皮纸/插图、内嵌位图与矢量图标),跑完整流程,并验证:
最后打印 SELFTEST OK。
对用户说明:
不要把受版权保护的原始 PDF 或整页译文提交到公开仓库;本仓库的 demo 是合成样例。
SKILL.md
scripts/
extract.py # PDF → 分段/术语命中/译文模板
render.py # 译文 → 原位 PDF + QA
pdf_common.py # 字体、几何、术语、排版工具
references/
glossary.csv # 桌游术语表(推荐/avoid/wrong)
glossary-notes.md
style.md
layout-and-qa.md
qa-checklist.md
scanned-pdfs.md
official-titles.md
examples/
make_sample.py # 合成样例规则书
selftest.py # 端到端自测
demo_page1.png # 自测生成的 demo
MIT。仅用于你有权翻译的文档。