
主要功能
-
删除页眉、页脚、脚注、页码等元素,确保语义连贯 -
输出符合人类阅读顺序的文本,适用于单栏、多栏及复杂排版 -
保留原文档的结构,包括标题、段落、列表等 -
提取图像、图片描述、表格、表格标题及脚注 -
自动识别并转换文档中的公式为LaTeX格式 -
自动识别并转换文档中的表格为HTML格式 -
自动检测扫描版PDF和乱码PDF,并启用OCR功能 -
OCR支持84种语言的检测与识别 -
支持多种输出格式,如多模态与NLP的Markdown、按阅读顺序排序的JSON、含有丰富信息的中间格式等 -
支持多种可视化结果,包括layout可视化、span可视化等,便于高效确认输出效果与质检 -
支持纯CPU环境运行,并支持 GPU(CUDA)/NPU(CANN)/MPS 加速 -
兼容Windows、Linux和Mac平台
-
MinerU 2.0 是一次从架构到功能的全面重构与升级,带来了更简洁的设计、更强的性能以及更灵活的使用体验。 -
Python 包名从 magic-pdf
更改为mineru
,命令行工具也由magic-pdf
改为mineru
,请同步更新脚本与调用命令。 -
出于对系统模块化设计与生态一致性的考虑,MinerU 2.0 已不再内置 LibreOffice 文档转换模块。如需处理 Office 文档,建议通过独立部署的 LibreOffice 服务先行转换为 PDF 格式,再进行后续解析操作。 - 小模型,大能力
:模型参数不足 1B,却在解析精度上超越传统 72B 级别的视觉语言模型(VLM)。 - 多功能合一
:单模型覆盖多语言识别、手写识别、版面分析、表格解析、公式识别、阅读顺序排序等核心任务。 - 极致推理速度
:在单卡 NVIDIA 4090 上通过 sglang
加速,达到峰值吞吐量超过 10,000 token/s,轻松应对大规模文档处理需求。 - 在线体验
:您可在我们的huggingface demo上在线体验该模型: - 去除第三方依赖限制
:彻底移除对 pymupdf
的依赖,推动项目向更开放、合规的开源方向迈进。 - 开箱即用,配置便捷
:无需手动编辑 JSON 配置文件,绝大多数参数已支持命令行或 API 直接设置。 - 模型自动管理
:新增模型自动下载与更新机制,用户无需手动干预即可完成模型部署。 - 离线部署友好
:提供内置模型下载命令,支持完全断网环境下的部署需求。 - 代码结构精简
:移除数千行冗余代码,简化类继承逻辑,显著提升代码可读性与开发效率。 - 统一中间格式输出
:采用标准化的 middle_json
格式,兼容多数基于该格式的二次开发场景,确保生态业务无缝迁移。 - 全新架构
:MinerU 2.0 在代码结构和交互方式上进行了深度重构,显著提升了系统的易用性、可维护性与扩展能力。 - 全新模型
:MinerU 2.0 集成了我们最新研发的小参数量、高性能多模态文档解析模型,实现端到端的高速、高精度文档理解。 - 不兼容变更说明
:为提升整体架构合理性与长期可维护性,本版本包含部分不兼容的变更:
功能性上:
1. 传统的 PDF 解析库功能性上支持比较差,在 OCR, 提取表格内容,保留文本顺序,提取图片,保存为md格式上会缺少支持; 比如:pymypdf,pdfminer,pdfplumber, pypdf2;
2. 比较新,比较常用的 PDF 开源工具,*** deepdoc, MinerU*** 的 功能性支持比较好;
当前被使用度:
整体来说 deepdoc 和 MinerU 比较有名,很多 RAG 项目有在用:
1. 比如 Ragflow 用的deepdoc; 本身就是同一个开源团队做的工作;
2. 最近,MinerU 现在被很多项目接入了,在通用开源领域的衔接
势头不错;比如dify 联合开发了MinerU 的插件,便于使用;
目 处理流程 和 框架:
处理流程:
1. 预处理:
文档预处理。此阶段使用 PyMuPDF https://github.com/pymupdf/PyMuPDF读取 PDF 文件,
1. 过滤出无法处理的文件(例如加密文件)
2. 包括文档的可解析性(分为可解析 PDF 和扫描 PDF)
3. 语言类型检测(也可手输入);目前只支持 中英文;
4. 提取 PDF 元数据:如总页数、页面尺寸(宽度和高度)以及其他相关属性。
2. 文档内容解析:
此阶段采用 PDF-Extract-Kit,一个高质量的 PDF 文档提取算法库,来解析关键文档内容。
共调用5个模型:
1. 首先进行布局分析,包括布局和公式检测。
选用:doclayout_yolo;
2. 然后针对不同区域应用不同的识别器:
1. OCR 用于文本和标题:
2. 公式检测 和 公式识别 用于公式。分别调用: yolo_v8_mfd, unimernet_small(UniMERNet);
3. 表格识别 用于表格。模型: 调用了 rapidtable库下的 unitable;slanet_plus;老版本还支持:TableMaster和StructEqTable
3.文档内容后处理:
基于第二阶段的输出,本阶段移除无效区域,根据区域定位信息拼接内容,最终获取不同文档区域的定位、内容和排序信息。
后处理阶段主要解决内容排序问题。因为模型输出的文本、图像、表格和公式框之间可能存在重叠,以及通过 OCR 或 API 获取的文本行之间频繁重叠,对文本和元素进行排序是一个重大挑战;
1. 布局识别类型识别框重叠问题:
采用了 BBox 关系的解决方案包括以下方面:
1. 包含关系。移除图像和表格区域以及公式框内包含的框(公式和文本块)。
2. 部分重叠关系。部分重叠的文本框在垂直和水平方向上收缩以避免相互覆盖,确保最终位置和内容不受影响,从而促进后续排序操作。对于文本与表格/图像的部分重叠,通过暂时忽略图像和表格来确保文本的完整性。
2. 顺序问题:
排序基于人类阅读的顺序;上到下,左到右;
4. 格式转换:
根据文档后处理的结果,可以为后续使用生成用户所需的多种格式,例如 Markdown。
参考资料:
1.https://github.com/opendatalab/MinerU.git