☰
MinerU调用方式与底层逻辑解析
2026/10/14 14:38:59 网站建设 项目流程

1. 什么是 MinerU?

在大模型应用开发中,RAG(Retrieval-Augmented Generation,检索增强生成)已经成为企业知识库问答的重要技术方案。

一个完整的 RAG 流程通常包括:

文档数据 ↓ 文档解析 ↓ 文本切片 ↓ Embedding向量化 ↓ 向量数据库存储 ↓ 用户检索 ↓ 大模型生成答案

其中,文档解析是整个流程的第一步,也是影响后续检索效果的重要环节。

MinerU 就是用于解决这一问题的开源文档解析工具。

简单来说:

MinerU 是一个面向大模型应用场景的 PDF 文档解析工具,可以将复杂 PDF 转换为结构化 Markdown 或 JSON 数据,为后续 RAG 知识库构建提供高质量数据。

传统 PDF 解析工具通常只能简单提取文字,但面对论文、报告、技术文档等复杂 PDF 时,会出现:

  • 阅读顺序混乱

  • 图片丢失

  • 表格结构破坏

  • 公式无法识别

  • 页眉页脚干扰

而 MinerU 的目标就是让 PDF 变成大模型能够理解的知识数据。


2. MinerU在RAG中的位置

在实际的大模型应用中,MinerU通常处于知识库构建阶段:

PDF文件 | ↓ MinerU文档解析 | ↓ Markdown结构化文本 | ↓ 文本切片Chunk | ↓ Embedding模型 | ↓ Milvus等向量数据库 | ↓ Retriever检索 | ↓ LLM生成回答

可以看到:

  • MinerU负责“理解文档结构”

  • Embedding负责“理解文本语义”

  • 向量数据库负责“快速检索”

三者作用不同。


3. MinerU调用方式

MinerU主要有三种使用方式:

3.1 命令行调用

这是最简单也是最常见的方式。

安装:

pip install magic-pdf

查看版本:

magic-pdf --version

准备一个PDF:

data/ └── test.pdf

执行解析:

magic-pdf -p data/test.pdf -o output

参数说明:

-p: 指定输入PDF文件 -o: 指定输出目录

执行完成后:

output | ├── test.md ├── images └── middle.json

其中:

Markdown文件

主要用于RAG:

例如:

# 运动康复指南 ## 膝关节损伤注意事项 避免高强度训练...

相比普通文本,Markdown保留了:

  • 标题层级

  • 段落关系

  • 表格结构

更方便后续切片。


images目录

保存PDF中的图片资源。

例如:

images/ | ├── image1.png └── image2.png

如果后续做多模态RAG,可以继续处理这些图片。


JSON文件

保存更加详细的结构化信息。

例如:

{ "type":"text", "content":"运动注意事项" }

方便程序进一步处理。


4. Python代码调用

如果希望把 MinerU 集成到自己的应用中,可以通过 Python 调用。

基本流程:

读取PDF ↓ 创建数据集 ↓ 执行解析Pipeline ↓ 生成Markdown

示例:

from magic_pdf.data.data_reader_writer import FileBasedDataReader from magic_pdf.data.dataset import PymuDocDataset pdf_path = "test.pdf" reader = FileBasedDataReader("") pdf_bytes = reader.read(pdf_path) dataset = PymuDocDataset(pdf_bytes) result = dataset.apply( dataset.get_pipe() ) markdown = result.get_markdown() print(markdown)

得到结构化文本后:

chunks = text_splitter.split_text(markdown) vectors = embedding.embed_documents(chunks) milvus.insert(vectors)

即可进入RAG后续流程。


5. 企业项目中的调用方式

在实际生产环境中,一般不会让业务服务直接调用 MinerU。

更常见的是:

用户上传PDF | ↓ 文件存储服务 (MinIO/S3) | ↓ 文档解析服务 | ↓ MinerU | ↓ Markdown/JSON结果 | ↓ 知识库构建流程

例如:

后端使用 Spring Boot:

Spring Boot | | HTTP请求 | ↓ FastAPI + MinerU

原因:

  1. MinerU基于Python生态

  2. AI处理任务和业务服务解耦

  3. 方便扩容和维护


6. MinerU底层处理流程

MinerU并不是简单地读取PDF文字,而是包含多个处理阶段。

6.1 PDF解析

首先读取PDF文件:

PDF | ↓ 页面信息

获取:

  • 页面大小

  • 文本对象

  • 图片对象

  • 坐标信息


6.2 页面布局分析(Layout Analysis)

这是MinerU的重要能力。

PDF本质上不是一个有语义结构的文档。

例如:

人看到:

标题 图片 文字 表格

但是PDF内部可能只是:

文字块A 坐标(100,200) 文字块B 坐标(500,300)

所以需要布局分析模型判断:

这个区域是标题 这个区域是正文 这个区域是表格 这个区域是图片

形成文档结构。


6.3 OCR文字识别

如果PDF是扫描图片:

扫描PDF ↓ 图片 ↓ OCR ↓ 文字

MinerU通过OCR模型识别图片中的文字。

例如:

图片:

一个运动康复注意事项有关的图片

转换:

运动康复注意事项

6.4 表格解析

普通PDF解析:

姓名 年龄 性别 张三 20 男

表格关系丢失。

MinerU会尝试恢复:

|姓名|年龄|性别| |-|-|-| |张三|20|男|

这样LLM更容易理解。


6.5 公式解析

对于论文中的数学公式:

PDF:

E=mc²

解析后:

E=mc^2

保留公式语义。


6.6 输出结构化文档

最终生成:

PDF ↓ 文本 图片 表格 公式 ↓ Markdown/JSON

供后续RAG使用。


7. MinerU为什么适合RAG?

RAG效果不仅取决于模型,也取决于知识库质量。

如果解析质量差:

PDF ↓ 错误文本 ↓ 错误Embedding ↓ 错误检索 ↓ 错误回答

MinerU通过:

  • 保留标题结构

  • 保留表格关系

  • 提取图片信息

  • 处理公式

  • 减少无效文本

提高知识库质量。


8. MinerU与Embedding的区别

很多初学者容易混淆。

MinerU:

解决:

文档怎么变成结构化内容?

例如:

PDF ↓ Markdown

Embedding:

解决:

文本怎么变成可以计算相似度的向量?

例如:

运动损伤注意事项 ↓ [0.23,0.56,-0.12...]

二者关系:

PDF | MinerU | 文本 | Embedding | 向量数据库

9. 面试回答模板

如果面试官问:

“你们RAG里面为什么使用MinerU?”

可以回答:

在知识库构建阶段,我们使用MinerU对PDF等非结构化文档进行解析。相比传统PDF文本提取工具,MinerU能够识别文档布局,同时保留标题、表格、公式等结构信息,并输出Markdown格式。之后我们基于解析结果进行文本切片和Embedding向量化,将处理后的知识存入向量数据库,提高后续检索的准确性。


10. 总结

MinerU本质上是:

一个面向大模型应用的智能文档解析框架。

它解决的问题:

复杂PDF ↓ 结构化知识 ↓ RAG可用数据

核心流程:

PDF输入 ↓ 页面解析 ↓ 布局分析 ↓ OCR识别 ↓ 表格/公式处理 ↓ Markdown输出 ↓ 进入RAG流程

在大模型应用开发中,MinerU属于知识库构建阶段的数据预处理组件,是连接原始文档和大模型之间的重要桥梁。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询