Type: entity
Confidence: 0.70
Created: 2026-04-16
Updated: 2026-04-18
Tags: 文档解析PDF处理开源工具AI文档处理

MinerU

概述

MinerU(项目名 magic-pdf)是上海人工智能实验室开源的高质量文档解析工具,专为学术论文、技术报告、教材等复杂 PDF 的结构化提取而设计。Apache-2.0 许可。

关键内容

核心设计目标

目标 具体含义
高保真还原 公式转 LaTeX,表格转 Markdown 表格,图注保留
**阅读顺序重建</td> <td>阅读顺序正确**
格式无关 支持文字型 PDF 和扫描件(OCR)两种管道
可扩展输出 导出 Markdown、JSON(带 bbox 坐标)、多模态格式
工业级鲁棒性 能处理数千页的大型 PDF,不崩溃

七层流水线架构

MinerU 的核心处理逻辑是一条串行流水线,按七个阶段逐层处理:

  1. PDF 类型判断 & 后端选择(TextBased / OCRBased / MixedBased)
  2. 底层 PDF 解析PyMuPDF 提取原始 Span/Block + 页面渲染为图像)
  3. 文档布局检测DocLayout-YOLO / LayoutLMv3 → 检测文本区/图/表/公式框)
  4. 内容专项识别(OCR/PaddleOCR公式识别/UniMERNet表格识别/TableMaster
  5. 内容块分类与属性标注(title / text / figure / table / formula)
  6. 阅读顺序排序(基于坐标与分栏分析,重建人类阅读序列)
  7. Markdown / JSON 内容生成(将有序内容块序列化为目标格式)

三条核心管道

核心数据结构:PDFPageInfo

贯穿整个管道的核心数据结构,包含 page_no、width、height、raw_spans、layout_bboxes、para_blocks、table_blocks、formula_blocks、figure_blocks、sorted_blocks 等字段。每一层往其中填充不同字段,最终 sorted_blocks 就是生成 Markdown 的直接来源。

内容生成器(第 7 层)

经过前六层处理后,MinerU 拥有有序的内容块列表,每个块包含 type、content、bbox、page_no 及关联的图片/表格结构。内容生成器将这些块序列化为人类可读、机器可用的格式。

支持的输出格式: - Markdown.md):主要格式,可直接用于 RAG/LLM 输入 - JSON.json):完整结构化数据,带坐标信息 - 内容目录.md 附录):自动提取的标题层级树 - 图片资源images/ 目录):提取的嵌入图像

块类型到 Markdown 的映射: | 块类型 | Markdown 输出 | |--------|-------------| | title | #~#### 标题(由标题层级推断决定) | | text | 直接输出段落文字 | | equation | $$...$$ 独立公式块 | | table | Markdown 表格或 HTML(复杂跨单元格时) | | figure | ![caption](path) 图片引用 + 图注 | | header/footer | 跳过 | | reference | 无序列表 - |

行内格式处理:行内公式通过 {{FORMULA:N}} 占位符替换为 $...$;粗体/斜体/等宽字体从 PyMuPDF 的字体信息转换为 **/*/` 标记。

跨页段落合并:检测前页末尾是否以完整句子结束(句号/问号/叹号),且当前页开头是否为小写字母或中文字符,若是则移除换行直接拼接。

图片去重:通过 MD5 哈希前 8 位作为文件名,避免重复保存相同图片。

标题层级推断:通过字号相对大小(size_ratio = font_size / body_font_size)推断 H1~H4,同时检测编号模式(如 Section 1.2.3)辅助判断。

命令行与 Python API

magic-pdf -p paper.pdf -o output_dir/           # 基本使用
magic-pdf -p scanned.pdf -o output_dir/ --backend ocr  # 强制 OCR
magic-pdf -p papers/ -o output_dir/ --workers 4  # 批量处理

Python API 通过 UNIPipe 实现 auto 模式,自动判断文字型/扫描件,依次调用 pipe_classify()pipe_analyze()pipe_parse()

局限性

与同类工具对比

特性 MinerU pypdf/pdfminer Marker Nougat
文字型 PDF ✅ 高质量 ✅ 但乱序
扫描件 ✅ OCR管道
公式 → LaTeX UniMERNet ⚠️ 有限
表格结构 TableMaster ⚠️
阅读顺序重建</td> <td>阅读顺序 ✅ 多栏支持
开源 ✅ Apache-2.0 ✅ GPL
中文支持 ✅ 极佳 ⚠️ ⚠️

最大差异化优势:中文文档支持PaddleOCR 中文能力)+ 公式/表格专项识别的组合。

项目代码结构

magic-pdf/
├── magic_pdf/
│   ├── pipe/                    # 管道入口(TextPipe, OCRPipe, UnionPipe)
│   ├── pdf_parse_union_core.py  # 核心调度器
│   ├── model/                   # 模型加载与推理
│   ├── pre_proc/                # 预处理
│   ├── post_proc/               # 后处理
│   ├── para/                    # 段落重建
│   └── operators/               # 内容块操作算子

来源

相关