PDFMathTranslate:基于LLM的PDF文档翻译及双语对照的工具【使用教程】
1.简介
PDFMathTranslate 是一个用于科学 PDF 文档翻译及双语对照的工具,是一个功能强大且灵活的科学文档翻译工具,适合科研人员、学生和专业人士使用,能够有效提高文档翻译的效率和质量。其具有以下特点和功能:
核心功能
-
保留格式:在翻译过程中,能够保留原文档中的公式、图表、目录和注释,确保翻译后的文档与原文在结构和内容上保持一致。
-
多语言支持:支持多种语言的翻译,满足不同用户的需求。
-
多种部署方式:提供命令行工具、图形交互界面以及容器化部署等多种使用方式,方便用户根据自身需求选择。
github地址:https://github.com/Byaidu/PDFMathTranslate/tree/main
-
案例
以下案例使用免费方法,如果追求更高质量,可以使用付费API:
可以看到,这一框架在翻译文献时,只会对文档的正文部分进行提取并翻译,会自动保留算法、公式、注解、表格部分。文档会自动保存双语对照版和单语版,供用户选择。
以下案例使用DeepSeek API翻译
-
翻译效果对比
从左到右分别是:原文、谷歌翻译、Deepseek v3翻译,qwen-turbo翻译
从左到右分别是:原文、谷歌翻译、Deepseek v3翻译,qwen-turbo翻译
-
-
2.使用教程
下载源码:https://github.com/Byaidu/PDFMathTranslate/tree/main
-
安装
使用pip或conda安装
确保Python (3.10 <= 版本 <= 3.12),然后安装uv,然后使用uv安装pdf2zh
pip install uv
uv tool install --python 3.12 pdf2zh
Windows exe
下载 pdf2zh-version-win64.zip
解压缩并双击 pdf2zh.exe
运行
dockers
拉取并运行:
docker pull byaidu/pdf2zh
docker run -d -p 7860:7860 byaidu/pdf2zh
在浏览器中打开:
http://localhost:7860/
-
报错解决
warning: `/home/good/.local/bin` is not on your PATH. To use installed tools, run `export PATH="/home/good/.local/bin:$PATH"` or `uv tool update-shell`.
export PATH="/home/good/.local/bin:$PATH"
当前程序在工作前需要一个 AI 模型 (wybxc/DocLayout-YOLO-DocStructBench-onnx
),一些用户由于网络问题无法下载。如果你在下载此模型时遇到问题,可以改变以下环境变量的解决方法:
set HF_ENDPOINT=https://hf-mirror.com
对于 PowerShell 用户:
$env:HF_ENDPOINT = https://hf-mirror.com
如果此解决方案对您无效或您遇到其他问题,请参阅 常见问题解答。
-
使用方法
在线页面
huggingface:https://huggingface.co/spaces/reycn/PDFMathTranslate-Docker
登录作者在huggingface托管的项目,可直接使用,无需安装和下载。
-
命令行
使用如下命令,执行翻译,文件生成在当前工作目录:
pdf2zh document.pdf
执行翻译命令后在当前工作目录下生成译文文档 example-mono.pdf
和双语对照文档 example-dual.pdf
,默认使用 Google 翻译服务。
-
命令行格式如下:
-p指定页码
pdf2zh example.pdf -p 1-3,5
-li和-lo指定语言
pdf2zh example.pdf -li en -lo ja
-s表示翻译服务提供商,默认使用Google进行翻译,我们也可以使用如DeepSeek、deepl等服务。
pdf2zh example.pdf -s openai:gpt-4o-mini或
set OPENAI_MODEL=gpt-4o-mini
pdf2zh example.pdf -s openai在powershell上使用:
$env:OPENAI_MODEL = gpt-4o-mini
pdf2zh example.pdf -s openai
支持的服务商包括:
Translator | Service | Environment Variables | Default Values | Notes |
---|---|---|---|---|
Google (Default) | google | None | N/A | None |
Bing | bing | None | N/A | None |
DeepL | deepl | DEEPL_AUTH_KEY | [Your Key] | See DeepL |
DeepLX | deeplx | DEEPLX_ENDPOINT | https://api.deepl.com/translate | See DeepLX |
Ollama | ollama | OLLAMA_HOST , OLLAMA_MODEL | http://127.0.0.1:11434 , gemma2 | See Ollama |
Xinference | xinference | XINFERENCE_HOST , XINFERENCE_MODEL | http://127.0.0.1:9997 , gemma-2-it | See Xinference |
OpenAI | openai | OPENAI_BASE_URL , OPENAI_API_KEY , OPENAI_MODEL | https://api.openai.com/v1 , [Your Key] , gpt-4o-mini | See OpenAI |
AzureOpenAI | azure-openai | AZURE_OPENAI_BASE_URL , AZURE_OPENAI_API_KEY , AZURE_OPENAI_MODEL | [Your Endpoint] , [Your Key] , gpt-4o-mini | See Azure OpenAI |
Zhipu | zhipu | ZHIPU_API_KEY , ZHIPU_MODEL | [Your Key] , glm-4-flash | See Zhipu |
ModelScope | ModelScope | MODELSCOPE_API_KEY , MODELSCOPE_MODEL | [Your Key] , Qwen/Qwen2.5-Coder-32B-Instruct | See ModelScope |
Silicon | silicon | SILICON_API_KEY , SILICON_MODEL | [Your Key] , Qwen/Qwen2.5-7B-Instruct | See SiliconCloud |
Gemini | gemini | GEMINI_API_KEY , GEMINI_MODEL | [Your Key] , gemini-1.5-flash | See Gemini |
Azure | azure | AZURE_ENDPOINT , AZURE_API_KEY | https://api.translator.azure.cn , [Your Key] | See Azure |
Tencent | tencent | TENCENTCLOUD_SECRET_ID , TENCENTCLOUD_SECRET_KEY | [Your ID] , [Your Key] | See Tencent |
Dify | dify | DIFY_API_URL , DIFY_API_KEY | [Your DIFY URL] , [Your Key] | See Dify,Three variables, lang_out, lang_in, and text, need to be defined in Dify's workflow input. |
AnythingLLM | anythingllm | AnythingLLM_URL , AnythingLLM_APIKEY | [Your AnythingLLM URL] , [Your Key] | See anything-llm |
Argos Translate | argos | See argos-translate | ||
Grok | grok | GORK_API_KEY , GORK_MODEL | [Your GORK_API_KEY] , grok-2-1212 | See Grok |
Groq | groq | GROQ_API_KEY , GROQ_MODEL | [Your GROQ_API_KEY] , llama-3-3-70b-versatile | See Groq |
DeepSeek | deepseek | DEEPSEEK_API_KEY , DEEPSEEK_MODEL | [Your DEEPSEEK_API_KEY] , deepseek-chat | See DeepSeek |
OpenAI-Liked | openailiked | OPENAILIKED_BASE_URL , OPENAILIKED_API_KEY , OPENAILIKED_MODEL | url , [Your Key] , model name | None |
Ali Qwen Translation | qwen-mt | ALI_MODEL , ALI_API_KEY , ALI_DOMAINS | qwen-mt-turbo , [Your Key] , scientific paper | Tranditional Chinese are not yet supported, it will be translated into Simplified Chinese. More see Qwen MT |
对于与 OpenAI API 兼容但未列在上表中的大型语言模型,可以使用表中针对 OpenAI 概述的相同方法设置环境变量。
--dir 批量翻译
pdf2zh --dir /path/to/translate/
PDFMathTranslate 会缓存已翻译的文本,以提高速度并避免对相同内容进行不必要的 API 调用。您可以使用 --ignore-cache 选项忽略翻译缓存并强制重新翻译。
pdf2zh example.pdf --ignore-cache
使用 --config 指定配置 PDFMathTranslate 的文件:
pdf2zh example.pdf --config config.json
或
pdf2zh -i --config config.json
json配置文件示例
{"USE_MODELSCOPE": "0","PDF2ZH_LANG_FROM": "English","PDF2ZH_LANG_TO": "Simplified Chinese","NOTO_FONT_PATH": "/app/SourceHanSerifCN-Regular.ttf","translators": [{"name": "deeplx","envs": {"DEEPLX_ENDPOINT": "http://localhost:1188/translate/","DEEPLX_ACCESS_TOKEN": null}},{"name": "ollama","envs": {"OLLAMA_HOST": "http://127.0.0.1:11434","OLLAMA_MODEL": "gemma2"}}]
}
默认情况下,配置文件保存在 ~/.config/PDFMathTranslate/config.json 中。程序将首先读取 config.json 的内容,然后读取环境变量的内容。当环境变量可用时,首先使用环境变量的内容,然后更新文件。
-
图形用户界面(推荐)
pdf2zh -i
浏览器访问:
http://localhost:7860/
界面如下:
在这里也更方便去使用和调控。
-
本地模型+PDFMathTranslate
本地启用vllm,参考教程如下:
- LightRAG:基于LightRAG进行本地RAG部署
- qwen2-VL部署:Vllm进行Qwen2-vl部署(包含单卡多卡部署及爬虫请求)
部署好后启用模型
-
本地启动pdf2zh
pdf2zh -i
浏览器访问:
http://localhost:7860/
option设定如下:
- service选择OpenAI-liked
- Base_url选择自己设定的,如:http://0.0.0.0:8000/v1
- OPENAILIKED_API_KEY如果没有设定,可以随便填一个
- OPENAILIKED_MODEL选择你启动的模型,如Qwen2.5-7B-Instruct-GPTQ-Int4
如下:
-
API申请流程
DeepSeek
登录以下页面:DeepSeek
注册账号,并充值
- 费用参考:一个4页的文档,大约花费4分钱
点击左侧的API_keys,创建API Key,并复制API Key,
- 注意:API key只展示一次,如果没有保存,需要重新生成一个
使用方法:
-
阿里云
申请API Key教程:百炼控制台
申请API Key:百炼控制台
使用方法:
-
-
总结
PDFMathTranslate 是一个专注于科学 PDF 文档翻译的工具,能够保留原文档中的公式、图表、目录和注释,支持多种语言和翻译服务。它提供了多种使用方式,包括命令行工具、图形交互界面、容器化部署以及 Windows 可执行文件等,方便用户根据自身需求选择。此外,该工具还支持多线程翻译、部分文档翻译、自定义模型和端口等高级功能,进一步提升了翻译的效率和灵活性。尽管当前的 API 已暂时弃用,但项目团队仍在积极开发,计划在 pdf2zh 2.0 发布后重新提供更强大的 API 支持。未来,PDFMathTranslate 还将引入基于 DocLayNet 的布局解析技术,优化页面旋转、目录和列表格式等问题,并开发 Zotero 和 Obsidian 的插件,以进一步拓展其功能和应用场景。
如果你觉得这个工具对你的学习、工作或研究有帮助,不妨点个赞👍,收藏一下🌟,或者关注我们的项目👀。你的支持是我们不断改进和更新的动力!感谢你的关注与支持!