BabelDOC 完整指南:3步完成保留格式PDF翻译
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
BabelDOC 是一款开源的 PDF 翻译引擎,专为翻译时保留原始版式而设计。它支持 160 种语言编码,英文→中文方向最稳定,输出 3 种模式,公式、图表原位保留。
场景代入:80 页的英文手册
你从供应商那里拿到一份 80 页的英文技术手册,自己读完还好,但团队要求下周交一份中文版。你把文字复制进翻译工具,译回之后两栏排版散了、表格里的公式变成乱码、图表位置全跑偏,重排一下就要一天。你要的不是又一份机翻文本,而是能在原排版上直接完成的翻译,BabelDOC 做的就是这件事。
工作原理速览:BabelDOC 如何工作
它没有走"抽文本→重排版"的路线,整个过程分三步完成:
- 解析:逐页解析 PDF,把文本、字体、公式符号和版式信息提取成结构化中间表示,解析逻辑主要在
babeldoc/format/pdf/。 - 翻译:按段落送入 LLM(大语言模型,即大模型翻译服务)翻译,同时从文档中自动抽取高频术语,保证同一个词全书译法一致,翻译服务适配在
babeldoc/translator/。 - 重建:译文按原栏位、字体、段落位置重新排版(排版指把文字重新排进版面的过程),生成新 PDF,公式和图表不动。
三步都跑在你本地,你只需要准备一个翻译接口的 key。不用懂每一步的内部实现,知道这个分工就够判断它是否适合你的文档了。
BabelDOC PDF翻译快速上手
先安装。uv 是一个 Python 包管理的命令行工具,没有的话先装它:
uv tool install --python 3.12 BabelDOC babeldoc --help执行后你会看到终端里列出全部参数,不报错就说明环境就绪。
然后给它一个文件翻译。默认源语言英文、目标语言中文,任何兼容 OpenAI 格式的接口都能用,改 base-url 和 key 即可:
babeldoc --openai \ --openai-model "gpt-4o-mini" \ --openai-api-key "your-api-key" \ --files paper.pdf执行后你会看到终端里滚动进度条,结束后输出目录多出两个 PDF:双语并排版(原文与译文左右同页)和纯中文版。文件路径建议传绝对路径;重复使用的参数还可以写进 TOML 配置文件,用--config加载。
功能亮点
下面这两个能力,直接决定产出能不能拿来就用。
公式识别与排版保留
BabelDOC 按字体名或字符模式识别公式文本,翻译时整体保护,再原样排回原位:
babeldoc --formular-font-pattern "STIXGeneral" \ --formular-char-pattern "[0-9+=^]" \ --files paper.pdf效果是公式符号不再被拆散、串行,输出里和原文一模一样;模式覆盖不全时,可以只用字体名缩小匹配范围。
双语对照输出模式
默认输出就是双语对照文档,用--watermark-output-mode决定成品的形态:
| 参数值 | 输出效果 |
|---|---|
| watermarked(默认) | 译文页带 BabelDOC 水印 |
| no_watermark | 不加水印 |
| both | 同时输出带水印与不带水印两版 |
翻到双语版你会发现,每一页的栏位结构、插图位置和公式都和原文对得上,左边读原文、右边看中文,逐段比对很方便。
进阶用法:术语表与大文档处理
术语表批量导入
- 自动术语提取默认开启
--save-auto-extracted-glossary导出提取结果--glossary-files导入自己的术语 CSV
大文档分块处理
--max-pages-per-part按页拆分分块翻译--pool-max-workers调高并行度提升速度- 确认非扫描件时加
--skip-scanned-detection提速
导入术语表后,系统会在文本里自动匹配词条并喂给翻译提示词,同一个词不会在第 3 页和第 57 页译成两个名字。术语表 CSV 共三列,前 3 行长这样:
source,target,tgt_lng API,应用程序编程接口,zh-CN Neural Network,神经网络,zh-CN适合谁用
如果你经常要读英文论文或规范标准,可以用它快速拿到一份双语对照的中文版,公式和表格都不缺,省掉重排。
如果你的团队要维护中英双语文档,可以用它批量产出术语统一、格式一致的双语成品,新文档来了直接加进队列。
如果你想在自有程序里内嵌文档翻译能力,可以用它作为可嵌入的翻译引擎,项目接口就是按嵌入场景优先设计的。
避坑提醒
- 扫描版 PDF 先用
--ocr-workaround,目前只适配白底黑字 - 作者与参考文献区可能译后被合并成一段,属于已知问题
- 线条与首字下沉暂不支持,超大页面可能被跳过
- 大文档建议用
--max-pages-per-part分块,降低内存压力 - 目前仅支持 OpenAI 兼容接口,英文→中文是测得最透的方向
BabelDOC 的价值一句话能说清:解析、翻译、按原版式重建,三步让译文直接可用,不再重排。下一步可以git clone https://gitcode.com/GitHub_Trending/ba/BabelDOC克隆仓库,在目录里跑uv run babeldoc --help过一遍全部参数,完整参数说明和配置示例见 README.md,各阶段实现原理见 docs/ImplementationDetails/。
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考