当前位置: 首页 > news >正文

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

支持的服务商包括: 

TranslatorServiceEnvironment VariablesDefault ValuesNotes
Google (Default)googleNoneN/ANone
BingbingNoneN/ANone
DeepLdeeplDEEPL_AUTH_KEY[Your Key]See DeepL
DeepLXdeeplxDEEPLX_ENDPOINThttps://api.deepl.com/translateSee DeepLX
OllamaollamaOLLAMA_HOSTOLLAMA_MODELhttp://127.0.0.1:11434gemma2See Ollama
XinferencexinferenceXINFERENCE_HOSTXINFERENCE_MODELhttp://127.0.0.1:9997gemma-2-itSee Xinference
OpenAIopenaiOPENAI_BASE_URLOPENAI_API_KEYOPENAI_MODELhttps://api.openai.com/v1[Your Key]gpt-4o-miniSee OpenAI
AzureOpenAIazure-openaiAZURE_OPENAI_BASE_URLAZURE_OPENAI_API_KEYAZURE_OPENAI_MODEL[Your Endpoint][Your Key]gpt-4o-miniSee Azure OpenAI
ZhipuzhipuZHIPU_API_KEYZHIPU_MODEL[Your Key]glm-4-flashSee Zhipu
ModelScopeModelScopeMODELSCOPE_API_KEYMODELSCOPE_MODEL[Your Key]Qwen/Qwen2.5-Coder-32B-InstructSee ModelScope
SiliconsiliconSILICON_API_KEYSILICON_MODEL[Your Key]Qwen/Qwen2.5-7B-InstructSee SiliconCloud
GeminigeminiGEMINI_API_KEYGEMINI_MODEL[Your Key]gemini-1.5-flashSee Gemini
AzureazureAZURE_ENDPOINTAZURE_API_KEYhttps://api.translator.azure.cn[Your Key]See Azure
TencenttencentTENCENTCLOUD_SECRET_IDTENCENTCLOUD_SECRET_KEY[Your ID][Your Key]See Tencent
DifydifyDIFY_API_URLDIFY_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.
AnythingLLManythingllmAnythingLLM_URLAnythingLLM_APIKEY[Your AnythingLLM URL][Your Key]See anything-llm
Argos TranslateargosSee argos-translate
GrokgrokGORK_API_KEYGORK_MODEL[Your GORK_API_KEY]grok-2-1212See Grok
GroqgroqGROQ_API_KEYGROQ_MODEL[Your GROQ_API_KEY]llama-3-3-70b-versatileSee Groq
DeepSeekdeepseekDEEPSEEK_API_KEYDEEPSEEK_MODEL[Your DEEPSEEK_API_KEY]deepseek-chatSee DeepSeek
OpenAI-LikedopenailikedOPENAILIKED_BASE_URLOPENAILIKED_API_KEYOPENAILIKED_MODELurl[Your Key]model nameNone
Ali Qwen Translationqwen-mtALI_MODELALI_API_KEYALI_DOMAINSqwen-mt-turbo[Your Key]scientific paperTranditional 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 的插件,以进一步拓展其功能和应用场景。


如果你觉得这个工具对你的学习、工作或研究有帮助,不妨点个赞👍,收藏一下🌟,或者关注我们的项目👀。你的支持是我们不断改进和更新的动力!感谢你的关注与支持!

相关文章:

  • Spine 动画教程:皮肤制作
  • 深度学习笔记22-RNN心脏病预测(Tensorflow)
  • Azure Data Factory ETL设计与调度最佳实践
  • 【RedisLockRegistry】分布式锁
  • 抖音小程序开发常见问题与代码解决方案
  • 【N8N】Docker Desktop + WSL 安装过程(Docker Desktop - WSL update Failed解决方法)
  • 从StandardMaterial和PBRMaterial到PBRMetallicRoughnessMaterial:Babylon.js材质转换完全指南
  • 附赠二张图,阐述我对大模型的生态发展、技术架构认识。
  • 力扣-160.相交链表
  • day49—双指针+贪心—验证回文串(LeetCode-680)
  • 基于Node+HeadlessBrowser的浏览器自动化方案
  • 多模态(3):实战 GPT-4o 视频理解
  • APP和小程序需要注册域名吗?(国科云)
  • kubesphere 单节点启动 etcd 报错
  • 【数据可视化-33】病毒式社交媒体潮流与用户参与度可视化分析
  • 解决视频处理中的 HEVC 解码错误:Could not find ref with POC xxx【已解决】
  • 线程池参数配置
  • RK3588芯片NPU的使用:yolov8-pose例子图片检测在安卓系统部署与源码深度解析(rknn api)
  • 【Hive入门】Hive数据导出完全指南:从HDFS到本地文件系统的专业实践
  • form表单提交前设置请求头request header及文件下载
  • 一周观展|五一假期将到,特展大展陆续开幕
  • 四川:全省统一取消普通住宅和非普通住宅标准
  • 安徽一交通事故责任认定引质疑:民警和司法鉴定人被处罚,已中止诉讼
  • 机票搜索热度飙升,透过数据看五一假期旅游热度
  • 百台新车首秀上海车展,跨国车企联手中国技术开启智能化下半场
  • 民生访谈|马拉松中签率低何解?预付费监管落实得如何?市体育局回应