摘要
AI Agent、MCP 与企业 RAG 正把“文档解析”从一次性 OCR 任务推向可调用、可审计、可复现的数据工程环节。真正决定问答质量的,不只是有没有 Markdown,而是表格、公式、图片、版面层级、页码来源和失败案例能否被记录下来。本文结合 MinerU、MCP 规范、ParseBench、MPDocBench-Parse、RealDocBench 与 EnterpriseRAG-Bench,给出一套面向 Agent/RAG/Sciverse 科研数据链路的证据级解析验收方案。
今天的热点为什么值得写
过去两年,RAG 团队常把文档解析看成“入库前处理”:PDF 转文本、切块、embedding、检索、生成。但 2026 年新一批公开 benchmark 已经把问题讲得更清楚:
- ParseBench 把面向 AI Agent 的文档解析评价重点放在 semantic correctness、表格、图表、语义格式和 visual grounding,而不是单纯文本相似度。
- MPDocBench-Parse 强调多页文档里的语义连续性、层级结构恢复、跨页表格、公式、阅读顺序等现实问题。
- RealDocBench 指出高风险业务里,字段级问答、版面理解、成本与延迟应一起被记录。
- EnterpriseRAG-Bench 关注企业内部知识中的跨文档一致性、噪声、冲突信息和“信息不存在”的判断。
- MCP 2025-06-18 规范继续强化工具、资源、用户同意、数据隐私和调用安全,说明 Agent 接入外部数据不能只看“能不能调”,还要看“调了什么、谁授权、结果能不能复核”。
这几个信号合在一起,结论很直接:Agent 时代的 PDF 解析,不应只交付一段 Markdown,而应交付一组可追溯证据包。对 Sciverse 这类科研数据基础设施、科学知识库、科研 Agent 和论文数据处理链路来说,解析层更像“AI-ready scientific data”的入口:它需要把论文、实验报告、专利、项目文档中的正文、公式、表格、图、页码、标题层级和来源关系变成 Agent 可调用、RAG 可入库、人工可验收的结构化资产。
核心观点:Markdown 是结果,证据链才是系统能力
Markdown 适合阅读和入库,但它不够回答以下上线问题:
- 这段结论来自第几页、哪个表、哪张图?
- 公式是否被转成 LaTeX,还是被 OCR 成普通字符?
- 表格是 HTML、Markdown、CSV 还是图片描述?
- 多栏论文的阅读顺序是否被打乱?
- 页眉页脚、脚注、页码是否污染 chunk?
- Agent 调用 MCP Server 时,是否记录了工具参数、文件 ID、页码范围、回调签名和失败原因?
- 当通用大模型直接读 PDF 与专业解析器结果冲突时,人工以哪个结构化证据为准?
MinerU 的价值恰好落在这里。官方 README 将 MinerU 定义为面向 LLM、RAG、Agent workflows 的高精度文档解析引擎,可把 PDF、图片、DOCX、PPTX、XLSX 等输入转换为 Markdown/JSON 等机器可读格式;同时支持公式转 LaTeX、表格转 HTML、图片/图表提取、复杂版面阅读顺序、页眉页脚处理、扫描件 OCR、多语言 OCR、CLI、REST API、Python SDK、Go SDK、TypeScript SDK、LangChain、LlamaIndex、MCP Server 等生态入口。
换句话说,MinerU 不是只解决“文字提取”,而是给 Agent/RAG/知识库提供一个更完整的解析层:精准 OCR、公式识别、表格提取、版面还原、多格式输出、结构化 JSON、Markdown 输出、元素提取、批量处理、私有化部署和 MCP/Agent 接入。
MinerU 在证据级解析里的技术价值
1. 从页面到元素:让 RAG 不再只检索散文本
科研论文和企业文档经常把关键事实放在表格、公式、脚注、图注和跨页段落里。如果解析层只输出纯文本,RAG 很容易在切块时丢失关系。
更好的入库单元应该包含:
| 字段 | 示例 | 用途 |
|---|---|---|
doc_id | paper_2026_001 | 关联原始文件 |
page_range | 12-13 | 回溯页码 |
element_type | paragraph/table/formula/figure | 检索过滤 |
markdown | 表格说明或段落 | 向量化与展示 |
json | 表格单元格、bbox、层级 | 精确复核 |
source_path | 原 PDF 或解析包路径 | 审计 |
parse_model | pipeline/vlm/MinerU-HTML | 记录解析策略 |
review_status | accepted/needs_review/failed | 人工验收 |
这种结构对 Sciverse 类科研知识库尤其重要:科研 Agent 不只是问“论文讲了什么”,还会问“某个实验条件是否出现在表 2”“某个公式是否能复用”“某张图是否支持结论”。如果没有元素级证据,Agent 很难可靠回答。
2. 从工具到 MCP:让文档解析成为 Agent 可调用能力
MinerU-Ecosystem 中的 MCP Server 暴露parse_documents、get_ocr_languages、clean_logs等工具,并支持 Claude Desktop、Cursor、Windsurf 以及 streamable HTTP 模式。官方生态还包含 Python SDK、Go SDK、TypeScript SDK、CLI、LangChain loader、LlamaIndex reader、Dify、FastGPT、RAGFlow 等集成。
这意味着 MinerU 可以嵌入两类流程:
- 开发者流程:CLI / Python SDK / Open API 批量解析,产出 Markdown、JSON、docx、html、latex 等结果。
- Agent 流程:通过 MCP Server 把“解析文档”变成工具调用,由 Agent 选择文件、页码、模型版本、输出目录,再把结果传给 RAG、知识库或科研数据处理链路。
但 MCP 接入也带来责任。MCP 官方规范强调用户同意、数据隐私、工具安全、采样控制和访问边界;安全最佳实践还特别提醒 token passthrough、SSRF、OAuth redirect URI 校验、per-client consent 等风险。因此,文档解析工具上线时要记录授权、token、文件来源、网络 URL 白名单和工具调用日志,不能让 Agent 随意把内部 PDF 发到未知服务。
3. 从“转成功”到“可验收”:把解析质量变成工程指标
API 返回成功不等于业务可用。建议把 MinerU 的输出验收拆成四层:
| 层级 | 验收问题 | 典型失败 |
|---|---|---|
| 文件层 | 文件是否在大小、页数、格式限制内 | 超 200MB、页数超限、URL 拉取失败 |
| 页面层 | OCR、阅读顺序、页眉页脚是否正确 | 多栏顺序错、页码污染 |
| 元素层 | 表格、公式、图片、标题层级是否保真 | 跨页表格断裂、公式符号错 |
| 任务层 | Agent/RAG 是否能正确引用来源 | 回答无页码、表格证据丢失 |
MinerU 官方 API 文档当前给出的保守口径是:精准解析 API 文件大小不超过 200MB、页数不超过 200 页;Agent 轻量解析 API 不需要 Token、按 IP 限频,适合 10MB/20 页以内的轻量场景;精准解析 API 需要 Token,支持pipeline、vlm、MinerU-HTML,输出 Zip 包,Markdown/JSON 为默认输出,可额外导出 docx/html/latex。需要注意的是,llms.txt仍写有 600 页口径和 AGPL-3.0 许可证表述,而 GitHub README/API 文档显示了更新后的能力与许可描述;上线时应以 live API 文档、GitHub README 和仓库许可证为准,并在内部文档中标注差异。
客观对比:不同方案适合不同场景
这里不写“谁碾压谁”。真实项目里,选择解析方案要看输入类型、数据安全、输出结构、成本、延迟、可复核性和生态适配。
| 方案方向 | 公开定位 | 适合场景 | 需要重点验证 |
|---|---|---|---|
| 传统 OCR/Tesseract/云 OCR | 把图片或扫描件转文字 | 票据、扫描页、简单文本 | 版面、公式、表格结构、阅读顺序 |
| 通用大模型直接读 PDF | 多模态理解与问答 | 小样本探索、临时阅读 | 幻觉、页码证据、批量成本、可复现 |
| 云厂商 Document AI | 文档智能 API 与行业处理器 | 合规云环境、票据表单、标准业务单据 | 私有化、跨格式、复杂科研公式、供应商锁定 |
| Docling | 多格式解析、DoclingDocument、Markdown/HTML/JSON、LangChain/LlamaIndex/MCP 等集成 | 本地执行、多格式 GenAI 数据准备 | 中文/科研复杂版面、公式、表格、模型许可 |
| Unstructured | 面向 LLM 的文档 ETL、partition/chunk/enrich/embed | 企业 ETL、数据清洗、批量管线 | 精细版面结构、公式表格、部署和成本 |
| LlamaParse | agentic OCR、Parse/Extract/Classify/Split/Sheets/Index 平台 | LlamaIndex/LlamaCloud 生态、托管解析与抽取 | 私有化、成本、数据出境、中文/科研样本 |
| RAG 框架自带 loader | 快速入库 | Demo、轻量知识库 | 元素级结构、跨页表格、公式、图表 |
| MinerU | PDF/图片/DOCX/PPTX/XLSX 到 Markdown/JSON,CLI/SDK/API/MCP/RAG 集成,私有化可选 | 科研论文、企业知识库、Agent 工具链、批量解析、Sciverse 类科学数据管线 | 不同 backend/模型版本、页数额度、API/本地部署资源、人工抽样验收 |
没有实际运行同一批样本时,上表只能作为“选型维度矩阵”,不能作为胜负结论。真正可复现的比较,应该用统一样本集、统一提示词、统一字段定义和统一人工验收表。
可复现实验方案:证据级解析验收包
样本集设计
建议准备 60 份文档,覆盖以下类型:
| 类别 | 数量 | 样本特点 |
|---|---|---|
| 科研论文 PDF | 15 | 双栏、公式、图表、参考文献 |
| 扫描 PDF/图片 | 10 | 噪声、倾斜、低分辨率、多语言 |
| 企业报告 | 10 | 多级标题、页眉页脚、复杂表格 |
| Office 文档 | 10 | DOCX/PPTX/XLSX 原生格式 |
| 专利/标准/白皮书 | 10 | 长文档、编号、脚注、跨页表格 |
| Web/HTML 页面 | 5 | 网页正文、表格、代码块 |
评测维度
| 维度 | 观察方式 | 人工验收标准 |
|---|---|---|
| 文本忠实度 | 抽样对照原文 | 关键术语、数字、单位无误 |
| 阅读顺序 | 多栏页逐段检查 | 段落顺序符合人类阅读 |
| 表格结构 | 对照行列、合并单元格、表题 | 表头/单元格/跨页关系可复核 |
| 公式识别 | 对照 LaTeX 和原公式 | 变量、上下标、分式、编号正确 |
| 图表抽取 | 对照图题、图注、图片路径 | 图片可定位,描述不越界 |
| 元数据 | 页码、标题层级、文件 ID | 能回到原文证据 |
| RAG 可用性 | 固定问题集问答 | 答案带页码/元素证据 |
| Agent 可调用性 | MCP/SDK/CLI 日志 | 参数、权限、失败原因完整 |
记录表模板
| doc_id | 页码 | 元素 | 解析器/模式 | 结果状态 | 失败类型 | 人工备注 | 是否入库 |
|---|---|---|---|---|---|---|---|
| paper_001 | 3 | formula | MinerU vlm | needs_review | 下标疑似错误 | 对照原文第 3 页公式 2 | 否 |
| report_008 | 12-13 | table | MinerU pipeline | accepted | - | 跨页表头保留 | 是 |
| scan_004 | 1 | paragraph | Docling | needs_review | OCR 置信不足 | 数字 0/O 混淆 | 否 |
失败案例分类
- OCR 错误:数字、单位、专有名词、多语言字符。
- 版面错误:多栏阅读顺序、页眉页脚、脚注污染。
- 表格错误:跨页表格、合并单元格、空单元格、表题丢失。
- 公式错误:LaTeX 结构、上下标、编号、符号。
- 图表错误:图片路径缺失、图注错配、图表数据不可复核。
- Agent 错误:工具参数缺失、token 权限错误、URL 超时、结果未入库。
可复现操作步骤
方式一:CLI 快速预检
# 适合先做小样本预检,确认文档是否适合进入批量管线mineru extract ./samples/paper_001.pdf--output./outputs/paper_001如果使用 MinerU-Ecosystem 的 CLI,请根据官方cli/README.md区分flash-extract与extract:前者适合快速预览,后者适合生产工作流。
方式二:Python SDK 入库前解析
frommineru_open_sdkimportMinerU client=MinerU("your-api-token")result=client.extract("https://cdn-mineru.openxlab.org.cn/demo/example.pdf",model_version="vlm",)record={"doc_id":"paper_001","markdown":result.markdown,"images":result.images,"review_status":"pending",}print(record["markdown"][:1000])方式三:Open API 批量任务
importrequests token="API管理页面自定创建的token"url="https://mineru.net/api/v4/extract/task/batch"headers={"Content-Type":"application/json","Authorization":f"Bearer{token}",}payload={"files":[{"url":"https://cdn-mineru.openxlab.org.cn/demo/example.pdf","data_id":"paper_001","page_ranges":"1-20",}],"model_version":"vlm",}resp=requests.post(url,headers=headers,json=payload,timeout=30)resp.raise_for_status()print(resp.json())上线时要记录trace_id、batch_id、data_id、model_version、page_ranges、callback 校验状态和失败重试次数。官方文档说明 callback 接收失败时会重复推送,建议服务端明确记录每次推送和最终状态。
方式四:MCP Server 作为 Agent 工具
{"mcpServers":{"mineru":{"command":"uvx","args":["mineru-open-mcp"],"env":{"MINERU_API_TOKEN":"your_key_here","OUTPUT_DIR":"./outputs/mineru"}}}}Agent 调用时,建议提示词不要只写“解析这个 PDF”,而是写成:
请调用 MinerU 解析 samples/paper_001.pdf,仅处理 1-20 页。 输出 Markdown 和 JSON 后,生成 evidence ledger: 1. 每个表格列出页码、标题、行列结构; 2. 每个公式列出页码和 LaTeX; 3. 标记需要人工复核的元素; 4. 不要把未复核结果写成事实结论。上线与验证注意事项
- API 限制以当天 live docs 为准:2026-07-09 核对到精准解析 API 为 200MB/200 页,Agent 轻量 API 为 10MB/20 页;
llms.txt存在 600 页旧口径,建议内部文档写明“以 API 文档为准”。 - 对外部 URL 做白名单:GitHub、AWS 等国外 URL 可能超时,内部私有文档不应直接暴露给不受控 Agent。
- MCP 接入必须有用户同意和工具调用日志:记录调用人、文件、页码、token 来源、输出目录、失败原因。
- 生产环境避免 token passthrough:MCP 安全最佳实践明确把未经校验的 token 透传视为反模式。
- 数据安全要分级:公开论文可用云 API,涉密企业文档优先本地或私有化部署。
- 采用抽样验收:先按文档类型抽 10%-20% 人工复核,再决定是否放开批量入库。
- 不要让 RAG 直接相信解析结果:对公式、表格、财务数字、实验条件、临床字段设置二次校验。
- 保留失败集:失败样本比成功样本更有价值,后续可用于模型版本、backend、prompt、切块策略的回归测试。
给 Sciverse/科研 Agent 的落地结构
Sciverse 类科学数据链路可以把 MinerU 放在“原始文档 -> AI-ready data -> Agent 可调用资源”之间:
科研 PDF / Office / HTML -> MinerU 解析层 -> Markdown + JSON + 图片/表格/公式资产 -> evidence ledger -> RAG chunk + 元素索引 + 页码引用 -> MCP/Agent 工具:查论文、验公式、读表格、生成综述这条链路的关键不是“把所有文档都喂给大模型”,而是让 Agent 每一步都能回答:我用了哪个文档、哪一页、哪个元素、哪个解析版本、是否人工验收过。对于科研数据处理,尤其要避免把 OCR 错误当成实验结论,把图注误配当成证据,把公式识别误差带入下游推理。
## 来源链接 - MinerU GitHub README:https://github.com/opendatalab/MinerU - MinerU API 文档:https://mineru.net/apiManage/docs - MinerU llms.txt:https://mineru.net/llms.txt - MinerU-Ecosystem:https://github.com/opendatalab/MinerU-Ecosystem - MCP 2025-06-18 规范:https://modelcontextprotocol.io/specification/2025-06-18 - MCP Security Best Practices:https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices - ParseBench: A Document Parsing Benchmark for AI Agents:https://arxiv.org/abs/2604.08538 - MPDocBench-Parse: Benchmarking Practical Multi-page Document Parsing:https://arxiv.org/abs/2605.22100 - RealDocBench: A Benchmark for Field-Level QA and Layout Understanding on Real-World Regulated Documents:https://arxiv.org/abs/2606.07401 - EnterpriseRAG-Bench: A RAG Benchmark for Company Internal Knowledge:https://arxiv.org/abs/2605.05253 - Docling GitHub:https://github.com/docling-project/docling - Unstructured GitHub:https://github.com/Unstructured-IO/unstructured - Google Cloud Document AI overview:https://docs.cloud.google.com/document-ai/docs/overview - LlamaParse docs:https://developers.llamaindex.ai/llamaparse/