基于Flask和Celery为minerU搭建API服务
-
安装环境:
- 使用conda管理依赖:
conda env create -f environment.yml conda activate mineru
- 安装MinerU:
MinerU的安装比较复杂,根据系统新旧,是否需要cuda,安装方式不一样,可以参考这里安装
如果是Ubuntu22以上,且只在CPU部署,可以只简单地使用下面的命令:
pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com -i https://mirrors.aliyun.com/pypi/simple
- 检查mineru版本:
mineru版本应为0.9.3或以上
magic-pdf --version
- 使用conda管理依赖:
-
启动应用:
- 服务端
python app.py
- 消息队列
docker run -p 6379:6379 redis
- 在celery_tasks.py填写服务端与消息队列的地址:
app = Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0') flask_server_url ='http://localhost:5020/results_upload'
- 启动分布式celery worker:
--concurrency:单个worker本身可以并发执行任务,最大的并发执行数量 --max-tasks-per-child:worker在执行多少个任务后回收资源(理解不是很到位,大概是这个意思) 按需修改即可
celery -A celery_tasks worker --loglevel=info --concurrency=1 --max-tasks-per-child=5
- 服务端
-
主页接口
/
-
请求方式:
GET
-
描述:确认一下服务器是否搭建成功。
-
返回示例:
<html> <head><title>Welcome to DeepFigures API</title></head> <body> <h1>Welcome to DeepFigures API</h1> <p>This is a simple Flask application for processing PDF files containing figures.</p> <p>You can upload a PDF file, and the system will extract images and provide download links.</p> <p>To get started, use the /upload endpoint to upload a PDF.</p> </body> </html>
-
-
文件上传接口
/upload
-
请求方式:
POST
-
描述:上传一个 PDF 文件,系统会提取其中的图像,并返回图像的下载链接,以及图像对应的标题的.json文件。
-
请求参数:
file
:PDF 文件(必填)
-
返回示例:
{ "images": [ "/download/416a0eff-638c-41bc-aeb6-9e958c8838a9/86017a6aff5535bc2e188e14cc5f10ad6795938dbf546fbd7bdd51f1004ed2ec.jpg", "/download/416a0eff-638c-41bc-aeb6-9e958c8838a9/d2bc63122929dc94c3dac3442055728346c062c1f23588af8981026336d77357.jpg" ], "md": "/download/416a0eff-638c-41bc-aeb6-9e958c8838a9/416a0eff-638c-41bc-aeb6-9e958c8838a9.md" }
-
-
下载文件接口
/download/<file_id>/<filename>
-
请求方式:
GET
-
描述:根据文件 ID 和文件名提供下载链接。
-
请求参数:
file_id
:上传 PDF 时生成的唯一 IDfilename
:文件名(例如:figure1.jpg
,file.md
)
-
返回示例:
- 返回文件:图片数据或markdown文件
-
脚本 pdf_batch_process.py
用于批量处理 PDF 文件。
python pdf_batch_process.py
- 提取的 Markdown 文件保存在
md_
开头的文件夹中。 - 提取的图片保存在
images_
开头的文件夹中。