MinerU + LangChain 实战:从 PDF 解析到 AI 问答全流程

适用场景 :RAG 系统构建、文档智能问答、大模型语料预处理、企业知识库搭建技术栈 :MinerU v3.x + LangChain + ChromaDB + OpenAI难度:⭐⭐☆ 中级


一、问题:RAG 系统的隐形瓶颈

很多人搭 RAG 系统时,把大量精力放在向量检索调优、prompt 工程上,却忽略了一个更基础的问题:文档解析质量

真实场景里,待处理的文档往往是这样的:

  • 学术论文:双栏排版 + 大量数学公式 + 嵌套表格
  • 财务报告:复杂表格 + 图表 + 多级标题
  • 技术手册:代码块 + 混排图文 + 交叉引用

用 LangChain 自带的 PyPDFLoader 读这类文档,常见的结果是:

bash 复制代码
表格内容被读成乱序文字片段
公式变成 "f(x) = ∫..." 这类破碎字符
双栏文档的阅读顺序全乱
扫描件直接变成空内容

向量化的是垃圾,检索到的也是垃圾。准确率低不是检索模型的问题,是数据管道在最上游就断了。


二、MinerU 是什么

基本信息

  • 机构:上海人工智能实验室 OpenDataLab
  • 开源协议:AGPL-3.0
  • GitHub:github.com/opendatalab/MinerU
  • GitHub Stars:60k+(截至 2026 年 4 月)
  • 当前版本:v3.x / MinerU2.5 模型

背景

MinerU 起源于 InternLM 大模型预训练项目。在构建训练语料时,团队发现学术论文、技术文档等 PDF 的解析质量直接影响预训练数据质量,因此专门开发了这套工具,后来作为独立项目开源。


三、技术架构:为什么比传统方案准确

传统 PDF 解析工具(PyMuPDF、PDFMiner、Tesseract)的路径是:

bash 复制代码
PDF → 提取文字流 → 拼接 → 输出

文字提取是对的,但结构关系全丢了------哪个文字属于哪个表格,哪行是标题,哪段是正文,工具不知道。

MinerU 的路径不同:

关键在 VLM 后端:MinerU2.5 是 1.2B 参数的视觉语言模型,在 OmniDocBench 基准测试上的准确率超过多个 72B 级别的通用大模型。小参数量 + 专项训练,在文档解析这个具体任务上做到了精准。


四、支持能力

|--------------|----------|--------------------|
| 内容类型 | 输出格式 | 说明 |
| 普通文本 | Markdown | 保留标题层级、段落、列表、阅读顺序 |
| 表格 | HTML | 结构完整,支持跨页表格合并 |
| 数学公式 | LaTeX | 行内 / 块级公式均支持 |
| 图片 | 保存链接 | 提取图片文件 + 生成文字描述 |
| 扫描件 / 图片 PDF | Markdown | 自动走 OCR,支持 109 种语言 |
| 旋转版面 | Markdown | 支持最高 270° 旋转表格识别 |

支持输入格式:PDF、Word (.docx)、PowerPoint (.pptx)、图片 (JPG/PNG)、网页


五、快速开始

5.1 申请 Token(免费)

云端 API 无需本地部署,Token 在官方平台免费申请:

mineru.net/apiManage/token

申请后设置环境变量:

bash 复制代码
export MINERU_TOKEN="your-token-here"

单文件限制:200MB / 200 页。批量处理最多 200 个文件/次。支持异步任务轮询,大文件不阻塞主流程。

5.2 安装依赖

bash 复制代码
pip install langchain-mineru langchain-openai langchain-community chromadb

验证安装:

bash 复制代码
python -c "from langchain_mineru import MinerULoader; print('OK')"

六、完整代码:PDF → LangChain 问答

bash 复制代码
import os
from langchain_mineru import MinerULoader
from langchain.text_splitter import MarkdownHeaderTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain.chains import RetrievalQA
from langchain.schema import Document

# ── Step 1: 文档解析 ──────────────────────────────────────
# mode="precision"  → VLM 精度模式(需 Token,精度高)
# mode="speed"      → pipeline 模式(速度快,适合简单文档)
# Token 自动从环境变量 MINERU_TOKEN 读取,无需显式传入

loader = MinerULoader(
    source="your_document.pdf",
    mode="precision"
)
docs = loader.load()
print(f"[1/4] 解析完成,共 {len(docs)} 个文档块")

# ── Step 2: 分块 ──────────────────────────────────────────
# MinerU 输出 Markdown 标题层级完整,按标题切块语义更好
# 比按字符数切块,能保留完整的论证段落

splitter = MarkdownHeaderTextSplitter(
    headers_to_split_on=[
        ("#",   "section"),
        ("##",  "subsection"),
        ("###", "subsubsection"),
    ]
)

chunks = []
for doc in docs:
    splits = splitter.split_text(doc.page_content)
    for s in splits:
        chunks.append(Document(
            page_content=s.page_content,
            metadata={**doc.metadata, **s.metadata}
        ))

print(f"[2/4] 分块完成,共 {len(chunks)} 块")

# ── Step 3: 向量化 & 持久化存储 ───────────────────────────
embeddings = OpenAIEmbeddings()   # 可替换为本地 embedding 模型

vectorstore = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory="./chroma_db"   # 持久化,下次直接加载
)
print(f"[3/4] 向量库构建完成")

# ── Step 4: 构建问答链 ────────────────────────────────────
llm = ChatOpenAI(model="gpt-4o", temperature=0)

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore.as_retriever(
        search_type="mmr",                        # MMR 去重,避免检索重复片段
        search_kwargs={"k": 6, "fetch_k": 20}
    ),
    return_source_documents=True
)
print(f"[4/4] 问答链就绪\n")

# ── Step 5: 测试问答 ──────────────────────────────────────
questions = [
    "这份文档的核心内容是什么?",
    "文档中提到了哪些关键数据或结论?",
    "有哪些值得注意的限制条件?"
]

for q in questions:
    result = qa_chain({"query": q})
    print(f"Q: {q}")
    print(f"A: {result['result']}")
    sources = [d.metadata.get("source", "unknown") for d in result["source_documents"][:2]]
    print(f"来源章节: {sources}\n{'-'*60}")

七、MinerU 生态

产品形态

|-------------------|------------------------------------------|-----------------------------------|
| 产品 | 链接 | 说明 |
| 在线 Demo | mineru.net/OpenSourceTools/Extractor | 文档/网页解析在线体验,无需安装 |
| 在线 API 文档 | mineru.net/apiManage/docs | RESTful API,支持文档/网页解析,Token 免费申请 |
| 桌面客户端 | mineru.net/client | 免费桌面应用,支持 Windows / macOS / Linux |
| Hugging Face Demo | huggingface.co/spaces/opendatalab/MinerU | 无需安装,在线试用完整功能 |

SDK

bash 复制代码
# Python
pip install mineru-open-sdk

# Go
go get github.com/opendatalab/MinerU-Ecosystem/sdk/go@latest

# TypeScript / Node.js
npm install mineru-open-sdk

SDK 仓库:github.com/opendatalab/MinerU-Ecosystem

AI 框架集成

|------------|------------------------------------------|----------------------------------------|
| 集成组件 | 安装 / 链接 | 说明 |
| LangChain | pip install langchain-mineru | 官方 Document Loader,接入 LangChain RAG 流程 |
| LlamaIndex | pip install llama-index-readers-mineru | 官方 Reader,接入 LlamaIndex 知识库索引 |
| MCP Server | npm install mineru-mcp | 在 Claude / Cursor 中直接调用 MinerU 解析 |
| n8n 节点 | npm install n8n-nodes-mineru | 在 n8n 自动化工作流中集成文档解析能力 |

低代码 / 应用平台集成

|---------------|-----------------------------------------------|-----------------------------------|
| 平台 | 链接 | 说明 |
| Dify | marketplace.dify.ai/plugins/langgenius/mineru | 官方插件,文档检索与增强生成 |
| Coze | coze.cn/store/plugin/7527957359730360354 | 官方插件,在 Coze 平台进行文档解析 |
| FastGPT | opendatalab.github.io/.../FastGPT | 在 FastGPT 中集成 MinerU,提升信息抽取能力 |
| RagFlow | opendatalab.github.io/.../RagFlow | 在 RagFlow 中使用 MinerU 进行文档解析和数据结构化 |
| Cherry Studio | opendatalab.github.io/.../Cherry_Studio | Cherry Studio 集成,提供文档处理选项 |

八、相关链接


版本说明:本文基于 MinerU v3.x、langchain-mineru 最新版本编写。Token 免费申请策略和 API 限额以官方文档为准。

相关推荐
赋创小助手2 小时前
RTX PRO 6000 vs RTX 5090:从一组230B模型测试数据谈企业级推理选型
服务器·人工智能·科技·深度学习·自然语言处理
南风微微吹2 小时前
2026年初级会计师考试历年真题及答案解析PDF电子版(2021-2025年)
pdf
南风微微吹2 小时前
2026年初级社会工作者历年真题及答案解析PDF电子版(2010-2025年)
pdf·社会工作者
不才小强2 小时前
深度学习模型部署实战指南
人工智能·深度学习
Fabarta技术团队2 小时前
务实、灵活——枫清科技财务单证智能审核方案 以AI自学习驱动审核提效与规则进化
人工智能·科技·学习
cczixun2 小时前
AI落地深水区:从技术狂欢到产业重构的价值革命
人工智能·科技
奇思智算2 小时前
2026年AI算力租用平台深度横评:阿里云_腾讯云_AutoDL_智星云谁更适合你?
人工智能·阿里云·云计算·腾讯云·gpu算力租用
十六年开源服务商2 小时前
2026开源CMS网站优化技巧深度指南
开源
森诺Alyson2 小时前
前沿技术借鉴研讨-2026.4.16(视觉语言模型/医学影像文本多模态对齐)
论文阅读·人工智能·经验分享·计算机视觉·语言模型