
BabelDOC把 PDF 翻译时保住公式和排版这件事讲清楚【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOCBabelDOC 是一个开源 PDF 翻译工具给它一份英文论文 PDF还你一份中文版公式、表格、多栏排版都留在原位。适合需要批量处理论文和技术文档、又不想手动重排版的人。 它先解决了三个问题文字一抽出来排版就散了普通工具只会把 PDF 里的文字抽成纯文本去翻译贴回去之后栏序错乱、标题错位基本要手动重排。BabelDOC 先把 PDF 解析成中间语言表示IL记录每个字的位置、字体和段落关系翻译完再按原排版重新铺回去。公式会被翻译搅乱数学符号和公式是翻译中最容易坏的部分当成普通文本处理必然乱码。BabelDOC 通过字体和字符模式识别公式区域把它当占位符原样保留不参与翻译。术语翻译前后不一致同一个词每次翻出不同译法读论文的人会很痛苦。BabelDOC 有两条路手动导入术语 CSV或者在翻译时自动从文档里提取高频术语默认开启。它提供三种用法用法适合谁说明命令行开发者、自动化脚本参数灵活支持多文件批量Python 库想嵌入自己程序的人定位为内部 API稳定性不保证在线服务普通用户免安装浏览器里直接跑 5 分钟跑通第一条命令先用 uv 装好如果还没装然后一条命令安装 BabelDOCuv tool install --python 3.12 BabelDOC装完直接跑一条翻译命令。注意它必须配一个 OpenAI 兼容的 LLM 才能工作本地模型比如 Ollama也可以API key 随便填babeldoc --files example.pdf \ --lang-in en --lang-out zh \ --openai --openai-model gpt-4o-mini \ --openai-base-url https://api.openai.com/v1 --openai-api-key sk-xxx几个关键参数--files指定输入 PDF可多次传入批量处理--lang-in/--lang-out指定源语言和目标语言默认就是英文翻中文--openai一组参数指定翻译模型。跑完后终端会显示进度条输出目录里会出现两份 PDF一份原文译文对照的双语版一份纯译文版。 真实场景怎么用翻译带公式的论文论文是最典型的场景有公式、有术语、篇幅长。配上术语库和分块babeldoc --files paper.pdf --glossary-files glossary.csv --max-pages-per-part 50术语 CSV 需要source、target、tgt_lng三列文件名会作为术语表名字出现在给模型的提示词里--max-pages-per-part把长文档切块翻译、完成后自动合并长文档必加只翻大文档的特定几页想先看某几页效果或者只需要附录部分babeldoc --files large.pdf --pages 1,3,5-10 --only-include-translated-page--pages支持1,2,1-,-3,3-5这类写法--only-include-translated-page只在输出里保留翻译过的那几页配合--pages使用。处理扫描件扫描 PDF 翻完会出现原文译文重影因为底图上本来就印着文字babeldoc --files scanned.pdf --auto-enable-ocr-workaround系统检测到扫描件比例较高时会自动启用 OCR 处理并跳过后续扫描检测。前提是黑字白底如果你已经确认是扫描件也可以直接用--ocr-workaround让译文下方垫白色底块盖住原文。⚙️ 参数调优只看这四个--qps翻译 API 的每秒请求数上限默认 4。API 额度宽裕就调高频繁被限流就调低。--pool-max-workers内部任务池的线程数不指定时跟随--qps。API 不卡的话适当调大能提速。--max-pages-per-part每个分块的页数。100 页以上的文档建议设 30~50能明显缓解内存压力翻译完自动合并。缓存与术语相同文本重复翻译会自动命中缓存想强制重翻加--ignore-cache。术语表 CSV 建议单独维护、长期复用比每次依赖自动提取更稳。️ 遇到问题先看这里现象大概率原因怎么处理翻译很慢文档大或 API 慢加--max-pages-per-part分块调--qps输出的 PDF 某些阅读器打开排版错乱PDF 结构复杂、兼容性问题加--enhance-compatibility一次开启三组兼容选项公式被当正文翻乱了公式字体没被识别用--formular-font-pattern指定公式字体模式扫描件译文下有原文重影原文没被盖住加--ocr-workaround或--auto-enable-ocr-workaround术语翻得不稳定没给术语约束用--glossary-files挂术语表还没解决的话加--debug重跑一次中间结果和详细日志会导出到~/.cache/babeldoc/working排查问题基本靠它。 它是怎么工作的整个流程可以概括为解析 → 中间表示 → 翻译 → 重排。输入 PDF 先经过解析内置的 pdfminer 定制版加文档布局模型得到文本块、图片、表格的位置和结构再转成一份 XML 格式的中间语言IL然后按段落送 LLM 翻译最后按原始版式重新排版、渲染成新 PDF。解析阶段只取结构和位置不碰渲染细节中间语言解耦读和画翻译只改中间这份 XML渲染阶段按原字体、原坐标重排输出双语版和单语版都从这里生成 继续往下走拿一个小文档配合--pages先翻一两页看效果再处理整份把常用术语攒成 CSV下次直接用--glossary-files想控制输出样式可以试试--no-dual、--watermark-output-mode想改行为或看实现从 docs/ImplementationDetails/ 的分阶段文档读起遇到复现的 bug带上那份 PDF 提 issue关键路径官方文档、核心源码。BabelDOC 解决的就一件事翻译 PDF 时不把公式、表格和排版弄丢。建议先拿一份 10 页以内的小文档把第一条命令跑通遇到重影、公式乱再按上面的参数逐项调。【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考