Abstract
看纯英文PDF太费劲,不想用别人的网站或插件,机翻质量差、速度慢、容易卡死,用浏览器插件大PDF容易失败。 不如自己手搓一个工作流来做翻译,只需要往文件夹里一丢,提交到Github仓库,Action工作流会自动触发,自动翻译,翻完了也是自动上传到Github 仓库里。
效果预览:出来的结果是一个双语,一个纯汉语,可以打开双语的对照着看,阅读速度大大提升,翻译得有瑕疵也可以看原文澄清歧义。下图是翻译了谷歌新出的提示词工程白皮书
PDFMathTranslate
python
语言的 pdf2zh
库,支持多种语种,翻译的同时会保持原有的段落格式,支持传入文件夹,支持多种大语言模型接入。默认的机器翻译的质量很差,必须接入大模型翻译或专有翻译服务。
默认谷歌的翻译,把“摘要”翻译成了“抽象的”,翻译质量较差
支持的服务如下表
可以看到,支持了非常多的AI模型和AI开放平台。我试了DeepL、Gemini、Qwen/Qwen2.5-7B-Instruct和Deepseek V3,感觉DeepSeek V3表现较好。
使用方法是通过-s
指定服务,并将参数的Value
写入到环境变量中。以OPEN_AI举例,Windows环境下用$env:OPENAI_API_KEY=
指定,Mac环境用export OPENAI_API_KEY=
指定,同时支持传入自定义的提示词等。
Hint
如果有其他语种的翻译输入/输出需求,也可以通过-li和-lo指定,但需要使用的翻译服务能够支持。
搭建工作流
新建Github项目,在.github/workflows
文件夹下新建.yaml
文件,写入如下配置内容即可。
触发
我设定的触发条件是在papers/文件夹中提交了pdf文件时触发。这样只要把文件放到papers文件夹下并提交,就会自动运行。增加workflow_dispatch:是也支持手动触发调试。可根据需求,更改为webhook触发、其他工作流触发或者定时触发等。
环境变量
在 /settings/secrets/actions
中可配置使用的Key和模型。
使用硅基流动的API,可以选用多种模型。实测跑一份几十页的PDF大概花费赠送余额1毛多,没有注册的朋友欢迎点下方链接,使用我的邀请码注册,你我都可以获赠赠送余额十四元~
使劲测试消耗了两元巨款⬇️
执行
执行过程就是安装python环境、安装依赖、命令行执行。将执行出的pdf文件放到translation_output
文件夹中,将已翻译好的pdf挪到 archive
文件夹中。
Hint
注意最好在
papers
文件夹下放一个后缀不是pdf文件的文件做占位,不然pdf被挪走后,空文件夹会被自动删掉 。我是放了一个名字就叫placeholder的无后缀空文件做占位。
翻译结果提交到库
由于翻译可能执行的时间很长,过程中可能库内文件发生了变更,再做提交时就会发生冲突。
所以提交前并先stash当前内容,再做一次拉取,拉取库内最新的文件,再提交。避免因为冲突,导致文件提交失败。
使用
使用起来很简单,就是把需要翻译的文件放到papers文件夹下,提交到github上。等一段时间(过程较长,大的pdf可能要四五十分钟甚至一个多小时,不过都是自动、在云端完成的)翻译完成了,再拉取一下,可以看到翻译结果已经放到translation_output文件夹下啦。
可以翻译书籍、论文等等~