30分钟跑通BabelDOC:从克隆到输出双语PDF
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
PDF翻译保留排版:BabelDOC的定位
BabelDOC 是一个保留公式与表格原排版的 PDF 翻译工具。你拿到一份 200 页的英文论文,deadline 是明天:用传统工具翻译后,译文常溢出原文区域、公式占位符散落、表格错位,得手动重排一遍。
它主要解决英文转中文的翻译排版问题,其他语言方向刚支持不久、测试不多。它不解决两类事:纯扫描件需要配合 OCR 参数才能处理,翻译只对接 OpenAI 兼容的模型接口,不支持传统翻译引擎。
项目用 Python 编写(3.10 至 3.13),跨平台,以命令行为主。翻译交给你配置的模型 API 完成,BabelDOC 本身负责解析、排版和重构。
BabelDOC 能做什么:三个常见PDF翻译场景
单篇学术论文或技术文档:它能识别公式文本,公式不参与翻译、不会变乱码;译文默认以双语形式输出,原文和译文在同一页对照,也能用--use-alternating-pages-dual改成一页原文一页译文。只翻部分页面时用-p 1,2,5-这样的格式指定。
办公文档或手册:双语对照输出方便逐段核对;专业术语可以放 CSV 文件后用--glossary-files传入,让全文译法统一;--custom-system-prompt还能给模型追加翻译要求。
批量与长文档:--files可以一次传多个文件;--max-pages-per-part把长文档按页数切块翻译再自动合并;--qps控制每秒请求数避免触发限流;内置翻译缓存,重复内容不会重复调用模型。
让BabelDOC跑起来:克隆到首次翻译的一步到位
准备工具链
这一步确认机器上有 uv,它是 Python 包管理器,安装和运行都靠它。
uv --version你应该看到版本号;如果提示找不到命令,先按 uv 官方说明安装并加入 PATH。
拉取并安装
克隆仓库,uv run 会顺手把依赖装好,--help用来确认命令可用。
git clone --depth 1 https://gitcode.com/GitHub_Trending/ba/BabelDOC cd BabelDOC uv run babeldoc --help你应该看到包含--files的完整参数帮助。不想保留源码的话,用uv tool install --python 3.12 BabelDOC直接从 PyPI 装最新版。
首次启动验证
翻译前先让它下载字体和模型等资产,避免中途断网。
uv run babeldoc --warmup你应该看到资产下载与校验完成。然后填上你的 PDF 和模型密钥,跑第一次翻译:
uv run babeldoc --files example.pdf --openai \ --openai-model gpt-4o-mini \ --openai-base-url https://api.openai.com/v1 \ --openai-api-key your-api-key-here你应该看到进度条走完,输入文件同目录生成双语和单语两种 PDF。文件路径建议用绝对路径。
💡 国内网络拉依赖或下载模型可能超时:PyPI 部分可给 uv 配置镜像源;模型字体可以先在有网环境
--generate-offline-assets打包,再在目标环境--restore-offline-assets恢复。
BabelDOC PDF翻译卡住时:四个场景少走弯路
如果输出文件在某些阅读器里显示异常,比如文字乱码或内容缺失。用--enhance-compatibility重跑一次:
uv run babeldoc --enhance-compatibility --files example.pdf --openai \ --openai-api-key your-api-key-here \ --openai-base-url https://api.openai.com/v1原理:它等价于关闭 PDF 清理、译文前置和富文本翻译这几个容易引发不兼容的步骤,代价是文件体积变大。
如果是扫描件、文字选不中,先带--debug跑一遍,中间结果会导出到~/.cache/babeldoc/working,确认扫描检测结果。白底黑字的文档加上这个参数:
uv run babeldoc --auto-enable-ocr-workaround --files scanned.pdf --openai \ --openai-api-key your-api-key-here \ --openai-base-url https://api.openai.com/v1原理:检测到重度扫描时自动启用 OCR 兜底,用白色色块盖住原文再写译文。
如果长文档翻译慢、怕中途断掉,给命令加--max-pages-per-part 50:
uv run babeldoc --max-pages-per-part 50 --files big.pdf --openai \ --openai-api-key your-api-key-here \ --openai-base-url https://api.openai.com/v1原理:文档被切成分不超过 50 页的块独立翻译再自动合并,翻译缓存已记住完成的内容,重跑不会重复计费。
如果想让专业术语翻译得对,把术语整理成含source、target列的 CSV(仓库里有现成样例docs/example/demo_glossary.csv),用--glossary-files传入。原理:正文里出现的术语会被写进模型提示词,强制按你的译法翻译,同一术语不会前后不一。
接下来去哪看
完整参数清单和 TOML 配置文件示例在 README.md,各处理阶段的详细说明在 docs/ImplementationDetails/,所有命令行选项定义在 babeldoc/main.py。
有问题直接提 Issue,维护者会看;翻译效果不佳时附上输入文件和--debug的中间结果,能省很多来回沟通的时间。
【免费下载链接】BabelDOCYet Another Document Translator项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考