BabelDOC 指南:用 PDF 翻译快速做出双语中英对照
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
BabelDOC 是一个开源 PDF 翻译工具。输入一份英文论文 PDF,它会在保住原排版的前提下,输出一份中英对照的双语 PDF——论文翻译、排版不崩、公式原样保留,一条命令就能跑。
🚀 首次运行:从零到出结果要几步
先准备两样东西:
- uv(一个 Python 包管理工具),官方推荐用它装,安装命令里指定 Python 3.12;
- 一个 OpenAI 兼容的 API key。"OpenAI 兼容"的意思是:任何提供标准聊天接口的模型服务都能填,OpenAI 官方、DeepSeek 或本地部署的 Ollama 都可以。
uv tool install --python 3.12 BabelDOC babeldoc --help能看到参数列表,环境就通了。然后直接跑第一次翻译(路径建议用绝对路径):
babeldoc --files /绝对路径/paper.pdf \ --openai --openai-model "gpt-4o-mini" \ --openai-base-url "https://api.openai.com/v1" \ --openai-api-key "你的key"跑完,当前目录(或--output指定的目录)会多出两个文件:双语文档(原页和译页同页并排,就是你要的中英对照版)和单语文档(纯译文)。首次运行会自动下载字体和版面分析模型,进度慢一些属于正常;断网环境可先用--warmup提前下载并校验资产。
想改源码或跟最新提交,换源码安装:
git clone https://gitcode.com/GitHub_Trending/ba/BabelDOC cd BabelDOC uv run babeldoc --help一句实话:官方 README 把 CLI 定位为调试入口,不承诺技术支持,但对个人翻译论文来说完全够用。
它到底省掉了我哪一步?先讲清原理
先问一句:你现在是怎么翻译论文的?把英文拷进翻译引擎,拿到中文——可公式变成了没意义的占位符,上下标全塌了。接下来才是更耗时的一步:你得手动把译文按原排版重新排一遍,字号、分段、图表位置逐个对齐。这个"人工重排"的开销,往往比读论文本身大得多。
BabelDOC 省掉的就是这一步重排。它的流程一句话能讲完:内置的解析管线先把每页版面拆成段落区、公式区、表格区(代码在 babeldoc/format/pdf/document_il/),模型只翻译其中的纯文本,公式和符号原样不动,最后用原文的字体、字号把译文重排成并排页面。每个阶段的细节,docs/ImplementationDetails/ 按解析、找段落、样式与公式、排版、PDF 生成各写了专篇,想深究可以按图索骥。
📋 日常高频参数速查表:8 个值得背
| 高频参数 | 什么时候用 |
|---|---|
--pages "1,3,5-8" | 先试读前几页,验证质量同时控制费用 |
--files a.pdf --files b.pdf | 一次批量处理多份 PDF |
--lang-in/--lang-out | 换源/目标语言,默认en→zh,其他方向建议先小范围试 |
--no-dual/--no-mono | 只要一种输出格式,省一半生成时间 |
--max-pages-per-part | 长文档按页拆分翻译,跑完自动合并回来 |
--glossary-files terms.csv | 统一专有名词译法,格式参考示例术语表 |
--qps | API 限额紧时调低每秒请求数,默认 4 |
--output | 换输出目录,默认当前目录 |
术语表这个功能值得多说一句:CSV 里source、target两列必填,tgt_lng(该条目标题语言)可选。翻译时一旦命中表内术语,这些词会被强制写进给模型的提示词,专名译法从此稳定。
⚠️ 出问题了,先查这几个高概率故障
扫描件译文叠字,输出鬼画符
现象:译文和扫描字互相盖住,没法看。原因:文件漏过了扫描件检测,译文直接叠在扫描底图上。解法:白底黑字的扫描件加--ocr-workaround,它会在译文下方垫白色底块盖住原文,并强制文字为黑色。
输出的 PDF 某些阅读器打不开或偏色
现象:换个软件打开就崩。原因:部分输出结构与个别阅读器不兼容。解法:加--enhance-compatibility,它等价于--skip-clean --dual-translate-first --disable-rich-text-translate组合;代价是跳过清理后文件体积变大。
长文档中途断了,担心前面白跑
现象:跑到几百页时断线。原因:API 中断或超时。解法:翻译结果有本地缓存,重跑不会重复消耗已完成部分的 API;--ignore-cache才是强制重翻,别习惯性带上。
本地模型连不上
现象:填了本地 Ollama 的地址仍报鉴权错。原因:命令行要求必须填--openai-api-key,本地服务其实不校验。解法:随便填个a就能过。
作者区和参考文献被并成一段
现象:首页作者、末页参考文献粘连成一坨。原因:这是官方 Known Issues 里承认的问题(横线分隔、首字下沉同样暂不支持)。解法:不用怀疑自己操作有误,个别段落粘连可以先忍着,或把可复现的 PDF 提给项目。
🧩 命令行之外:离线部署、配置文件与二次开发
- 📦离线部署:
--generate-offline-assets把字体和模型打进一个资产包,目标机器用--restore-offline-assets恢复。无外网的实验室,先在联网机器打包再分发即可,资产用 SHA3-256 校验完整性。 - ⚙️TOML 配置文件:
--config支持把常用参数写进配置文件(示例见 README.md),不用再手敲长命令。 - 🔌Python API 与二次开发:官方态度是 BabelDOC 的 API 均为内部接口,推荐通过 PDFMathTranslate-next 的
high_level.do_translate_async_stream嵌入自己的程序;社区也有基于它的自部署 WebUI 项目(PDFMathTranslate-next)和 Zotero 插件路线,README 里有说明。整个管线是插件化的,OCR、模型、渲染器都可以替换,结构见 docs/ImplementationDetails/。
收尾:先抽几页,再全量跑
BabelDOC 把"翻译完还要人工重排"这件事自动化了,你只管出文件和 key,它回你一份排版不崩的中英对照 PDF。行动建议就两条:先用--pages抽几页验证质量和成本,满意了再全量;论文里专名多的话,先建一张术语表再开跑。
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考