1、MinerU简介
MinerU 2带来了诸多重要更新,主要涵盖架构、性能、体验、模型、兼容性等方面。
在架构上,深度重构代码组织与交互方式,去除对pymupdf的依赖,无需手动编辑JSON配置文件,新增模型自动下载与更新机制。性能优化显著,大幅提升特定分辨率文档的预处理速度、pipeline后端批量处理少量页数文档时的后处理速度以及layout分析速度,在满足一定配置的设备上整体解析速度提升超50%。
体验上,内置fastapi service和gradio webui,适配sglang 0.4.8版本降低显存要求,支持参数透传和基于配置文件的功能扩展。集成了小参数量、高性能多模态文档解析模型,解析精度超越传统72B级别的VLM,单卡NVIDIA 4090上推理速度峰值吞吐量超10,000 token/s。
此外,还解决了一些兼容性问题,支持Python 3.13等,同时优化了多方面的解析效果和在线demo功能。
https://gitee.com/myhloli/MinerU
2、MinerU私有化部署
软硬件环境准备
在开始安装之前,需要确保你的系统满足以下软硬件要求:
解析后端 | pipeline | vlm-transformers | vlm-sglang |
操作系统 | Linux/Windows/macOS | Linux/ Windows | Linux/ Windows (via WSL2) |
CPU 推理支持 | ✅ | ❌ | ❌ |
GPU 要求 | Turing 及以后架构,6G 显存以上或 Apple Silicon | Turing 及以后架构,8G 显存以上 | Turing 及以后架构,8G 显存以上 |
内存要求 | 最低 16G 以上,推荐 32G 以上 | 最低 16G 以上,推荐 32G 以上 | 最低 16G 以上,推荐 32G 以上 |
磁盘空间要求 | 20G 以上,推荐使用 SSD | 20G 以上,推荐使用 SSD | 20G 以上,推荐使用 SSD |
Python 版本 | 3.10 - 3.13 | 3.10 - 3.13 | 3.10 - 3.13 |
安装依赖包
提示:mineru[core] 包含除 sglang 加速外的所有核心功能,兼容 Windows / Linux / macOS 系统,适合绝大多数用户。如果你有使用 sglang 加速 VLM 模型推理,或是在边缘设备安装轻量版 client 端等需求,可以参考文档扩展模块安装指南。
使用本地模型
模型权重下载
方法一:从 ModelScope下载模型
将MinerU代码clone到本地,使用python脚本 从ModelScope下载模型文件
windows的用户目录为 "C:\Users\用户名", linux用户目录为 "/home/用户名", macOS用户目录为 "/Users/用户名"
- 下载完成后,模型路径会在当前终端窗口输出,并自动写入用户目录下的 mineru.json。
- 您也可以通过将配置模板文件复制到用户目录下并重命名为 mineru.json 来创建配置文件。
- 模型下载到本地后,您可以自由移动模型文件夹到其他位置,同时需要在 mineru.json 中更新模型路径。
- 如您将模型文件夹部署到其他服务器上,请确保将 mineru.json文件一同移动到新设备的用户目录中并正确配置模型路径。
- 如您需要更新模型文件,可以再次运行 mineru-models-download 命令,模型更新暂不支持自定义路径,如您没有移动本地模型文件夹,模型文件会增量更新;如您移动了模型文件夹,模型文件会重新下载到默认位置并更新mineru.json。
3、解析代码
process_pdf是核心解析函数,主要功能包括:
- 自动识别 PDF 类型(普通文本 PDF 或扫描版 PDF),支持多种文件格式,包括 .pdf、.png、.jpeg、.jpg 等,可自动将图片文件转换为 PDF 进行处理。
- 提取文本内容和图片资源,能够根据设置的起始和结束页码进行精准解析,支持多语言识别,可提高 OCR 识别的准确性。
- 生成 Markdown 格式的输出,支持 LaTeX 公式和表格的解析与输出,能够根据不同的后端和模式进行灵活处理。
- 可选生成可视化分析结果,提供布局和文本块的可视化分析结果,方便用户进行调试和检查。
参数 | 类型 | 默认值 | 描述 |
pdf_file_name | str | 无 | 要解析的 PDF 文件路径,支持 .pdf、.png、.jpeg、.jpg 等格式 |
output_dir | str | "output" | 输出文件的主目录,程序会在该目录下为每个处理的文件创建单独的子目录 |
image_subdir | str | "images" | 存放图片的子目录名称,位于每个文件的子目录下 |
simple_output | bool | True | 是否使用简单输出模式(True 时只输出 Markdown 和内容列表),False 时输出所有解析结果,包括可视化分析结果、中间 JSON 文件和模型输出文件 |
backend | str | "pipeline" | 解析 PDF 的后端,可选值包括 pipeline、vlm-transformers、vlm-sglang-engine、vlm-sglang-client。pipeline 更通用,vlm-xxx 系列则提供了更快的处理速度 |
method | str | "auto" | 解析 PDF 的方法,可选值包括 auto、txt、ocr。auto 会自动根据文件类型确定解析方法,txt 使用文本提取方法,ocr 使用 OCR 方法处理图像型 PDF。仅适用于 pipeline 后端 |
lang | str | "ch" | 输入 PDF 中的语言,可选值包括 ch、ch_server、ch_lite、en、korean、japan、chinese_cht、ta、te、ka 等。输入已知的语言可提高 OCR 识别的准确性,仅适用于 pipeline 后端 |
server_url | str | None | 当后端为 vlm-sglang-client 时需要指定的服务器 URL,例如 http://127.0.0.1:30000 |
start_page_id | int | 0 | 解析的起始页码,从 0 开始计数 |
end_page_id | int | None | 解析的结束页码,从 0 开始计数,默认为 None,表示解析到文档末尾 |
输出文件结构:
4、API封装
API文档
1. API 端点
- URL: http://localhost:6601/process_file
- 方法: POST
- 内容类型: multipart/form-data
2. 请求参数
参数 | 类型 | 描述 |
file | 文件 | 要解析的文件,支持 .pdf、.png、.jpeg、.jpg 等格式 |
output_dir | 字符串 | 输出目录,默认为 "output" |
image_subdir | 字符串 | 图片子目录,默认为 "images" |
simple_output | 布尔值 | 是否使用简单输出,默认为 False |
backend | 字符串 | 解析 PDF 的后端,默认为 "pipeline" |
method | 字符串 | 解析 PDF 的方法,默认为 "auto" |
lang | 字符串 | 文档语言,默认为 "ch" |
server_url | 字符串 | 服务器 URL,默认为 None |
start_page_id | 整数 | 开始解析的页码,默认为 0 |
end_page_id | 整数 | 结束解析的页码,默认为 None |
3. 响应
- 成功: 返回包含所有解析结果的 ZIP 文件
- 失败: 返回 JSON 格式的错误信息
4. 状态码
状态码 | 描述 |
200 | 成功处理并返回 ZIP 文件 |
400 | 请求参数错误,如未提供文件、文件类型不支持等 |
500 | 服务器内部错误 |
5、调用示例代码
最后提供了三种调用示例,可以根据需要选择使用: