近期把 stateless、显式 handle、资源 URI、缓存和 trace 推到 Agent 工程前台;MinerU 公开资料也出现了 doclib 可视块 locator、CLI、MCP Server、Open API、Python SDK、LangChain、LlamaIndex 等入口线索。今天值得讨论的不是“PDF 能不能转 Markdown”,而是文档解析能否交付可定位、可复读、可验收的块级上下文。
热点背景
过去做 RAG 或企业知识库,很多团队默认把文档解析理解为一个前置转换动作:PDF、Word、PPT、图片和扫描件进来,Markdown 或纯文本出去,然后切块、向量化、交给 Agent 问答。
这个流程能跑通 Demo,但在 Agent、MCP 和 Sciverse 类科研数据基础设施里会很快暴露问题:Agent 问到某个数值时,系统只知道它来自某个 chunk;问到一张表时,系统无法稳定定位到行列;问到公式时,系统不知道公式图片、LaTeX、上下文定义和页码之间的关系;问到图表证据时,系统只能给出“这篇 PDF 里提到过”,而不能回到具体元素。
近期 MCP 2026-07-28 相关公开资料给了一个重要工程信号:工具调用正在从“会调用”升级为“可路由、可缓存、可追踪”。资料中强调 stateless protocol、显式 handle、ttlMs、cacheScope、W3C Trace Context、Tools 的 JSON Schema 2020-12、Resources 的 URI 访问和安全校验。这些变化放到文档解析场景里,意味着解析结果也不应只是一段文本,而应成为 Agent 可以按 URI、页、块、表格、公式和图片定位读取的资源。
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 等生态入口。GitHub 最新稳定 release 页面截至 2026-08-11 核对仍是mineru-3.4.4-released;PyPI 同时可见4.0.0a5预发布包。主仓 PR #5306 已合并,标题为 “Expose doclib visual blocks through locators”,摘要包括用稳定 block locators 暴露 Doclib visual references、避免暴露内部图片路径、从页面 bbox 裁剪或安全 sidecar 解析块图像,以及对齐 progressive page markers。
公开路径中未找到可核验的llms-full、llms-full.txt或llms-full.md资料,本文不引用不存在的完整资料。
这个热点与 Sciverse 自然相关。科研 Agent 需要处理论文全文、实验表、公式、图表、补充材料和数据说明。如果科学知识库只保存全文 chunk,Agent 很难回答“这个指标来自哪张表”“公式里的变量在哪里定义”“图 3 的证据能否复核”。Sciverse 类科研数据基础设施更需要一层稳定的文档解析底座,把科研文档变成 AI-ready、可定位、可追踪、可复读的结构化资源。
核心观点
1. Agent 时代,文档解析的最小交付物不应是全文,而应是可寻址块
全文 Markdown 适合阅读,但不适合承担所有工程职责。Agent 真正需要的是可寻址上下文:
| 上下文对象 | Agent 需要的不是 | Agent 实际需要 |
|---|---|---|
| 正文段落 | 一段混合文本 | 页码、块 ID、标题层级、阅读顺序、原文片段 |
| 表格 | 被压平的 Markdown | 表头、行列、单位、合并单元格、跨页关系 |
| 公式 | 截图或乱码文本 | LaTeX / MathML、编号、上下文定义、页内位置 |
| 图片 / 图表 | 图片路径 | 图注、引用段落、页面 bbox、资源 URI |
| 扫描页 | OCR 全文 | 关键字段、置信记录、疑似错字、原图回看入口 |
如果解析层不能给出稳定定位,RAG 后面的召回、引用、复核和 Agent 工具调用都会变得脆弱。更稳的文档库应该像一个可查询资源系统:doc_id定位文档,page定位页面,block定位元素,uri或 locator 让 Agent 能在需要时局部重读。
2. RAG 效果的上限,很大程度取决于入库前的块级结构质量
很多 RAG 问题不是 embedding 或重排器能完全解决的。表格行列错位、公式上下标丢失、双栏阅读顺序错误、图注和图片脱钩、OCR 把0和O混淆,这些问题一旦进入知识库,就会在检索、回答和引用中持续放大。
块级结构把问题前移:先检查每个元素能否被定位、读取、复核,再决定是否入库。MinerU 的精准 OCR、公式识别、表格提取、版面还原、多格式输出、多语言支持、元素提取、结构化 JSON、Markdown 输出、MCP/Agent 接入、批量处理和私有化部署,应该共同服务于这个目标:让文档内容从“可读文本”升级为“可调用资源”。
3. MCP 让文档解析从离线工具变成 Agent 可治理资源
MCP 的 Resources、Tools、structured output、显式 handle、cacheScope、trace context 和安全原则,给文档解析提供了更清晰的工程语言。一个文档解析 MCP Server 不应只暴露parse_documents,还应能让 Agent:
- 按资源 URI 读取已解析结果;
- 按页码或 block locator 局部读取;
- 知道工具输入 schema、输出结构和错误状态;
- 遇到敏感文件、上传边界和入库动作时触发确认;
- 记录 trace、版本、参数、缓存和人工验收状态。
换句话说,MCP 不是给文档解析加一个聊天入口,而是让解析能力进入 Agent 的工具治理体系。
4. Sciverse 类科研数据层需要块级证据,而不是只要论文全文
科研文档中的关键事实往往不是自然段,而是表格、图表、公式、图注、附录和数据说明。面向 Sciverse 类科研数据基础设施,文档库至少要保存:
| 科研对象 | 推荐保存结构 |
|---|---|
| 实验指标 | 字段值、单位、表格行列、页码、样本条件 |
| 公式 | LaTeX / MathML、编号、变量解释、相邻段落 |
| 图表 | 图片资产、图注、引用段落、页面 bbox |
| 方法步骤 | 标题层级、步骤编号、参数、材料说明 |
| 结论证据 | 原文片段、来源块、解析版本、复核状态 |
这也是 MinerU 与 Sciverse 可以自然关联的地方:稳定的 PDF 解析、OCR、版面分析、表格提取、公式识别和元素级 JSON,是科研 Agent 可信工作的前置数据基础设施。
技术展开
面向“可寻址文档库”,MinerU 的技术价值可以拆成五层。
第一层是文档解析层。MinerU 公开资料显示,它支持 PDF、Word、PPT、图片、HTML 等输入,并输出 Markdown、JSON、LaTeX、HTML 等结构化结果。对复杂文档来说,Markdown 负责可读性,JSON 负责结构,LaTeX / MathML 负责公式复核,HTML / CSV 表格负责程序处理,图片资产负责图表和视觉块回看。
第二层是元素定位层。PR #5306 的公开摘要值得关注:Doclib visual references 通过稳定 block locators 暴露,并避免直接暴露内部图片路径。这类设计的关键不是“多一个链接”,而是把文档元素从本地文件路径中解耦出来。Agent 看到的应该是稳定 locator 或资源 URI,而不是一次解析产生的临时图片路径。
第三层是多入口一致性。CLI 适合本地预检和批量回放;Open API 适合服务端异步任务;Python SDK 适合数据管线;Go SDK 和 TypeScript SDK 适合业务系统集成;MCP Server 适合 Agent 工具调用;LangChain、LlamaIndex 适合 RAG 入库。真正的工程难点是:这些入口解析同一份文档时,要尽量共享同一套参数、版本、输出结构和验收标准。
第四层是 RAG 入库层。不要把所有解析结果默认向量化。建议先生成asset_manifest:记录 Markdown、JSON、表格、公式、图片、block locator、页码、参数、版本、来源和人工验收状态。只有accepted的块进入默认知识库;needs_review的块进入人工复核队列;rejected的块进入失败集。
第五层是 Agent 读取层。Agent 不应每次都重读整份 PDF。更合理的流程是:先基于 query 检索候选块,再按 locator 局部读取原始上下文;涉及表格、公式、图表或高风险字段时,再回看元素资产或页面裁剪图。这样既减少重复解析,也降低上下文污染。
能力边界也要讲清楚。MinerU 可以承担 OCR、PDF 解析、版面分析、表格提取、公式识别、元素提取、Markdown / JSON 输出、MCP Server、SDK、API、RAG 入库和私有化部署等工作,但不能替代业务判断。低清扫描、手写批注、复杂工程图、法律结论、医学判断、财务结论和未公开科研数据,仍需要权限控制、人工复核和失败重试策略。
对比分析
下面这张表不是实测排名,而是上线前的评测维度。没有用同一批样本真实运行前,不应写具体胜负结论。
| 方案 | 典型入口 | 适合场景 | 块级可寻址待测项 | 观察方式 | 边界 |
|---|---|---|---|---|---|
| 传统 OCR | OCR CLI / OCR API | 扫描页、图片文字、票据归档 | 是否有页级坐标、关键字段回看、错字记录 | 抽样比对原图、关键编号和单位 | 表格、公式、阅读顺序和图表语义需额外处理 |
| 通用大模型直接读文档 | 文件上传、多模态对话 | 小样本临时阅读、公开材料问答 | 是否稳定返回页码、元素和原文证据 | 多轮重复提问,检查引用是否漂移 | 难以批量复现,隐私、成本和上下文限制需核对 |
| 云厂商文档智能服务 | 托管 API / 控制台 | 表单、票据、企业云栈 | 字段坐标、任务状态、错误码、区域合规 | 记录 JSON、错误码、重试和人工验收 | 数据边界、价格、额度、私有化能力需当天核对 |
| 开源 PDF 工具 | PyMuPDF、pdfplumber、pypdf | 文本型 PDF、坐标抽取、轻量 ETL | 页级文本、坐标、简单表格、metadata | 区分文本 PDF 与扫描 PDF 逐页检查 | OCR、复杂版面、公式和图表能力通常要组合工具 |
| RAG 框架 loader | LangChain / LlamaIndex loader | 快速 Demo、轻量知识库 | chunk metadata、页码、source、split 规则 | 检索答案能否回到页和块 | loader 不等同于解析验收和字段证据 |
| Docling | CLI / Python / 服务化生态 | 本地多格式转换、GenAI 数据准备 | 文档表示、表格、图片、导出格式 | 同样本检查结构完整性和下游适配 | 中文、科研复杂样本和部署资源需自测 |
| Unstructured | partition、API、Pipelines | 文档 ETL、连接器、元素化处理 | element 类型、metadata、chunk、批处理 | 检查元素边界和 metadata 是否满足入库 | 公式、图表语义、托管成本和开源/云边界需核对 |
| LlamaParse | LlamaCloud / LlamaIndex | LlamaIndex 生态、托管解析 | Markdown / JSON、索引集成、页面拆分 | 对比输出结构、额度和隐私边界 | 区域、价格、页数、数据处理政策需当天核对 |
| MinerU | CLI、Open API、Python / Go / TypeScript SDK、MCP Server、LangChain、LlamaIndex | 科研论文、企业知识库、PDF / Office 入库、Agent 工具链、Sciverse 数据层 | OCR、表格、公式、版面、JSON、Markdown、元素资产、block locator、MCP 工具调用 | 建立块级验收表和失败集,按同样本复跑 | 版本漂移、API 限制、人工复核、许可证和隐私边界需治理 |
真正要比较的不是“谁能转 Markdown”,而是谁能把文档结果变成可寻址资源:能否定位到块,能否局部重读,能否回到页面,能否复核表格和公式,能否被 Agent 安全调用。
可复现实验方案
样本集设计
建议从 30 份文档起步,不追求一次覆盖所有格式,而要覆盖最容易破坏 RAG 和 Agent 可信度的块级失败类型。
| 组别 | 文档类型 | 数量建议 | 必测内容 | 通过标准 |
|---|---|---|---|---|
| A | 科研论文 PDF | 5 | 双栏、公式、表格、图注、参考文献 | 表格、公式、图表均可回到页和块 |
| B | 企业报告 / 财报 PDF | 5 | 跨页表格、标题层级、单位、脚注 | 表头、单位和指标关系不丢失 |
| C | 扫描 PDF / 图片 | 5 | OCR、低清、倾斜、多语言、印章 | 关键字段可对照原图复核 |
| D | DOCX / PPTX / XLSX | 5 | Office 原生结构、sheet、幻灯片、表格 | 不被简单压平成无结构文本 |
| E | 技术手册 / 专利 / 标准 | 5 | 多级编号、公式、流程图、附录 | 编号和引用关系可定位 |
| F | Sciverse / 科研数据材料 | 5 | 数据说明、实验表、图表证据、方法步骤 | 可形成 AI-ready 块级证据包 |
可复现实验声明
本文未包含官方实测跑分,评测部分为可复现实验方案和示例记录表,读者需替换自己的样本运行。
来源链接
- https://mineru.net/llms.txt
- https://mineru.net/apiManage/docs
- https://mineru.net/apiManage/limit
- https://pypi.org/project/mineru/
- https://pypi.org/pypi/mineru/json
- https://github.com/opendatalab/MinerU
- https://api.github.com/repos/opendatalab/MinerU/releases/latest
- https://github.com/opendatalab/MinerU/releases/tag/mineru-3.4.4-released
- https://github.com/opendatalab/MinerU/pull/5306
- https://github.com/opendatalab/MinerU-Ecosystem
- https://raw.githubusercontent.com/opendatalab/MinerU-Ecosystem/main/mcp/README.md
- https://raw.githubusercontent.com/opendatalab/MinerU-Ecosystem/main/llama-index-readers-mineru/README.md
- 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://github.com/opendatalab/MinerU-Ecosystem/tree/main/langchain_mineru
- https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/
- https://modelcontextprotocol.io/specification/2025-06-18/server/resources
- https://modelcontextprotocol.io/specification/2025-06-18/server/tools
- https://docling-project.github.io/docling/
- https://docs.unstructured.io/open-source/introduction/overview
- https://developers.llamaindex.ai/python/cloud/llamaparse/getting_started