BabelDOC:PDF翻译不用再手动排版双栏双语的开源方案
2026/9/18 14:22:24 网站建设 项目流程

BabelDOC:PDF翻译不用再手动排版双栏双语的开源方案

【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC

刚把一篇上百页的英文论文翻译完,往 Word 里一贴,公式乱掉、表格错行——BabelDOC 这个开源的 PDF 翻译方案,一行命令就能保住原始排版,直接产出双栏双语 PDF。你不需要会排版,只需要会敲命令行。

用 uv 一条命令装好 PDF 翻译环境

官方推荐用 uv 安装(也可以用pip install BabelDOC达到同样效果)。项目要求 Python 3.10 到 3.13,下面这条命令直接指定 3.12,uv 会自动下载对应版本并在隔离环境里装好,不碰你系统里已有的 Python:

uv tool install --python 3.12 BabelDOC # 指定 Python 3.12 安装 BabelDOC 到隔离环境

装完执行babeldoc --help,能看到全部参数列表,暂时只需要关注文件和翻译服务相关的几个。如果提示uv: command not found,多半是 PATH 没写进去,把 uv 重装一遍让它重新配置环境变量就行。

macOS 和 Linux 上直接跑上面这条就行;Windows 用 PowerShell 执行,报权限问题时选一次"以管理员身份运行"即可。

跑通一次完整的 PDF 双栏翻译流程

输入是 PDF,输出还是 PDF。先看最基础的场景:用 OpenAI 兼容接口翻译单个文件。任何兼容端点都行,本地 Ollama 也可以,那种情况下 API key 随便填个占位值都能通:

babeldoc \ --files ./paper.pdf \ # 输入 PDF 路径,可重复传多个 --files 批处理 --openai \ # 启用 OpenAI 兼容翻译服务 --openai-model "gpt-4o-mini" \ # 模型名,可换成任意兼容模型 --openai-base-url "https://api.openai.com/v1" \ # 接口地址 --openai-api-key "your-key" \ # 你的 API key --lang-in en --lang-out zh \ # 英文输入、中文输出(本来就是默认值) --output ./out # 输出目录,不写则放当前目录

跑完后输出目录里会出现两个 PDF:一个是双栏双语版,原文和译文在同一页左右排开;另一个是纯译文版。只想要译文的话,在命令里加--no-dual就不产双语文件;反过来加--no-mono则只留双语版。

看双栏版就能体会到差别:译文版式跟原文几乎一模一样,公式还是公式,图表题注没有断掉,参考文献没有混进正文。这就是"在原始排版里做翻译"和"先翻译再排版"的区别——开源双栏文档生成这件事里,排版环节它替你干了。

术语表路径怎么配

换成更实际的场景:术语必须统一的商务文档。仓库里自带了示例术语表 docs/example/demo_glossary.csv,格式是三列 CSV:source(原文术语)、target(译文术语)、可选的 tgt_lng(适用的目标语言,不写则对所有语言生效)。在上一条命令里加一行:

babeldoc --files ./contract.pdf \ --glossary-files ./docs/example/demo_glossary.csv \ # 逗号分隔,可传多个术语表 --openai --openai-model "gpt-4o-mini" \ --openai-base-url "https://api.openai.com/v1" --openai-api-key "your-key" \ --output ./out

翻译时只要某段文字命中了表里的词条,这份术语表就会被塞进模型提示词,并要求严格照表里说法翻译。示例文件里有一条 AutoML 对应 自动ML,也就是说这份术语一旦进表,从第一页到最后一页都只会这么写。工具默认还会自动抽取文档高频术语辅助翻译,不想要这步就加--no-auto-extract-glossary关掉。

给两百页大文件和特殊文件调稳输出

如果你遇到 X,试试 Y:

  • 文档超过两百页、内存吃紧:加--max-pages-per-part 50。分段翻译就像把厚书拆成几册分别翻译,每册翻完再自动拼回去,单次运行的内存压力小很多。
  • 某些 PDF 阅读器打不开译文:加--enhance-compatibility,它等价于同时开启--skip-clean--dual-translate-first--disable-rich-text-translate三个开关,用略大的文件体积换更稳的兼容性。
  • 源文件是扫描版:加--ocr-workaround,它会在译文底下垫一块白色背景盖住原文并强制文字变黑,适合白底黑字的扫描件。

还有两个常用小开关:--watermark-output-mode no_watermark去掉译文页脚水印(用both可以两个版本都输出);--pages "1,5-12"只翻译指定页码,配合--only-include-translated-page后输出 PDF 里就只剩你点名的那些页。

把 PDF 翻译嵌进自己的服务

BabelDOC 定位是可嵌入的库,babeldoc/format/pdf/high_level.py 里暴露了异步翻译入口,可以接进自己的工作流;完整参数表和 TOML 配置文件示例都写在 README.md 里,参数太多记不住时照着配置块抄一份就能省掉一长串命令行。

一行命令进去,一份双栏双语 PDF 出来,这就是这个 PDF 格式保留翻译工具给论文和技术文档上阅读列表的最快路径。想继续挖公式字体匹配这类边缘参数,仓库 README 的 Advanced Options 一节都写得明白。

【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询