news 2026/4/21 1:22:13

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MinerU + LangChain 实战:从 PDF 解析到 AI 问答全流程

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


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

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

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

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

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

表格内容被读成乱序文字片段 公式变成"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)的路径是:

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

申请后设置环境变量:

exportMINERU_TOKEN="your-token-here"

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

5.2 安装依赖

pipinstalllangchain-mineru langchain-openai langchain-community chromadb

验证安装:

python-c"from langchain_mineru import MinerULoader; print('OK')"

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

importos from langchain_mineruimportMinerULoader from langchain.text_splitterimportMarkdownHeaderTextSplitter from langchain_community.vectorstoresimportChroma from langchain_openaiimportOpenAIEmbeddings, ChatOpenAI from langchain.chainsimportRetrievalQA from langchain.schemaimportDocument# ── 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=[]fordocindocs: splits=splitter.split_text(doc.page_content)forsinsplits: 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=["这份文档的核心内容是什么?","文档中提到了哪些关键数据或结论?","有哪些值得注意的限制条件?"]forqinquestions: result=qa_chain({"query":q})print(f"Q: {q}")print(f"A: {result['result']}")sources=[d.metadata.get("source","unknown")fordinresult["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

# Pythonpipinstallmineru-open-sdk# Gogo get github.com/opendatalab/MinerU-Ecosystem/sdk/go@latest# TypeScript / Node.jsnpminstallmineru-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 集成,提供文档处理选项

八、相关链接

  • GitHub:github.com/opendatalab/MinerU
  • Token 申请(免费):mineru.net/apiManage/token
  • 官方生态仓库:github.com/opendatalab/MinerU-Ecosystem
  • 在线体验:mineru.net/OpenSourceTools/Extractor
  • OmniDocBench 评测:github.com/opendatalab/OmniDocBench

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 1:18:22

JavaScript异步编程怎么入门和实践?

JavaScript 异步编程 异步的概念 异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。 在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是…

作者头像 李华
网站建设 2026/4/21 1:17:32

旋转导向(RSS)可能是钻井领域最重要的技术

借助旋转导向系统(RSS)技术,能够以极低的风险钻探更为复杂的全域井眼轨迹。结合更高的钻井效率,最终结果是显著降低单井成本。RSS技术能够适应最广泛的钻井环境,同时保证最高质量的井眼质量。推靠式RSS通过改变钻头上的…

作者头像 李华
网站建设 2026/4/21 1:16:18

基于YOLO26的六类犬种识别检测系统:mAP50达到0.895,推理速度2.4ms/张(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)

摘要 本系统基于YOLO26目标检测算法,构建了一个面向六类常见犬种的智能识别检测模型。研究涵盖Beagle、bullDog、corgi、goldenRetriever、husky和pomeranian六个犬种类别,总数据集规模为1257张标注图像,其中训练集880张、验证集251张、测试…

作者头像 李华
网站建设 2026/4/21 1:10:54

彩色标签打印机-RFID标签

重塑半导体彩色标签打印新模式半导体企业传统标签打印多依赖预印标 套打,不仅需提前备货大量预印标签,占用库存成本,遇到客户规格变更、小批量多批次生产时,易造成标签浪费,且彩色标识只能依赖预印,灵活性…

作者头像 李华
网站建设 2026/4/21 1:10:23

别再一张张画ROC曲线了!用Python的sklearn和matplotlib一键生成多模型对比图

高效对比机器学习模型性能:Python自动化绘制多模型ROC曲线实战 在机器学习项目汇报或论文撰写过程中,模型性能的可视化呈现往往决定着沟通效率。想象一下这样的场景:你刚完成五个不同算法的实验比较,导师突然要求两小时后展示结果…

作者头像 李华