如何保留公式与排版做 PDF 翻译:PDFMathTranslate 快速上手
【免费下载链接】PDFMathTranslate[EMNLP 2025 Demo] PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/MCP/Docker/Zotero项目地址: https://gitcode.com/GitHub_Trending/pd/PDFMathTranslate
拿到一篇 40 页的英文论文,公式占了一半,复制粘贴进翻译软件全是乱码?PDFMathTranslate(命令行名 pdf2zh)干的就是 PDF 翻译 保留公式这件事——全文翻译科学论文,输出时保持原版式的布局。
为什么它能翻译科学 PDF 而不弄坏公式
它不是把整页文字抽出来逐字丢给翻译引擎,而是先给页面拍一张"X 光片":内置版面模型把 PDF 的每个区域分成文字、公式、图片、表格、目录、页眉页脚,只把文字区域送去翻译。
先做版面检测,分清哪里是文字哪里是公式
首次运行会自动下载 DocLayout-YOLO 版面模型,逐页定位公式、图表、目录和注释的位置。公式和图片根本不进翻译流程,所以数学符号和编号原样保留。
只动文字:输入、处理、输出的完整链路
一份 PDF 进去,先分区域,文字送翻译服务(默认 Google,无需配置密钥),译文再写回原来的文字框。输入一次会生成两份产物:document-mono.pdf是纯译文,document-dual.pdf是中英对照版。
边界:纯图片扫描件要先 OCR
它解析的是 PDF 文本层,纯图片扫描版无法直接翻译,需要先装 OCR 附加包或自行 OCR(见 README.md 的实验性 OCR 一节)。
三步翻译你的第一份 PDF
确认你的 Python 版本在 3.11 到 3.12 之间,然后用一条命令装好:
pip install pdf2zh装成功后你会得到一个全新的pdf2zh命令。接着进入 PDF 所在目录执行:
pdf2zh document.pdf跑完你会看到当前目录多了两个文件:document-mono.pdf(纯译文)和document-dual.pdf(双语对照),双栏、公式编号和页眉页脚与原文逐页一致。首次运行稍慢,因为要下载版面模型。全部参数清单见 docs/ADVANCED.md。
按场景拆功能:四种常见需求
只翻译几页核对内容
只想快速看摘要和结论时,加-p指定页码范围,其余页保持原样:
pdf2zh example.pdf -p 1-3,5成功后只有第 1、2、3、5 页被翻译。这个场景常配合的参数:
| 参数 | 作用 |
|---|---|
-p | 仅翻译指定页码 |
-li/-lo | 源语言 / 目标语言 |
-t | 并发翻译线程数 |
--ignore-cache | 跳过缓存强制重新翻译 |
批量翻译整个文献文件夹
一次消化一整个文件夹的文献时,用--dir指向目录,用-o指定结果落盘位置:
pdf2zh --dir /path/to/papers -o results成功后 results 目录里每个 PDF 都会生成对应的 mono 和 dual 两份文件。
切换翻译服务
Google 默认质量不满意时,用-s换服务,但要先设好环境变量:DeepL 需要DEEPL_AUTH_KEY服务密钥,OpenAI 兼容接口需要OPENAI_API_KEY和OPENAI_BASE_URL:
pdf2zh example.pdf -s openai:gpt-4o-mini跑起来后就用指定模型完成翻译。各服务环境变量对照表见 docs/ADVANCED.md 的 "Translate with different services" 一节。
不想敲命令行
一条命令启动 Web 图形界面,拖入文件、配置服务、在浏览器里实时预览译文:
pdf2zh -i随后打开 http://localhost:7860/ 即可使用;容器部署只需拉取byaidu/pdf2zh镜像并映射 7860 端口,另外pdf2zh --mcp还能把翻译能力作为 MCP 服务提供给 Claude Desktop。细节见 docs/README_GUI.md。
踩坑速查
- 如果首次运行下载版面模型失败 → 大概率是网络到不了模型源 → 把
HF_ENDPOINT环境变量指向镜像地址(见 README.md 的网络问题说明) - 如果 PDF 提不出任何文字、翻译没输出 → 它是纯图片扫描件、没有文本层 → 安装 OCR 附加包
pip install 'pdf2zh[ocr]'或先自行 OCR - 如果公式或代码被"翻译"成了乱码 → 那个字体没进默认保留列表 → 用
-f追加字体名正则,写法见 docs/ADVANCED.md 的 "Translate with exceptions" 一节 - 如果同一份文件重跑还是旧译文 → 翻译缓存命中、跳过了 API 调用 → 加
--ignore-cache强制重新翻译
接下来做两件事:
- 打开 docs/ADVANCED.md 的 "Full / partial translation" 一节,把
-p和--dir组合起来批量翻几页重点内容。 - 对照同文档 "Translate with different services" 一节的环境变量表,配一套 DeepL 或 Ollama 本地模型跑一次,对比默认 Google 的译文质量。
【免费下载链接】PDFMathTranslate[EMNLP 2025 Demo] PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/MCP/Docker/Zotero项目地址: https://gitcode.com/GitHub_Trending/pd/PDFMathTranslate
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考