首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MinerU LangChain 集成深度指南:一行代码搞定 PDF 到 RAG

MinerU LangChain 集成深度指南:一行代码搞定 PDF 到 RAG

原创
作者头像
用户12386590
发布2026-04-16 15:57:20
发布2026-04-16 15:57:20
3200
举报

MinerU 是什么

MinerU 是上海人工智能实验室开源的一站式文档解析工具,基于视觉语言模型(VLM)架构,能够将 PDF、图片、Word、PPT、Excel 等任意格式的文档转换为结构化的 Markdown 输出。最新版本 MinerU2.5-Pro 仅用 **1.2B 参数**即在 OmniDocBench v1.6 基准上取得 **95.69 分**,大幅超越 GPT-4o、Qwen2.5-VL-72B 等数十倍参数规模的模型,稳居当前文档解析榜首。

MinerU 的核心能力包括:

  • **PDF 转 Markdown**:保留原始版式、标题层级、段落结构
  • **公式识别**:复杂 LaTeX 公式准确率高达 98%
  • **表格提取**:复杂表格识别准确率 92%
  • **多语言 OCR**:支持 109 种语言的文档识别
  • **图片提取**:将文档内嵌图片独立导出
  • **网页抓取**:将任意 URL 网页转换为 Markdown

MinerU 生态包含六大模块:CLI 命令行工具、SDK 多语言开发包、API 云端服务、RAG 知识检索、MCP 协议支持,以及 SKILL 跨语言知识 API。其中 RAG 模块与主流 LLM 框架深度集成,LangChain 正是其核心合作伙伴。


LangChain 是什么

LangChain 是构建 LLM 应用最流行的开源框架之一,全球安装量超过 2500 万次。它提供标准化的接口和组件,让开发者能够灵活组合 LLM、向量存储和数据源,快速搭建 RAG(检索增强生成)系统。

langchain-mineru 是 MinerU 官方维护的 LangChain 文档加载器(Document Loader)。它将 MinerU 的高精度文档解析能力桥接到 LangChain 生态——只需一行代码,即可将 PDF、DOC、PPT、图片等复杂文档转换为 LangChain 的 Document 对象,并无缝衔接后续的 Text Splitter、Embedding 和 Vector Store 流程。

**核心优势**:

  • 一行代码完成文档加载,零门槛接入 LangChain RAG 链路
  • 继承 MinerU 的高精度版面分析、公式识别和表格提取能力
  • 支持 Flash(免 Token)和 Precision(需 Token)两种解析模式
  • PDF 可按页拆分,适配 page-level 粒度检索场景
  • 支持本地路径与远程 URL 混合批量加载
  • 内置 lazy\_load 流式加载接口

安装与环境要求

环境要求

  • Python >= 3.10

安装

代码语言:bash
复制
pip install langchain-mineru

验证安装

代码语言:bash
复制
python -c "from langchain\_mineru import MinerULoader; print('OK')"

快速上手

一行代码加载 PDF

代码语言:python
复制
from langchain\_mineru import MinerULoader



loader = MinerULoader(source="demo.pdf")

docs = loader.load()



print(docs[0].page\_content[:500])

print(docs[0].metadata)

默认 mode="flash",无需 API Token,直接可用。


两种解析模式对比

| 特性 | 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

Precision 模式 Token 申请

Token 可在 MinerU API 管理平台 免费申请。提供两种 Token 配置方式:

**方式一:环境变量(推荐)**

代码语言:bash
复制
export MINERU\_TOKEN="your-token"

之后初始化 Loader 时无需传入 token 参数:

代码语言:python
复制
loader = MinerULoader(source="demo.pdf", mode="precision")

**方式二:构造时显式传入**

代码语言:python
复制
loader = MinerULoader(source="demo.pdf", mode="precision", token="your-token")

进阶用法

PDF 按页拆分(split_pages)

split\_pages=True 时,每页 PDF 解析为一个独立的 Document,适合需要 page-level 检索粒度的 RAG 场景:

代码语言:python
复制
from langchain\_mineru import MinerULoader



loader = MinerULoader(

    source="/path/to/demo.pdf",

    split\_pages=True,

)



docs = loader.load()

for doc in docs:

    print(f"第 {doc.metadata['page']} 页: {doc.page\_content[:200]}")

指定页码范围

代码语言:python
复制
from langchain\_mineru import MinerULoader



loader = MinerULoader(

    source="/path/to/demo.pdf",

    mode="precision",

    token="your-token",

    pages="1-5",         # 只解析 1-5 页

    split\_pages=True,

    language="en",

    timeout=300,

)



docs = loader.load()

for doc in docs:

    print(f"Page {doc.metadata['page']}: {doc.page\_content[:200]}")

多文件混合加载

代码语言:python
复制
from langchain\_mineru import MinerULoader



loader = MinerULoader(

    source=[

        "/path/to/demo\_a.pdf",

        "/path/to/demo\_b.pdf",

        "https://cdn-mineru.openxlab.org.cn/demo/example.pdf",

    ],

)



docs = loader.load()

for doc in docs:

    print(doc.metadata["source"], "-", doc.page\_content[:100])

完整 RAG Pipeline 示例

Flash 模式 + RAG(免 Token,适合快速原型)

代码语言:python
复制
from langchain\_mineru import MinerULoader

from langchain\_text\_splitters import RecursiveCharacterTextSplitter

from langchain\_openai import OpenAIEmbeddings

from langchain\_community.vectorstores import FAISS



# 1. 加载文档

loader = MinerULoader(source="demo.pdf", mode="flash")

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("这个文档的核心配置步骤是什么?", k=3)

for r in results:

    print(r.page\_content[:200])

Precision 模式 + RAG(生产环境推荐)

代码语言:python
复制
import os

from langchain\_mineru import MinerULoader

from langchain\_text\_splitters import RecursiveCharacterTextSplitter

from langchain\_openai import OpenAIEmbeddings

from langchain\_community.vectorstores import FAISS



os.environ["MINERU\_TOKEN"] = "your-token"  # 或在初始化时传入 token 参数



# 1. 加载文档

loader = MinerULoader(

    source="manual.pdf",

    mode="precision",

)

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("这个文档怎么配置 OCR?", k=3)

for r in results:

    print(r.page\_content[:200])

参数说明

| 参数 | 类型 | 默认值 | 说明 |

|:---|:---|:---|:---|

| source | str \| list[str] | 必填 | 本地文件路径或 URL,支持单个或列表 |

| mode | str | "flash" | 解析模式:"flash"(快速免 Token)或 "precision"(精准需 Token) |

| token | str \| None | None | MinerU API Token。precision 模式必填,也可通过 MINERU\_TOKEN 环境变量提供 |

| language | str | "ch" | 文档语言代码,如 "ch"(中文)、"en"(英文) |

| pages | str \| None | None | 页码范围,如 "1-5",仅对 PDF 有效 |

| timeout | int | 1200 | 单文件最大等待时间(秒) |

| split\_pages | bool | False | PDF 是否按页拆分为独立 Document |

| ocr | bool | False | 是否强制启用 OCR |

| formula | bool | True | 是否启用公式识别 |

| table | bool | True | 是否启用表格识别 |


Document Metadata 说明

每个返回的 Document 包含以下 metadata 字段:

代码语言:python
复制
{

    "source": "report.pdf",          # 原始输入路径或 URL

    "loader": "mineru",

    "output\_format": "markdown",

    "mode": "flash",                  # flash / precision

    "language": "ch",

    "pages": None,

    "split\_pages": True,

    "filename": "report.pdf",        # MinerU 返回的文件名

    "page": 1,                       # 仅 split\_pages=True 时存在

    "page\_source": "report.pdf",     # 仅 split\_pages=True 时存在

}

支持的文件格式

| 模式 | 支持格式 |

|:---|:---|

| Precision | PDF、图片、DOC、DOCX、PPT、PPTX、HTML |

| Flash | PDF、图片、DOCX、PPTX、XLS、XLSX |


相关链接

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MinerU 是什么
  • LangChain 是什么
  • 安装与环境要求
    • 环境要求
    • 安装
    • 验证安装
  • 快速上手
    • 一行代码加载 PDF
  • 两种解析模式对比
    • Precision 模式 Token 申请
  • 进阶用法
    • PDF 按页拆分(split_pages)
    • 指定页码范围
    • 多文件混合加载
  • 完整 RAG Pipeline 示例
    • Flash 模式 + RAG(免 Token,适合快速原型)
    • Precision 模式 + RAG(生产环境推荐)
  • 参数说明
  • Document Metadata 说明
  • 支持的文件格式
  • 相关链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档