介绍一款基于 MinerU 的PDF翻译工具
2025-5-1
| 2025-5-13
字数 3739阅读时长 10 分钟
type
status
date
slug
summary
tags
category
icon
password

一、简介

Fast pdf translate是一款pdf翻译软件,基于MinerU实现pdf转markdown的功能,接着对markdown进行分割,
送给大模型翻译,最后组装翻译结果并由pypandoc生成结果pdf。
git地址:
gitee地址:

二、主要功能

  1. pdf解析功能
  • 支持由pdf书签生成markdown标题(分级),魔改MinerU实现
  • 支持移除markdown代码块的非标题#号,魔改MinerU实现
  • 支持由大模型对MinerU生成的标题进行分级和过滤(无书签的场景)
  • 支持由大模型移除误识别的公式,魔改MinerU实现
  1. 翻译功能
  • 支持所有兼容openai api的大模型
  • 支持流控限制、多线程、多个大模型同时翻译
  • 支持缓存,任务中断后再次执行时,问过的问题直接从缓存读取
  • 支持对大模型返回的代码块进行自动换行处理
  1. 生成结果pdf
  • 基于pypandoc加prince引擎实现

三、系统要求

完整的系统要求可以参照MinerU的系统要求,简言之:
  • windows/linux均可
  • 有英伟达显卡则可以使用显卡加速,显存8G以上最好(6G也可以)
  • 内存最好在16G以上

四、安装

建议使用conda安装,尤其是如果用gpu进行pdf解析的话。
1.创建conda环境
2.安装MinerU
注:如果要使用本软件魔改MinerU的相关功能(pdf书签等),就要严格使用上面指定的1.2.0版本,否则可以使用最新版本。
如果要使用英伟达gpu加速推理,请移步MinerU cuda环境安装文档(主要是重装cuda版的pytorch和paddlepaddle-gpu),也可以参照文本后面的七。MinerU cuda环境安装:
3.安装依赖
cd到fast_pdf_trans项目目录下
4.下载模型
注意:如果你已经参照MinerU官方的cuda环境文档安装过了,你可能已经把下载模型的步骤执行过了,
不用再重新下载模型了。
执行如下脚本:
模型会下载到C:\Users\你的用户名.cache\modelscope\hub\models目录下,并且脚本会自动当该目录保存到C:\Users\你的用户名\magic-pdf.json文件中
注意:在linux中就用你的当前用户来执行这个脚本,不要用root用户去执行,否则模型会下载到/root/.cache/modelscope中, 而你普通用户是访问不了/root这个目录的。
5.安装Prince
如果你只需要将pdf解析为markdown并翻译成中文markdown,那就不需要安装Prince了。但是如果你还需要将它转换成中文pdf,则需要Prince。
请移步Prince官网下载对应系统的版本。下面分别以windows和ubuntu为例:
  • windows
下载prince-16-win64.zip,解压到任意目录,比如D:\program,然后把"D:\program\prince-16-win64\bin"添加到系统环境变量PATH中。
以windows11为例(win10应该也差不多,顶多是找环境变量的过程可能稍有区别),在文件浏览器中右击"此电脑"–“属性”–“高级系统设置”–“环境变量”–下面的"系统变量",在里面找到Path,双击它打开,
在里面新建一项填"D:\program\prince-16-win64\bin"即可(填的时候并不需要双引号)。
修改完环境变量后,需要重新打开cmd命令行才有效(如果你用的是pycharm也是同理,需要重新打开pycharm),执行where prince,看到如下结果表示Path加成功了
  • ubuntu20.04
下载prince_16-1_ubuntu20.04_amd64.deb,参考Prince Installation Guide
notion image
点到ubuntu的安装部分,其实就一条命令,如果是root用户,直接执行:
否则执行:
如果你没有安装gdebi,那就先用apt安装一下就好啦
非root用户还是注意加上sudo
安装完prince之后执行which prince,看到如下结果表示成功安装了:
6.配置大模型
本项目自身要用的配置都在conf.yaml中,里面各项都做了详细说明,不要被它们吓到! 接下来演示的功能,唯一要配置的就是一个大模型的api-key。
即如下这段,搜索ds_llm_agent即可找到,把里面的api_key的值sk-xxxxxxxxxx换成你自己的api_key:
你如果没有api_key,请移步deepseek官网注册并充值~~
你如果不想用deepseek,只要是兼容openai-api的大模型,都可以配置在这里。
也可以另外新建一段大模型的配置并且在翻译配置中引用它。
或者你有多个deepseek的帐号,你想在翻译中一起用。
具体用法参见README 6配置大模型
至此,所有准备工作就都完成了!

五、运行

现在我有一本"Hands-On Generative AI with Transformers and Diffusion Models.pdf",现在测试一下,让它翻译21页到27页,cd到fast_pdf_trans项目目录下,执行:
注意这里的–start-page,–end-page的值都是从1开始计数的。如果这两个参数都不传,则会翻译整个pdf。各命令行参数的含义可以执行python translate.py -h进行查看。
本次运行的条件是这是一个文字版pdf(非扫描版),有书签,无公式,其它场景后面会再详细例举。
notion image
最后看到
表示结果pdf路径就是:D:\workPython\llm\fast_pdf_trans\output\Hands-On Generative AI with Transformers and Diffusion Models\Hands-On Generative AI with Transformers and Diffusion Models_correct_trans_format.pdf
notion image
本次没有指定输出文件的目录,所以默认是在项目目录的output文件夹下。
如上图:
  • 绿框是通过MinerU解析pdf后生成的markdown文件,但是本次使用了pdf书签生成markdown标题(在conf.yaml中有默认配置,后面详述),所以这个markdown文件里的标题看起来会有点奇怪,是我做了特殊记号的(用于标记标题级别)。
  • 黄框是在MinerU生成的markdown的基础上,进行一些修改操作,比如把上面的标题级别的标记还原成实际的markdown标题级别。
  • 或者在没有使用pdf书签的情况下,通过大模型修正markdown标题级别,也会在本文件中完成。
  • 蓝框就是翻译后的中文markdown了。
  • 红框是MinerU解析pdf后我保存的一些调试数据,比如layout.pdf, spans.pdf可以直接去看看。
  • 没有框起来的那两个文件,_correct_trans_format.md是在翻译完的markdown的基础上又进行了一些修正操作,比如将代码段中超长的代码行自动换行。_correct_trans_format.pdf就是最终的翻译结果啦。
所以如果已经完成了pdf到markdown的解析步骤,在翻译的过程中,手动中断了翻译任务(或者产生未知的异常中断了翻译任务),
可以再次运行相同的命令,pdf解析这一步是不会再重复执行的,因为相关的markdown已经存在了。
而已经翻译过的段落,实际上已经保存在缓存文件中了,所以会直接从缓存文件读取,不会再去调api。
是否开启缓存也是配置在conf.yaml的大模型配置中的,如下只展示缓存配置
 
所以缓存文件名就是deepseek-chat.txt,它就在本项目的cache文件夹下:
其实通过这个文件来检查大模型的回答还挺方便。如果不想再用过去的缓存,可以自行删除这些文件。

六、更多翻译场景

比如
  • pdf有公式
  • pdf无书签
  • pdf页数过多导致内存不够
  • 翻译结果pdf有问题
  • 想使用命令行参数代替conf.yaml

七、MinerU cuda环境安装

如二。安装–2.安装MinerU中所说,可以参照MinerU官方的安装指南,也可以参照我这里的。其实MinerU的cuda环境稍微有点麻烦的是,它既要用到pytorch2.3.1又要用到paddlepaddle-gpu2.6.1,但这两者依赖的cuda版本还不一样。
另外,先完成二。安装里的步骤,然后再执行本节的步骤。
7.1Windows
1.安装显卡驱动
首先说明一下,cuda环境必然得是英伟达的显卡,如果你是amd显卡,那就不在本文讨论范围之内。MinerU也支持华为Ascend NPU,请参照MinerU官方文档 。
接下就是安装英伟达的显卡驱动了,其实一般情况下你多半已经安装过显卡驱动了(不然你显卡咋用来打游戏~~),但是我们得确认一下你的驱动版本是否过老(太老了可能不适用于cuda11.8),执行如下命令:
notion image
看右上角的CUDA Version,只要它大于等于11.8,就OK。注意,上图这里并不是说你安装了cuda12.6,而是你的显卡驱动最高支持cuda12.6。
如果你压根就没这个命令(nvidia-smi),那你多半没装显卡驱动,去英伟达官网装一个nvidia驱动 。
如果你CUDA Version小于11.8,那你还是得装一个新的驱动。
卸载pip安装的cpu版的pytorch
输入Y回车。
使用conda安装pytorch
如上命令安装的是cuda11.8版本的pytorch。
可能需要等待片刻,然后解析出所有要安装的包,输入Y回车。
可以检查一下pytorch安装好了没
notion image
上图的pytorch已经是cuda版的pytorch了。至于pytorch-cuda是啥,其实它就是conda里面的各种cuda文件的依赖打包。
可以执行如下命令查看安装好的cuda运行时:
notion image
cuda11.8运行时已经装好了,其实这并不是完整的cuda,它缺少nvcc编译器,不过只有要编译pytorch扩展时才会用到nvcc编译器。MinerU并不需要用到nvcc。
2.安装cudnn
可能需要等待片刻,然后解析出所有要安装的包,不过这次其实只有一个包,输入Y回车。
之所以只有一个包,是因为我们加了–no-deps,加它的原因是因为cudnn8.9依赖cuda-toolkit11.5,但我们已经有cuda11.8啦。其实安装的这个cudnn并不是给pytorch用的,pytorch自己就带上了cudnn的库文件。这里安装的是给paddlepaddle-gpu用的。
3.安装paddlepaddle-gpu
用pip安装,因为如果用conda安装的话,它会依赖cuda-toolkit11.7,而我们装的是pytorch-cuda11.8,它们依赖的cuda版本不一样,那就会装两个cuda进来,有可能会冲突。而cuda11.8一般是兼容基于cuda11.7开发的软件的。而用pip装paddlepaddle-gpu2.6.1的话,它并不会装cuda和cudnn相关的东西
一切安装完毕!
修改MinerU配置
接下来把MinerU的配置文件修改一下
C:\Users\你的用户名\magic-pdf.json
把device-mode的值由cpu改为cuda
4.测试
还是跑之前的用例:
notion image
显存大于等于8G,则会进行批量推理(文档布局识别、文字行识别),上图红线处即表示用cuda推理,红框里显示文档布局识别用时1.83秒,文字行检测用时1.3秒,这是7页的总时间。
下面对比一下cpu推理的耗时:
notion image
cpu推理耗时明显比gpu慢很多,单页就要3到4秒。
7.2Linux
在linux下,在执行如下命令的时候,就已经安装了cuda版的pytorch,并且把cuda12.1和cudnn8.9都装好了。
接下来只要安装paddlepaddle-gpu就行了
然后把MinerU配置文件修改一下就行了参照上面的windows一节中的修改MinerU配置。
不过其实pytorch装的是cuda12.1,paddlepaddle装的是cuda11.8,这两者分别对应不同的cudnn,都通过pip装进来了,如下图:
notion image
em…,不过我运行了一下,是没有问题的,cuda11.8和cuda12.1共存,可能关系不太大,因为cuda11和cuda12的相关库文件名不同,pytorch和paddle在加载cuda库文件时可以通过文件名区分
notion image
 
MinerU × CAMEL-AI:一键PDF提取,助力多智能体跨文档协作与深度分析【MinerU × LazyLLM】PDF 无损拆包,让 RAG 更懂你的文章!附 PDF 解析组件选型与 RAG 案例分享
Loading...