蜂群式并行 PDF 翻译
将 PDF 文档通过蜂群架构并行翻译,保证质量的同时大幅提升速度。
前置依赖
pdftotext(poppler-utils)— 用于 PDF 文本提取python3— 用于拆分和汇合脚本
检查依赖:
command -v pdftotext || echo "需要安装: apt install poppler-utils"
核心流程
PDF → ① 文本提取 → ② 智能拆分 → ③ N 个翻译 Agent 并行 → ④ 审核 Agent 复核 → ⑤ 修正 → ⑥ 交付
Step 1:文本提取与拆分
1.1 提取文本
mkdir -p .openclaw/tmp
pdftotext -layout <input.pdf> .openclaw/tmp/source.txt
1.2 智能拆分
python3 <skill_dir>/scripts/split_pdf.py .openclaw/tmp/source.txt .openclaw/tmp --parts 6
脚本按以下策略拆分:
- 优先按章节标题拆分(检测 Chapter、第X章、全大写标题等模式)
- 无法识别章节时按等长拆分(每块 ~800 行)
- 输出 part_01.txt, part_02.txt, ...
1.3 确认拆分结果
打印每个部分的前 5 行,确认拆分合理。
Step 2:并行派发翻译子 Agent
为每个部分同时派发一个翻译子 Agent:
for i, part_file in enumerate(part_files):
sessions_spawn(
task=f"翻译指令(见下方模板)+ 读取 {part_file} → 写入 {part_file.replace('.txt', '_zh.md')}",
taskName=f"translate_p{i+1}",
label=f"translate_{i+1}",
mode="run",
runTimeoutSeconds=300
)
翻译指令模板
你是一名专业的 [领域] 翻译专家。请将以下英文文本翻译为中文,要求:
1. 专业术语准确(首次出现时附英文原文,如"梯度下降(Gradient Descent)")
2. 保留原文的章节结构
3. 数学公式保持原样不翻译
4. 代码块保持原样不翻译
5. 翻译流畅自然,避免"翻译腔"
请读取文件 .openclaw/tmp/part_XX.txt,翻译后将结果写入 .openclaw/tmp/part_XX_zh.md。
领域自动适配
根据 PDF 内容自动调整翻译指令中的领域和术语表:
- AI/ML 教材 → 术语表:gradient descent=梯度下降、neural network=神经网络...
- 学术论文 → 要求保留引用格式、图表编号
- 商业报告 → 要求专业且易读
并行规则
- 所有翻译子 Agent 同时派发,不等待
- 每个子 Agent 独立工作,互不依赖
- 使用
sessions_yield等待所有子 Agent 完成
Step 3:派发审核 Agent
所有翻译子 Agent 完成后,派发审核 Agent。审核指令模板见 references/review_template.md。
审核维度(每项 1-10 分):
1. 术语准确性 — 专业术语是否准确、一致
2. 完整性 — 是否有遗漏
3. 语言流畅度 — 中文是否自然
4. 格式规范 — Markdown 格式是否正确
5. 一致性 — 全文术语和风格是否统一
Step 4:汇合与修正
4.1 汇合翻译结果
python3 <skill_dir>/scripts/assemble.py .openclaw/tmp <output.md> --title "翻译文档标题"
4.2 根据审核报告修正
读取 review.md 中的「需修正的问题清单」,逐一修正:
- 🔴 高严重度 → 必须修正
- 🟡 中严重度 → 建议修正
- 🟢 低严重度 → 可选修正
修正后重新汇合。
4.3 更新审核报告
在 review.md 末尾追加「修正记录」,标注每个问题的修正状态。
Step 5:交付
输出两个文件:
- <output.md> — 完整翻译文档
- review.md — 审核报告(含评分和修正记录)
向用户汇报:总分 / 50、各维度评分、修正问题数量。
参数化配置
| 参数 | 默认值 | 说明 |
|---|---|---|
--parts |
自动 | 拆分数量(默认按章节,最多 8 块) |
--lang-in |
en |
源语言 |
--lang-out |
zh-CN |
目标语言 |
--output |
translation.md |
输出文件名 |
--skip-review |
false |
跳过审核步骤 |
注意事项
- 大 PDF(>100 页)建议拆分为 6-8 块,平衡并行度和上下文质量
- 翻译子 Agent 超时默认 300 秒,大块可适当延长
- 审核 Agent 超时默认 600 秒(需读取原文+译文对比)
- 代码块内的注释翻译策略建议在翻译指令中明确(推荐保留英文)
- 若 pdftotext 不可用,可用 Python
pdfplumber或PyPDF2替代