BabelDOC:开源 PDF 格式保留翻译工具,3 步跑通
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
拿到一份英文 PDF,想让它变成中文,却公式原样、版面不乱、表格不碎?常规做法是先转 Word,结果公式散架、脚注错位,返工成本比翻译还高。BabelDOC 干的就是这件事:把 PDF 结构完整解析成中间表示,翻译后再按原布局重排回去,输出双语对照和纯译文两个版本。
⚡ 一句话说清 BabelDOC 是什么
BabelDOC 是一个 PDF 文档翻译库 + 命令行工具:解析原文结构、调用 LLM 翻译文本、按原排版渲染出新 PDF。目标用户是做中英文档互译的工程师和科研人员,尤其是论文和技术手册这类版面复杂的场景。
📊 核心能力速览
| 能力 | 说明 | 典型场景 |
|---|---|---|
| 双语对照输出 | 默认生成对照版 + 纯译文版 | 审校、投稿 |
| 公式与表格保留 | 非正文内容原样重排 | 学术论文 |
| 术语一致性 | CSV 术语表 + 自动抽词 | 技术文档 |
| 大文档分块 | 按页数切块翻译再合并 | 百页以上 |
| 翻译缓存 | 相同段落直接复用结果 | 批量复译 |
🔧 上手路径:安装到出结果
① 装。推荐uv tool install --python 3.12 BabelDOC;也可以从源码跑(需 Python 3.10–3.13):
git clone https://gitcode.com/GitHub_Trending/ba/BabelDOC cd BabelDOC && uv run babeldoc --help② 跑。它接任意 OpenAI 兼容接口,配好--openai-base-url和--openai-api-key即可,源语言--lang-in(默认 en)、目标语言--lang-out(默认 zh):
babeldoc --files paper.pdf --lang-out zh \ --openai --openai-model gpt-4o-mini \ --openai-base-url "https://api.openai.com/v1" \ --openai-api-key "你的key"③ 收。跑完在当前目录(或--output指定目录)拿到双语对照 PDF 和单语译文 PDF;翻译过程有缓存,重复段落直接复用,加--ignore-cache才强制重翻。
🧪 三个真实场景怎么打
学术论文:公式和术语都不能错
痛点是公式区一翻就乱、专业名词前后两个译法。BabelDOC 把公式字符识别出来单独保护,不参与重排,术语则走自动抽取 + 术语表双保险。关键参数:--glossary-files指定术语 CSV,术语表会注入 LLM 提示词强制使用。
技术文档:术语统一靠术语表
痛点是团队术语各译各的。准备一份三列 CSV——source,target,tgt_lng,仓库里 demo_glossary.csv 可直接参考:
babeldoc --files doc.pdf --glossary-files glossary.csv命中的术语会约束模型输出,不命中的段落不受影响。
百页文档:分块是刚需
痛点是一次性翻译内存和上下文都扛不住。用--max-pages-per-part按页数切块,跑完自动合并回一个 PDF;确认文档不是扫描件时,顺手加--skip-scanned-detection省掉扫描检测环节。
🛠️ 进阶调优:四个常用旋钮
- 提速:
--qps 10 --pool-max-workers 8,把每秒请求数和内部工作线程调上去,适合大批量翻译。 - 提示词微调:
--custom-system-prompt "/no_think You are a professional, authentic machine translation engine.",主要用来控制 LLM 输出风格。 - 公式识别不准:用
--formular-font-pattern按字体名把公式区标记出来,识别更准。 - 工作目录:
--working-dir指定临时目录;排障时加--debug,中间结果会导出到~/.cache/babeldoc/working。
🧭 排障速查
| 现象 | 原因 | 解法 |
|---|---|---|
| 速度慢 | 文档大、请求串行 | --max-pages-per-part分块,调大--qps |
| 公式错位 | 公式字体没被识别 | --formular-font-pattern指定字体名 |
| 内存溢出 | 单次处理页数过多 | 减小--max-pages-per-part |
| 个别阅读器格式错乱 | PDF 结构兼容问题 | 加--enhance-compatibility |
已知局限(作者列在 Known Issues):线条、首字下沉不支持,超大页面会跳过,具体以官方仓库为准。
📦 项目内参
- 版面分析:babeldoc/docvision/
- 中间表示与翻译管线:babeldoc/format/pdf/document_il/
- 内置 PDF 解析库:babeldoc/pdfminer/
- 渲染与排版:babeldoc/format/pdf/document_il/backend/
- 翻译服务与缓存:babeldoc/translator/
- 实现细节文档:docs/ImplementationDetails/
- 支持的语言:docs/supported_languages.md
- IL 示例配置:examples/
✅ 下一步
装上 BabelDOC 先把手头那份 PDF 翻一遍,版面不满意就--debug看一眼中间结果。有 reproducible 的 PDF 可以直接提 Issue;路线图里跨栏跨页段落和表格翻译还在做,值得 Star 后跟着进展走。
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考