BabelDOC PDF 翻译工具指南:英文 PDF 转中文且保留排版
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
BabelDOC 是一款开源 PDF 翻译工具。它把英文 PDF 翻译成中文,保留原版式、公式与字体样式,输出单语版和双语对照版两份文件。适合要把论文、技术手册读成中文、又不想排版错乱的人。
翻译结果不打乱排版
你拿到一份 200 页的英文论文,要中文版,但版式不能乱。把文字复制到在线翻译,第一页看着还行,公式变成乱码,表格结构散了,翻到第十页就没人能读。丢给大模型 API 也一样,回来的是一串纯文本,没有任何排版。
BabelDOC 的思路是:先把 PDF 解析成结构化中间表示,找出段落和样式信息,把文本交给大模型翻译,再把译文重新排版回原来的文字区域。得到的仍是一份 PDF:页边距、分栏位置不变,公式原样保留。扫描件同理,它能检测扫描页并切换到 OCR 处理路径。
常用功能速览:双语对照与公式保留
- 双语对照阅读:你想边读边对照原文。它默认输出左右并排的双语 PDF(文件名以
.dual.pdf结尾),只要单语版就加--no-dual。 - 公式与样式保持:你希望公式和字体层级原样不动。它按字体、字符模式识别公式文本并跳过翻译,译文排版继承原字号、字重和颜色。
- 术语统一:你希望同一术语全文译法一致。可传 CSV 术语表(source、target、tgt_lng 三列),另有内置的自动术语提取,示例见 docs/example/demo_glossary.csv。
- 大文档分块:你担心 300 页的 PDF 撑爆内存。它可按页数切分、分块翻译后自动合并回完整文档。
五分钟安装并翻译第一份 PDF
安装命令行工具(需先装好 uv):
uv tool install --python 3.12 BabelDOC babeldoc --help跑第一次翻译:
babeldoc --files paper.pdf --lang-in en --lang-out zh \ --openai --openai-model gpt-4o-mini \ --openai-base-url "https://api.openai.com/v1" --openai-api-key "your-api-key"--files:输入的 PDF 文件,可重复传多次实现批量翻译--lang-in/--lang-out:源语言与目标语言,默认 en 到 zh--openai-*:任何 OpenAI 兼容 API 都行,本地 Ollama 也可以,key 随便填个占位值
结果默认和输入文件同目录:paper.zh.mono.pdf是中文版,paper.zh.dual.pdf是双语对照版,用--output可改输出目录。完整参数在 README.md。想从源码跑?克隆仓库 后进入目录,uv run babeldoc用法相同。
CLI、API 与自部署:用法选型
| 方式 | 适合谁 | 特点 |
|---|---|---|
| 命令行 | 开发者、自动化流程 | 参数全部暴露为命令行参数,适合批量处理,可写进脚本 |
| Python API | 集成进自己的产品 | 项目声明 API 为内部接口,推荐经由 pdf2zh next 的high_level.do_translate_async_stream调用 |
| 在线服务 | 普通用户 | 免安装、免配置,有免费额度,轻量使用足够 |
| 自部署 | 企业、数据敏感场景 | 配合开源项目 pdf2zh next 拉起 WebUI,可接更多翻译服务 |
🔧 进阶参数与常见问题 FAQ
进阶技巧
- 大文档分块:
--max-pages-per-part 50按 50 页自动分段翻译并合并,内存占用平稳。 - 控并发与限速:
--qps限制对翻译服务的请求频率(默认 4),--pool-max-workers直接设置内部任务线程数。 - 扫描文档:
--ocr-workaround在译文下补白色背景盖住原文(仅适合黑字白底);--auto-enable-ocr-workaround则在检测到扫描页后自动启用。
一行示例:
babeldoc --files large.pdf --max-pages-per-part 50 --qps 10常见问题
问:支持哪些翻译服务? 答:任意 OpenAI 兼容端点。--openai-base-url填地址、--openai-api-key填密钥,本地 Ollama 的 key 填占位字符串即可。
问:结果输出到哪里? 答:默认与输入文件同目录,--output可指定目录。生成单语版.mono.pdf和双语版.dual.pdf两个文件。
问:重复翻译会不会重复消耗 API? 答:不会。内置翻译缓存,相同文本直接复用;--ignore-cache可强制重新翻译。
问:某些 PDF 阅读器打不开输出文件? 答:加--enhance-compatibility,它会一次性开启跳过清理、译文在前、禁用富文本翻译三项兼容设置。
问:出错了怎么排查? 答:加--debug,详细日志和中间结果会导出到~/.cache/babeldoc/working。
关键目录与排错速查
- babeldoc/format/pdf/document_il/:解析、翻译、排版的中间语言流水线
- babeldoc/translator/:翻译服务与缓存
- babeldoc/docvision/:文档布局分析模型
- babeldoc/pdfminer/:PDF 解析基础
- docs/ImplementationDetails/:各阶段实现细节文档
| 问题 | 原因 | 解法 |
|---|---|---|
| 翻译速度慢 | 文档大或网络请求多 | --max-pages-per-part分块 +--qps限速 |
| 公式识别错误 | 特殊字体或编码 | --formular-font-pattern指定公式字体 |
| 扫描 PDF 效果差 | 纯图片无文字层 | --ocr-workaround或--auto-enable-ocr-workaround |
| 输出文件打不开 | 阅读器兼容性问题 | --enhance-compatibility |
| 内存不足 | 一次处理页数过多 | 调小--max-pages-per-part,并用--working-dir指定工作目录 |
如果你主要做英文论文和手册的中文化,又在意版式保真,BabelDOC 这个 PDF 翻译工具能覆盖多数场景。全部参数见 README.md,中间语言设计见 docs/README.md。
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考