MCP、RAG 和科研 Agent 正在把“文档解析”从一次性转换推向可调度的工程能力。近期 MinerU 公开资料持续强调 pipeline、VLM、hybrid、CLI、Open API、SDK、MCP Server 与本地部署生态,这说明解析后端不只是一个命令参数,而是决定 OCR、表格、公式、版面、成本、隐私和上线边界的运行时选择。

热点背景

最近的 Agent 工程有一个明显变化:工具调用正在从“能接上”走向“能被调度、能被验收、能被复盘”。MCP 2026-07-28 release candidate 把工具、资源、结构化输出、stateless HTTP、任务与资源生命周期继续推向协议层;OpenAI Agents SDK 也把 MCP Server、工具过滤、审批和 tracing 放进 Agent 工程流程。对文档解析来说,这意味着 PDF、Office、图片和网页不再只是被离线转成 Markdown,而会成为 Agent 工作流中可选择、可限权、可回放的工具能力。

与此同时,文档解析自身也在分化。传统 OCR 关注“看见文字”,RAG loader 关注“生成 chunk”,通用大模型直读文档关注“临时理解”,而生产系统还要关心更细的问题:低清扫描件走 OCR 还是 VLM?公式密集论文走哪种模型?企业合同能不能远程解析?长文档是否需要批量任务?解析结果是只给 Markdown,还是同时保留结构化 JSON、表格、公式、图片和页面元素?

MinerU 官方 llms.txt 将 MinerU 定义为面向 LLM、RAG 和 Agent 工作流的智能文档解析平台,支持 PDF、Word、PPT、图片、HTML 到 Markdown、JSON、LaTeX、HTML 等结构化输出,并提供 CLI、Open API、Python SDK、Go SDK、TypeScript SDK、MCP Server、LangChain 与 LlamaIndex 等入口。公开路径中未找到可核验的 llms-fullllms-full.txtllms-full.md 资料,本文不引用不存在的完整资料。

截至 2026 年 8 月 19 日核对,MinerU GitHub releases 可见 3.4.5 作为 latest 标记,同时 4.0.0a6 属于 alpha pre-release。MinerU Quick Usage 与部署资料也围绕 pipeline、VLM、hybrid、mineru-api、mineru-router、Docker、本地与服务化运行展开。今天值得讨论的不是“某个后端一定最好”,而是:企业知识库、RAG、MCP Server、Sciverse 类科研数据基础设施,应该如何把解析运行时选型变成上线前的可复现实验。

Sciverse 相关场景尤其需要这层设计。科研 Agent 处理论文、实验报告、数据说明、公式、表格、图表和补充材料时,需要的不是一次性的“读懂 PDF”,而是稳定、可审计、可被 Agent 调用的 AI-ready 科研上下文。解析运行时选错,后面的检索、引用、证据定位和人工复核都会受影响。

核心观点

1. Agent 时代,解析后端不是参数,而是上下文生产策略

把文档解析写成 parse(file, backend="xxx") 很方便,但容易掩盖关键决策。后端选择会影响 OCR 质量、版面顺序、表格结构、公式识别、图表资产、运行速度、硬件成本、API 额度、数据外发和失败重试。

更合理的做法,是把解析后端升级为“上下文生产策略”:

文档特征 运行时选择要回答的问题 下游风险
原生文本 PDF 是否需要 VLM,还是规则化 pipeline 足够 过度消耗、输出漂移
扫描件 / 图片 OCR、多语言、倾斜页是否稳定 错字、漏字、关键数字错误
公式密集论文 公式是否需要更强视觉理解与人工复核 上下标、变量、编号损坏
表格密集报告 表头、合并单元格、跨页表是否保留 RAG 引用错列、错单位
Office 文件 Word、PPT、Excel 原生结构是否要保留 幻灯片、工作表、段落关系丢失
敏感资料 本地、私有化还是云 API 隐私、许可证、审计风险

因此,Agent 不应直接“看到文件就解析”。它应该先读取文档类型、密级、页数、是否扫描、是否表格/公式密集、是否需要人工验收,再选择 CLI、Open API、Python SDK、MCP Server、本地部署或框架集成入口。

2. RAG 效果的上限,取决于运行时能否保留结构

RAG 的切块、embedding、rerank 和引用格式都很重要,但它们修不好解析阶段已经损坏的结构。如果运行时只交付一段纯文本,表格、公式、图片、图注、脚注和阅读顺序就可能在入库前被压扁。

MinerU 的价值在于把精准 OCR、公式识别、表格提取、版面还原、多格式输出、多语言支持、元素提取、结构化 JSON、Markdown 输出、批量处理、私有化部署和 MCP/Agent 接入组织在同一套生态里。运行时选型的目标不是追求“所有文档都用最重模式”,而是让不同文档走合适的解析路径,并把输出保留为可验收资产。

3. MCP 让解析运行时变成 Agent 可协商能力

MCP 让工具可以声明能力、输入、输出和资源。放到 MinerU 这类文档解析层,Agent 可以不再盲目调用“解析 PDF”工具,而是根据策略选择:

  • 公开论文:可走 Open API 或服务化队列,保留 Markdown、JSON、公式、表格和元素资产;
  • 内部合同:优先本地 CLI、Python SDK 或私有化部署,禁止自动外发;
  • 低清扫描:启用 OCR 与人工抽样验收;
  • 公式/表格密集科研资料:提高复核等级,必要时用更强视觉解析路径;
  • 轻量预览:先生成低成本预览,再决定是否进入精准解析。

协议不会自动替业务方判断隐私、成本和质量,但它让这些判断能被放进 Agent 工具调用前后的结构化记录里。

4. Sciverse 类科研数据层需要“运行时档案”

科研数据处理最怕不可复现。论文中的公式、实验表格、图表说明和补充材料一旦进入知识库,就可能被多个 Agent 长期引用。此时只保存最终 Markdown 不够,还要保存运行时档案:源文件哈希、解析入口、后端选择、参数、版本、输出资产、人工验收状态和失败案例。

这样做的意义不是增加流程负担,而是让科研 Agent 在引用证据时知道:这段上下文来自哪份文档、哪一页、哪种解析运行时、是否经过表格/公式/版面验收。对 Sciverse 这类面向 Agent 的科学数据基础设施,这是一层基础工程能力。

技术展开

可以把 MinerU 运行时选型拆成四层。

第一层是入口层。CLI 适合本地预检、开发调试、失败样本复现和小批量私有处理;Open API 适合服务端异步任务、批处理和跨团队系统集成;Python SDK 适合数据管线、评测脚本和回放;Go SDK 与 TypeScript SDK 适合业务后端、Node 服务和前端工作台;MCP Server 适合把解析能力暴露给 Agent;LangChain 与 LlamaIndex 适合把已验收结果进入 RAG。

第二层是后端层。MinerU 公开资料中出现 pipeline、VLM、hybrid、mineru-api 与 mineru-router 等运行方式。可以把它们理解为不同工程取向:pipeline 更适合稳定、规则化、可批量的解析链路;VLM 更适合复杂图文、扫描页、公式或版面理解;hybrid 则适合先用 pipeline 处理结构,再用 VLM 补强困难页面。具体能力、参数和性能应以当前官方文档、部署环境和实际样本为准。

第三层是输出层。不要只看 content.md。生产入库至少应同时关注 Markdown、结构化 JSON、表格、公式、图片/图表资产、HTML/LaTeX、页码、元素类型、bbox 或定位信息。Markdown 适合人工阅读和初始 chunk;JSON 适合元素级验收与程序处理;表格和公式资产适合复核;图片和图表资产适合多模态检索和证据回看。

第四层是治理层。每次解析都要记录运行时档案:

{
  "document_id": "paper-20260819-001",
  "source_sha256": "<sha256>",
  "entrypoint": "cli|open_api|python_sdk|mcp_server|langchain|llamaindex",
  "runtime": "pipeline|vlm|hybrid",
  "options": {
    "ocr": true,
    "table": true,
    "formula": true,
    "language": "auto",
    "outputs": ["markdown", "json", "html", "latex"]
  },
  "artifacts": {
    "markdown": "content.md",
    "json": "content.json",
    "assets": "assets/"
  },
  "review": {
    "status": "pending",
    "required_for": ["table", "formula", "layout"]
  }
}

这不是 MinerU 官方固定 schema,而是建议的业务侧记录方式。它能把精准 OCR、表格提取、公式识别、版面还原、元素提取、多格式输出、批量处理和私有化部署,转成可比较、可复现、可治理的工程语言。

能力边界同样要明确。MinerU 可以作为文档解析运行时层,但不能替代业务事实判断、数据授权、隐私脱敏、版权审查、医学/法律/金融专家复核,也不能把未运行的实验自动变成已验证结论。低清扫描、手写批注、复杂工程图、异常 Office 文件、超大文件、额度不足、网络失败和版本漂移,都应进入失败记录和人工验收流程。

对比分析

下面的表格是运行时选型视角下的评测维度 / 待测项 / 观察方式,不是同批样本实测排名,也不代表具体胜负结论。

方案 典型运行方式 适合场景 运行时待测项 观察方式
传统 OCR OCR 引擎、本地脚本、云 OCR API 扫描件、图片文字、票据文字识别 多语言、倾斜页、坐标、错字、漏字 抽样逐字比对原图,记录关键字段错误
通用大模型直接读文档 文件上传、多模态 API、聊天界面 临时摘要、小样本阅读、人工辅助理解 可重复性、引用定位、结构化输出、成本 固定问题多次运行,检查页码、表格和公式漂移
云厂商文档智能服务 托管 API、控制台、SDK 表单、票据、合同、云上业务流 区域合规、数据保留、额度、页数、字段 schema 核对 live docs、账户后台、合同条款和错误返回
开源 PDF 工具 PyMuPDF、pdfplumber、pypdf 等 原生文本 PDF、轻量抽取、坐标处理 扫描页、双栏、表格、公式、图片资产 用复杂 PDF 记录阅读顺序与元素损失
RAG 框架自带 loader LangChain loader、LlamaIndex reader 原型验证、快速知识库入库 是否压扁结构,metadata 是否足够 检查 chunk 的页码、标题、表格、公式和来源
Docling CLI、Python、服务化生态 多格式文档转换、文档 AI 管线 layout、table、OCR、图片、导出 schema 同样本比较 Markdown、JSON 和元素资产
Unstructured Partition API、开源库、Pipelines 文档 ETL、元素切分、企业数据管线 element 类型、chunk 策略、云/本地边界 检查元素粒度、表格保留和失败重试
LlamaParse LlamaCloud、LlamaIndex 集成 LlamaIndex 生态、托管解析、RAG 入库 解析模式、输出格式、费用/额度、隐私边界 记录参数、返回结构、RAG 引用和账户限制
MinerU CLI、Open API、Python/Go/TypeScript SDK、MCP Server、LangChain、LlamaIndex PDF/Office/图片到结构化结果,RAG/Agent/MCP 入库 pipeline/VLM/hybrid 选择、OCR、表格、公式、版面、JSON、Markdown、私有化部署 建立运行时档案、验收表和候选后端对比记录

一个务实结论是:解析工具选型不能只问“能不能输出 Markdown”。更应该问:不同文档类型是否能路由到合适运行时?输出是否能保留表格、公式、图片和版面?Agent 是否能看到权限与验收状态?失败是否能复现?成本、额度、页数、文件大小和许可证是否以当天官方资料为准?

可复现实验方案

样本集设计

建议先准备 50-100 份真实授权样本,重点覆盖最容易影响 Agent 和 RAG 的页面。

样本组 文档类型 建议数量 重点观察
A 原生文本 PDF 10-20 标题层级、段落顺序、脚注、页眉页脚
B 扫描 PDF / 图片 10-20 OCR、倾斜页、低清、多语言、印章
C 表格密集报告 8-15 表头、合并单元格、跨页表、单位
D 公式密集论文 5-10 上下标、公式编号、LaTeX 可读性
E 图表密集材料 5-10 图注、图表资产、坐标轴、正文引用
F Office 文件 8-15 DOCX 表格、PPTX 层级、XLSX 工作表
G Sciverse 类科研材料 5-10 方法章节、实验数据、补充材料、证据定位
H 历史失败样本 10-20 曾经错字、漏表、错公式、乱序或超时的页面

文档类型

样本应覆盖 PDF、扫描 PDF、图片、DOCX、PPTX、XLSX、长文档、表格密集文档、公式密集文档、图表密集文档、多语言文档和科研材料。如果目标是 Sciverse 类科研 Agent,再加入论文方法章节、实验记录、数据说明书、图表页、公式页和补充材料。

评测维度

维度 待测项 人工验收标准
运行时选择 pipeline、VLM、hybrid 或服务化入口是否匹配文档类型 每类文档有默认路径、例外路径和升级条件
精准 OCR 低清扫描、多语言、数字、单位、专有名词 关键字段不影响业务含义,错误位置可标注
版面还原 双栏、标题层级、脚注、页眉页脚、阅读顺序 Markdown/JSON 顺序符合人工阅读路径
表格提取 表头、行列、合并单元格、跨页表、单位 表格可被程序读取,关键数值能回到原页
公式识别 行内公式、块级公式、上下标、编号 LaTeX 或结构化公式可人工复核
元素提取 图片、图表、表格、公式、页码、定位 元素类型、资产路径和来源页可追踪
结构化 JSON schema、metadata、页码、状态、错误语义 可被脚本差异比对,可进入 manifest
MCP/Agent 接入 工具输入、权限、structured output、审批 Agent 能识别是否允许解析和是否可入库
RAG 入库 chunk、metadata、引用回溯、验收状态 问答结果能回到页码、元素和运行时档案
成本与稳定性 任务耗时、重试、并发、队列、失败率 仅记录自测数据,不外推为官方性能结论

失败案例记录方式

每个失败案例至少保存:源文件哈希、页码、元素类型、运行时、入口、参数、期望结果、观察结果、原页截图、Markdown 片段、JSON 片段、人工结论、是否阻断上线、是否可复现、重跑策略。

建议把失败类型写成可操作标签:

  • runtime_mismatch:文档类型与运行时不匹配;
  • ocr_digit_error:数字、编号、单位、日期识别错误;
  • table_structure_error:表头、行列、合并单元格或跨页表错误;
  • formula_latex_error:公式 LaTeX、上下标或编号错误;
  • layout_order_error:多栏、脚注、图注或页眉页脚顺序错误;
  • asset_reference_missing:图片、图表、表格或公式资产断链;
  • api_limit_blocked:文件大小、页数、额度、限速或 Token 权限阻断;
  • privacy_policy_blocked:隐私策略禁止远程解析或自动入库;
  • version_drift_detected:升级后同样本输出结构发生变化。

示例记录表

case_id 样本 文档类型 运行时 入口 页码 元素 期望 观察结果 状态
R001 paper-01.pdf 公式密集论文 VLM / hybrid CLI 4 formula 上下标与编号可复核 待读者运行后填写 pending
R002 report-02.pdf 跨页表格报告 pipeline / hybrid Open API 12 table 表头、单位、合并单元格正确 待读者运行后填写 pending
R003 scan-03.png 低清图片 VLM / OCR Python SDK 1 OCR 关键编号和金额无误 待读者运行后填写 pending
R004 deck-04.pptx PPTX pipeline MCP Server 6 chart 图表资产与图注可回溯 待读者运行后填写 pending
R005 dataset-note-05.pdf Sciverse 类科研材料 hybrid LlamaIndex 8 evidence chunk 带页码、元素和运行时档案 待读者运行后填写 pending

待读者替换样本运行说明

请把示例文件替换成自己的真实授权样本。每轮实验只改变一个变量:运行时、入口、参数、版本、样本集或 RAG 切块策略。否则出现差异时,很难判断是 pipeline/VLM/hybrid 选择导致,还是 API、SDK、MCP Server、LangChain、LlamaIndex 或下游索引策略导致。

代码示例

以下示例用于说明工程接入方式。具体命令、参数、URL、鉴权、输出字段、API 限制、页数、文件大小和错误码,请以上线当天的官方文档、账户后台和实际返回为准。

CLI:为不同文档准备运行时档案

# 原生 PDF 或 Office 样本:先用本地 CLI 做可复现预检
mineru parse "./samples/report-02.pdf" \
  --output "./runs/report-02/content.md" \
  --json

# 高风险页面单独回放,便于人工验收表格、公式和版面
mineru parse "./samples/paper-01.pdf" \
  --pages 4 \
  --output "./runs/paper-01/page-4.md" \
  --json

建议把命令、输出目录、输入哈希、运行时选择、MinerU 版本和人工验收结论一起保存,而不是只把 Markdown 放进向量库。

Python SDK:把运行时信息写入 manifest

import hashlib
import json
from pathlib import Path
from datetime import datetime, timezone
from mineru import MinerU

source = Path("./samples/paper-01.pdf")
run_dir = Path("./runs/paper-01/run-20260819")
run_dir.mkdir(parents=True, exist_ok=True)

runtime_profile = {
    "document_id": "paper-01",
    "source_sha256": hashlib.sha256(source.read_bytes()).hexdigest(),
    "entrypoint": "python_sdk",
    "runtime": "record-selected-runtime",
    "created_at": datetime.now(timezone.utc).isoformat(),
    "options": {
        "ocr": True,
        "table": True,
        "formula": True,
        "language": "auto",
        "outputs": ["markdown", "json", "html", "latex"]
    },
    "review_status": "pending"
}

with MinerU("${MINERU_TOKEN}") as client:
    result = client.extract(
        str(source),
        ocr=True,
        table=True,
        formula=True,
        language="auto",
        extra_formats=["html", "latex"]
    )
    result.save_all(str(run_dir))
    runtime_profile["task_id"] = getattr(result, "task_id", None)
    runtime_profile["state"] = getattr(result, "state", None)

(run_dir / "runtime-manifest.json").write_text(
    json.dumps(runtime_profile, ensure_ascii=False, indent=2)
)

MCP Server:让 Agent 先判断能不能解析

{
  "mcpServers": {
    "mineru": {
      "type": "streamableHttp",
      "url": "https://mcp.mineru.net/mcp",
      "headers": {
        "Authorization": "Bearer ${MINERU_API_TOKEN}"
      }
    }
  }
}

业务侧可以在 Agent policy 中增加运行时选择规则:

{
  "policy": "document_runtime_selection",
  "default_entrypoint": "mineru",
  "allow_remote_parse": false,
  "route_rules": [
    {"when": "public_pdf_and_low_risk", "runtime": "pipeline_or_api"},
    {"when": "scan_or_formula_dense", "runtime": "vlm_or_hybrid"},
    {"when": "private_or_sensitive", "runtime": "local_or_private_deploy"}
  ],
  "review_before_index": ["table", "formula", "chart", "amount", "private_document"]
}

上面的 policy 是建议的业务侧控制字段,不是 MinerU 官方 MCP 工具的固定参数。它表达的是工程原则:Agent 应先判断权限、文档类型和验收要求,再触发解析。

复现步骤

  1. 准备真实授权样本,覆盖 PDF、扫描件、图片、DOCX、PPTX、XLSX、表格、公式、图表和科研资料。
  2. 给每个样本分配稳定 document_id,计算 SHA-256,记录来源、密级、页数、格式和业务用途。
  3. 为每类文档设定候选运行时:pipeline、VLM、hybrid、本地 CLI、Open API、Python SDK、MCP Server、LangChain 或 LlamaIndex。
  4. 固定参数执行解析,保存 Markdown、JSON、表格、公式、图片/图表资产、HTML/LaTeX 和原始任务信息。
  5. 写入 runtime-manifest.json:入口、运行时、版本、参数、输出路径、任务 ID、权限标签和验收规则。
  6. 人工抽样检查 OCR、表格、公式、版面顺序、元素资产、JSON schema 和 RAG metadata。
  7. 将失败案例写入记录表,标注页码、元素、截图、期望、观察结果和是否阻断上线。
  8. 对候选运行时做同样本对比,只记录自己的实测结果,不把示例表当成官方跑分。
  9. 只有通过验收的运行结果才能进入 chunk、embedding、向量库、知识图谱或 Sciverse 类科研数据层。
  10. 升级 MinerU、SDK、MCP Server、模型、部署镜像、切块策略或 RAG 框架后,用同一批样本回放。

可复现实验声明

本文未包含官方实测跑分,评测部分为可复现实验方案和示例记录表,读者需替换自己的样本运行。

来源链接

  • https://mineru.net/llms.txt
  • https://mineru.net/apiManage/docs
  • https://github.com/opendatalab/MinerU
  • https://github.com/opendatalab/MinerU/releases
  • https://github.com/opendatalab/MinerU/blob/master/docs/quick_usage.md
  • https://github.com/opendatalab/MinerU/blob/master/docs/how_to_deploy_vlm.md
  • https://github.com/opendatalab/MinerU/blob/master/docs/how_to_deploy_pipeline.md
  • https://github.com/opendatalab/MinerU/blob/master/docs/how_to_deploy_mineru_api.md
  • https://github.com/opendatalab/MinerU/blob/master/docs/how_to_deploy_mineru_router.md
  • https://github.com/opendatalab/MinerU-Ecosystem
  • https://github.com/opendatalab/MinerU-Ecosystem/tree/main/sdk/python
  • https://github.com/opendatalab/MinerU-Ecosystem/tree/main/sdk/go
  • https://github.com/opendatalab/MinerU-Ecosystem/tree/main/sdk/typescript
  • https://modelcontextprotocol.io/specification/2025-06-18/server/tools
  • https://modelcontextprotocol.io/specification/draft/server/resources
  • https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/
  • https://openai.github.io/openai-agents-python/mcp/
  • https://python.langchain.com/docs/integrations/document_loaders/
  • https://docs.llamaindex.ai/en/stable/module_guides/loading/
  • https://docs.llamaindex.ai/en/stable/llama_cloud/llama_parse/
  • https://docling-project.github.io/docling/
  • https://docs.unstructured.io/
  • https://sciverse.opendatalab.com/
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐