MinerU 是上海人工智能实验室开源的一站式文档解析工具,基于视觉语言模型(VLM)架构,能够将 PDF、图片、Word、PPT、Excel 等任意格式的文档转换为结构化的 Markdown 输出。最新版本 MinerU2.5-Pro 仅用 1.2B 参数即在 OmniDocBench v1.6 基准上取得 95.69 分,大幅超越 GPT-4o、Qwen2.5-VL-72B 等数十倍参数规模的模型,稳居当前文档解析榜首。
MinerU 的核心能力包括:
MinerU 生态包含六大模块:CLI 命令行工具、SDK 多语言开发包、API 云端服务、RAG 知识检索、MCP 协议支持,以及 SKILL 跨语言知识 API。其中 RAG 模块与主流索引框架深度集成,LlamaIndex 正是其中最重要的伙伴之一。
LlamaIndex 是当前最流行的 LLM 数据框架之一,拥有超过 370 万周下载量。它提供数百个数据连接器(Readers),帮助开发者从 Notion、Slack、Google Drive 等各类数据源提取内容,转换为统一的 Document 对象,再经由索引和检索流程注入 LLM 上下文。
llama-index-readers-mineru 是 MinerU 官方维护的 LlamaIndex 连接器。它将 MinerU 的高精度文档解析能力无缝桥接到 LlamaIndex 生态——只需一行代码,即可将 PDF、DOC、PPT、图片等复杂文档转换为结构化的 Markdown,并立即投入 RAG 检索链路。
核心优势:
pip install llama-index-readers-mineru或使用 uv:
uv add llama-index-readers-minerufrom llama_index.readers.mineru import MinerUReader
reader = MinerUReader()
documents = reader.load_data("https://cdn-mineru.openxlab.org.cn/demo/example.pdf")
print(documents[0].text[:500])load_data() 返回一个 List[Document],每个 Document 的 .text 字段即为 MinerU 解析出的 Markdown 内容,可直接交给后续的索引流程。
特性 | Flash(默认) | Precision |
|---|---|---|
身份认证 | 免登录 | 需 API Token |
速度 | 极速 | 标准 |
文件大小上限 | 10 MB | 200 MB |
页数上限 | 20 页 | 600 页 |
支持格式 | PDF、图片、DOCX、PPTX、XLS、XLSX | PDF、图片、DOC、DOCX、PPT、PPTX、HTML |
注意:当前集成返回内容均为 Markdown 格式。如需图片/JSON/DOCX/HTML/LaTeX 等多元输出,请使用 MinerU Python SDK。
from llama_index.readers.mineru import MinerUReader
reader = MinerUReader()
documents = reader.load_data("/path/to/local.pdf")Token 可在 MinerU API 管理平台 免费申请。
from llama_index.readers.mineru import MinerUReader
reader = MinerUReader(
mode="precision",
token="your-api-token", # 或设置环境变量 MINERU_TOKEN
language="en",
pages="1-20",
)
documents = reader.load_data("/path/to/scanned_paper.pdf")from llama_index.readers.mineru import MinerUReader
reader = MinerUReader()
documents = reader.load_data(
[
"/path/to/local_a.pdf",
"/path/to/local_b.docx",
"https://cdn-mineru.openxlab.org.cn/demo/example.pdf",
]
)
for doc in documents:
print(doc.metadata["source"], "-", doc.text[:100])当 split_pages=True 时,每页 PDF 解析为一个独立的 Document,适合需要 page-level 检索粒度的 RAG 场景:
reader = MinerUReader(split_pages=True, pages="1-5")
documents = reader.load_data("/path/to/paper.pdf")
for doc in documents:
print(f"Page {doc.metadata['page']}: {doc.text[:100]}...")通过 extra_info 向每个 Document 的 metadata 中注入自定义字段(如项目名、租户标识、数据来源类型),不影响解析行为和输出格式:
from llama_index.readers.mineru import MinerUReader
reader = MinerUReader()
documents = reader.load_data(
"/path/to/paper.pdf",
extra_info={
"project": "paper-rag",
"tenant": "team-a",
"source_type": "research_pdf",
},
)
print(documents[0].metadata["project"]) # paper-rag
print(documents[0].metadata["source_type"]) # research_pdffrom llama_index.readers.mineru import MinerUReader
from llama_index.core import VectorStoreIndex
reader = MinerUReader()
documents = reader.load_data("/path/to/paper.pdf")
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("Summarize the key findings")
print(response)import os
from llama_index.readers.mineru import MinerUReader
from llama_index.core import VectorStoreIndex
os.environ["MINERU_TOKEN"] = "your-token" # 或直接传入 token 参数
reader = MinerUReader(mode="precision")
documents = reader.load_data("/path/to/manual.pdf")
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("How to configure OCR settings?")
print(response)from llama_index.readers.mineru import MinerUReader
from llama_index.core import VectorStoreIndex
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
# 1. 加载文档
loader = MinerUReader(mode="precision", token="your-token")
docs = loader.load()
# 2. 文本切分
splitter = RecursiveCharacterTextSplitter(chunk_size=1200, chunk_overlap=200)
chunks = splitter.split_documents(docs)
# 3. 向量存储
vs = FAISS.from_documents(chunks, OpenAIEmbeddings())
# 4. 检索
results = vs.similarity_search("What are the core configuration steps?", k=3)
for r in results:
print(r.page_content[:200])参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
|
|
| 解析模式: |
|
|
| MinerU API Token。precision 模式必填,也可通过 |
|
|
| 文档语言代码,如 |
|
|
| 页码范围,如 |
|
|
| 单文件最大等待时间(秒) |
|
|
| PDF 是否按页拆分为独立 Document |
|
|
| 是否强制启用 OCR |
|
|
| 是否启用公式识别 |
|
|
| 是否启用表格识别 |
参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
|
| — | 单个或多个文件路径/URL |
|
|
| 自定义 metadata,合并到每个 Document.metadata 中 |
每个返回的 Document 包含以下字段:
字段 | 说明 |
|---|---|
| MinerU 解析出的 Markdown 内容 |
| 原始文件路径或 URL |
| 页码(仅 |
| MinerU 返回的原始文件名 |
| 固定为 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。