ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

BabelDOC 实操:一条命令把英文论文 PDF 翻成中文,公式和表格不跑位

BabelDOC 实操:一条命令把英文论文 PDF 翻成中文,公式和表格不跑位 BabelDOC 实操一条命令把英文论文 PDF 翻成中文公式和表格不跑位【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC把一篇 47 页的英文论文丢给 BabelDOC——一个面向 PDF 翻译的开源工具——拿到手的是单语中文版 PDF 和一份双语对照 PDF公式、表格的位置与原文一致。这篇文章记录安装后如何跑通第一次翻译、大文件怎么分片、术语表怎么用以及我实际踩到的几个坑适合需要翻译论文和技术文档的研究者、工程师。跑通第一次翻译拿到两份输出 PDF先说结论BabelDOC 的命令行目前只接 OpenAI 兼容的 LLM 接口翻译质量取决于你配的模型。推荐用 uv 装好直接跑uv tool install --python 3.12 BabelDOC babeldoc --files paper.pdf --openai \ --openai-model gpt-4o-mini \ --openai-base-url https://api.openai.com/v1 \ --openai-api-key your-api-key也可以从源码跑git clone https://gitcode.com/GitHub_Trending/ba/BabelDOC后进入目录uv run babeldoc --help即可。翻译完成后输出目录里会出现两份 PDF单语版只含译文和双语对照版默认同页左右并排原文在前。双语版首页默认带水印想控制水印用--watermark-output-mode取值watermarked/no_watermark/both只要单语版就加--no-dual。--output可以指定输出目录不指定就落在当前目录。它为什么能把版式留住内部是一条 解析 → 版面分析 → 段落识别 → 样式/公式提取 → 翻译 → 排版 → 重新生成 PDF 的流水线PDF 先被转成一份中间表示IL翻译只改文本、不动坐标所以译文会按原文字号和位置重新排进去。各阶段的细节文档在 docs/ImplementationDetails/README.md。大文档分片与并发控制我试过一篇 180 页的文档不分片时内存压力不小中途日志里出现过大页面被跳过的提示。分片参数就一个babeldoc --files large.pdf --lang-in en --lang-out zh \ --max-pages-per-part 50 --qps 5 --pool-max-workers 4--max-pages-per-part 50表示每 50 页切开独立翻译结束后自动合并回一份 PDF这也是官方 README 对大文档的推荐做法。--qps限制翻译请求速率默认 4--pool-max-workers不设时默认等于 QPS 值。想指定翻译哪些页用--pages写法支持1,2,1-,-3,3-5这种组合--only-include-translated-page可以让输出 PDF 只保留翻过的页。用 CSV 术语表统一译名术语一致性问题我是靠术语表解决的。CSV 只要三列source、target可选tgt_lng不写则对任何目标语言生效source,target,tgt_lng Kubernetes,Kubernetes,zh-CN microservice,微服务,zh-CN保存为 glossary.csv 后命令里加--glossary-files glossary.csv即可多个文件用逗号分隔。翻译时系统会检查当前文本段落命中哪本术语表就把相关词条塞进 LLM 的 prompt 并要求遵守术语表名取自文件名的 csv 后缀部分。仓库里附了一份示例 docs/example/demo_glossary.csv。另外注意BabelDOC 默认会从文档里自动提取高频术语术语池这步一般不用干预想关掉加--no-auto-extract-glossary想留档加--save-auto-extracted-glossary 文件路径。扫描件翻译两个 OCR 参数加一个兼容开关扫描版 PDF 的前提假设是白底黑字两个参数对应两种用法babeldoc --files scanned.pdf --ocr-workaround babeldoc --files scanned.pdf --auto-enable-ocr-workaround--ocr-workaround是手动开启在译文下方垫白色矩形块盖住原文并把所有文本强制成黑色--auto-enable-ocr-workaround则让系统先做扫描件检测超过 80% 的页是扫描内容才自动启用否则保持关闭。如果你确定文档不是扫描件加--skip-scanned-detection可以省掉检测耗时。遇到某些 PDF 在阅读器里显示异常时先试--enhance-compatibility它等价于同时打开--skip-clean --dual-translate-first --disable-rich-text-translate代价是文件体积变大、译文页排到原文页前面。语言方面目前主要是英文翻中文场景其他语言组合官方注明尚未充分测试支持范围见 docs/supported_languages.md。踩过的坑与调试方法翻译前值得知道的几个已知限制README 里明列了作者与参考文献区域解析后会合并成同一段不支持线条线条会被忽略不支持首字下沉超大页面会被跳过。如果你的文档作者区排版很规整但译出来糊成一段大概率就是这个原因而不是你的参数问题。出问题时开--debugbabeldoc --files doc.pdf --debug中间结果和详细日志会导出到~/.cache/babeldoc/working能看到解析、排版各阶段的产物。翻译层有缓存同一篇重复跑不会重复请求 LLM改了术语表或 prompt 后想强制重翻加--ignore-cache。离线环境的话在有网机器上babeldoc --generate-offline-assets 目录生成资产包含字体和模型带 SHA3-256 校验到内网机器babeldoc --restore-offline-assets 包.zip恢复包名不能改。再往哪走需要 Web 界面或更多翻译服务时社区有基于 BabelDOC 的自部署项目 PDFMathTranslate-next想嵌入自己的程序则直接用 Python 层调用但官方声明 BabelDOC 的所有 API 都是内部 API不做兼容承诺。路线图上的待办是表格支持、跨页跨栏段落、高级排版和大纲项目目前是维护者主导模式bug 报告和可复现的 PDF 是最受欢迎的贡献形式。一句话总结先把一条带--openai的命令跑通再按需加分片和术语表参数BabelDOC 的版式保留能力对常规论文 PDF 是够用的扫描件和特殊排版则要看上面那几节的前提假设是否成立。【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表