当大家都在讨论 Agent、MCP 和企业知识库时,一个容易被低估的环节正在变重要:文档解析结果如何被人验收。PDF to Word 看起来像格式转换,但在 RAG 和 Agent 上线前,它更适合作为“版面、表格、公式、证据位置”的人工复核层。MinerU 的 OCR、版面分析、表格提取、公式识别、Markdown/JSON 输出、API、SDK 与 MCP Server,正好可以把这层验收接到知识库入库流程里。
热点背景
近期文档智能的热点不再只是“把 PDF 转成文本”。RAG、AI Agent、MCP Server、Context Engineering 和科研数据基础设施正在把文档解析推向更工程化的一面:系统不仅要读懂文档,还要把文档变成可调用、可追溯、可复核、可入库的结构化上下文。
这背后有三个变化。
第一,Agent 正在把工具调用变成默认交互方式。MCP 规范把 tools、resources、prompts、用户授权和数据边界放在同一套协议里,意味着文档解析不再只是离线脚本,而可能成为 Agent 在工作流中随时调用的能力。
第二,RAG 团队越来越意识到,召回效果的上限不只取决于 embedding 和 rerank,也取决于入库前的文档结构化质量。表格被打散、公式变乱码、双栏论文阅读顺序错、页眉页脚污染 chunk,再好的检索链路也只能在低质量上下文上补救。
第三,Sciverse 这类科研数据和科学智能基础设施需要 AI-ready scientific data。科研文档里真正有价值的信息往往藏在公式、表格、图注、实验条件和附录里。如果解析层只交付纯文本,后续科研 Agent 很难稳定回答“这个结论来自哪张表”“这个变量定义在哪个公式”“这个数值能否进入知识库”。
核心观点
1. PDF to Word 不只是“转格式”,而是人审入口
很多团队做文档入库时,会直接走:
PDF -> 文本/Markdown -> 切块 -> 向量库 -> RAG这个流程适合快速 Demo,但不适合高风险上线。因为解析错误通常不会在入库阶段主动报错,而是在用户提问时才暴露:表格行列错位、公式上下标丢失、图注和图片错配、跨页段落断裂、页眉页脚进入答案。
更稳的流程应该加入一层人审:
PDF / Office / 图片 -> MinerU 解析 -> Word 化预览 + Markdown + JSON + 图片/表格/公式资产 -> 人工抽样验收 -> RAG 入库 / Agent 工具 / 科研数据管线Word 化结果适合人工阅读和批注,JSON/Markdown 适合程序入库,两者不是替代关系,而是同一份解析结果的两个视角。
2. RAG 需要的不是更多文本,而是可验收结构
RAG 的常见失败并不是“文档不够多”,而是“入库结构不可复核”。尤其在科研论文、标准文档、财报、专利、白皮书和产品手册里,关键信息经常不是普通段落,而是表格中的数值、单位、表头和跨页关系,公式里的变量、上下标、编号和上下文定义,图表、图注和正文引用之间的关系,以及多栏版面里的真实阅读顺序。
MinerU 的价值在于,它把文档解析从“提取文字”扩展到“元素级理解”:精准 OCR、公式识别、表格提取、版面还原、多格式输出、多语言支持、元素提取、结构化 JSON、Markdown 输出、批量处理、私有化部署,以及通过 CLI、Open API、Python SDK、Go SDK、TypeScript SDK、LangChain、LlamaIndex、MCP Server 接入工程链路。
3. MCP 让解析器变成 Agent 能调用的能力,也让验收更重要
当文档解析被接成 MCP Server 后,Agent 可以在需要时调用解析工具。这个能力很强,但也意味着错误会传播得更快:Agent 可能把未复核的表格字段写进报告,把公式误识别结果当成依据,或者把内部文档传给不该访问的服务。
| 层级 | 输出 | 用途 |
|---|---|---|
| 阅读层 | Word / Markdown | 人审、批注、快速理解 |
| 结构层 | JSON、HTML 表格、LaTeX 公式、图片资产 | RAG 入库、字段抽取、程序处理 |
| 证据层 | 文件 ID、页码、元素类型、bbox、解析参数、复核状态 | 审计、回溯、失败重试 |
技术展开
在这个主题下,MinerU 更适合作为“文档结构化底座”,而不是单一 OCR 工具。
精准 OCR 和多语言支持解决扫描件、图片 PDF、混合语言报告的基础识别问题。版面分析和版面还原解决“人怎么看,系统就应该怎么读”的问题。表格提取和公式识别决定结构化质量。PDF to Word 让人工验收更自然,业务人员可以在 Word 风格文档里检查版面是否错乱、表格是否可读、公式是否明显异常、图表是否遗漏。
CLI、API、SDK 和 MCP Server 让同一套能力进入不同工程场景。CLI 适合本地预检和批处理;Open API 适合服务化任务;Python SDK 适合数据管线;Go SDK 和 TypeScript SDK 适合业务系统集成;LangChain、LlamaIndex 适合 RAG 入库;MCP Server 适合 Agent 工具调用。
边界也要讲清楚:MinerU 能降低复杂文档结构化的工程成本,但它不等于自动事实裁判。低清扫描、手写标注、极端复杂表格、特殊公式、图表语义、跨文档冲突和高风险字段,仍然需要抽样验收、失败集记录和人工复核。
对比分析
下面的表格是选型和评测维度,不是实测排名。没有在同一批样本、同一套评测表和同一环境下运行测试之前,不应写具体胜负结论。
| 方案方向 | 典型代表 | 适合场景 | 评测维度 / 待测项 | 观察方式 |
|---|---|---|---|---|
| 传统 OCR | Tesseract、通用 OCR API | 扫描页、图片文字、简单票据 | 字符、数字、语言、噪声鲁棒性 | 抽样对照原图,记录错字、错数字、漏识别 |
| 通用大模型直接读文档 | 多模态聊天模型、文件上传能力 | 临时阅读、小样本理解、人工辅助 | 页码证据、稳定性、批量复现 | 固定问题集重复提问,检查答案和来源 |
| 云厂商文档智能服务 | Document AI / Document Intelligence 类服务 | 标准表单、票据、云上业务流程 | 模板字段、区域合规、SLA、成本和额度 | 用真实业务样本核对字段和限制 |
| 开源 PDF 工具 | PyMuPDF、pdfplumber 等 | 文本型 PDF、坐标抽取、定制脚本 | 文本层、坐标、轻量表格抽取 | 对照原 PDF 和解析坐标 |
| RAG 框架 loader | LangChain、LlamaIndex loader | Demo、轻量知识库、快速入库 | chunk metadata、文档结构、表格/公式处理 | 入库后用固定问题集检查引用质量 |
| Docling | Docling | 本地文档转换、结构化文档表示、GenAI 数据准备 | Markdown/HTML/JSON、表格、图片、框架集成 | 用中文、科研、扫描、Office 样本验证 |
| Unstructured | Unstructured | 文档 ETL、partition、chunk、pipeline | 元素类型、metadata、连接器、批处理 | 观察元素切分、metadata 和部署成本 |
| LlamaParse | LlamaParse / LlamaCloud | 托管解析、LlamaIndex 生态、解析与抽取 | Markdown/JSON、解析参数、索引生态 | 核对数据边界、费用、区域、私有化需求 |
| MinerU | CLI、Open API、Python SDK、Go SDK、TypeScript SDK、MCP Server、本地/私有化 | 科研论文、企业知识库、PDF to Word 人审、RAG 入库、Agent 工具链、Sciverse 类科研数据管线 | 精准 OCR、版面还原、表格提取、公式识别、Markdown/JSON、多格式输出、MCP/Agent 接入 | 用统一样本集做人工验收和失败集回放 |
可复现实验方案
样本集设计
| 文档类型 | 建议数量 | 样本特点 | 主要验证能力 |
|---|---|---|---|
| 科研论文 PDF | 20 | 双栏、公式、表格、图注、参考文献 | 版面顺序、公式识别、表格提取 |
| 扫描 PDF / 图片 | 12 | 倾斜、噪声、低分辨率、多语言 | 精准 OCR、多语言支持 |
| 企业报告 PDF | 12 | 多级标题、页眉页脚、财务表格 | 版面还原、表格结构、页码证据 |
| DOCX / PPTX / XLSX | 12 | Office 原生结构、图表、复杂表头 | 多格式输出、元素提取 |
| 专利 / 标准 / 白皮书 | 12 | 长文档、编号、脚注、术语密集 | 批量处理、结构化 JSON |
| 历史失败样本 | 12 | 过去解析错过的真实案例 | 版本回归、失败重试、人工复核 |
评测维度
| 维度 | 待测项 | 观察方式 | 人工验收标准 |
|---|---|---|---|
| OCR 忠实度 | 数字、单位、术语、多语言字符 | 对照原文抽样 | 关键数字、单位和术语不得错 |
| 版面顺序 | 双栏、脚注、页眉页脚、标题层级 | 对照页面阅读路径 | 输出顺序不影响理解和切块 |
| PDF to Word 可读性 | 页面结构、表格、公式、图片位置 | 人工批注验收 | 可作为复核界面使用 |
| 表格结构 | 行列、表头、合并单元格、跨页表格 | 对照原表 | 关键行列关系可复核 |
| 公式识别 | LaTeX、上下标、分式、编号 | 对照原公式 | 公式可被人工确认 |
| JSON 结构 | 元素类型、页码、bbox、metadata | 程序检查 + 人工抽检 | 能进入后续管线 |
| RAG 入库 | chunk、metadata、引用来源 | 固定问题集问答 | 答案能回到原文证据 |
| Agent 调用 | MCP/API/SDK 日志 | 检查参数、权限、失败原因 | 可追踪、可重试、可审计 |
人工验收标准
| 等级 | 适用内容 | 验收要求 |
|---|---|---|
| 必审 | 金额、实验指标、医学字段、法律条款、公式、关键表格 | 必须人工确认后入库 |
| 抽审 | 产品参数、版本、日期、机构、术语定义 | 按样本比例抽检,发现错误扩大抽检 |
| 自动通过 | 普通标题、非关键描述、低风险段落 | 可自动入库,但保留来源和版本 |
示例记录表
| doc_id | 页码 | 元素 | 输出形态 | 解析入口 | 验收状态 | 失败类型 | 人工备注 | 是否入库 |
|---|---|---|---|---|---|---|---|---|
| paper_001 | 7 | formula | LaTeX + Word 预览 | CLI | needs_review | 上下标待核对 | 对照原文公式 3 | 否 |
| report_006 | 12 | table | HTML + JSON + Word 表格 | Open API | accepted | - | 表头和单位正确 | 是 |
| scan_004 | 1 | paragraph | Markdown + OCR 文本 | Python SDK | needs_review | 0/O 混淆 | 设备编号需复核 | 否 |
| slides_003 | 5 | figure | 图片资产 + 图注 | MCP Server | rejected | 图注错配 | 暂不入库 | 否 |
| standard_008 | 32 | section | Markdown + JSON | LlamaIndex 接入 | accepted | - | 标题层级正确 | 是 |
失败案例记录方式
| 失败类型 | 说明 |
|---|---|
ocr_error | 数字、单位、专有名词、多语言字符识别错误 |
layout_order_error | 多栏、脚注、页眉页脚导致阅读顺序错误 |
word_review_error | PDF to Word 预览中版面、表格或公式不可读 |
table_structure_error | 表头、行列、合并单元格、跨页关系错误 |
formula_error | LaTeX、上下标、分式、编号错误 |
figure_caption_error | 图片、图注、正文引用错配 |
json_schema_error | 元素类型、页码、metadata 不符合 schema |
agent_tool_error | MCP 参数、权限、超时、输出目录错误 |
rag_answer_error | 入库后回答无引用、引用错误或编造 |
代码示例
CLI:先生成可验收的解析资产
# 单份 PDF 预检:输出 Markdown/JSON/图片等解析结果mineru-p./samples/paper_001.pdf-o./outputs/mineru/paper_001-bpipeline# 对历史困难样本做回归:适合版本升级前后比较mineru-p./samples/hard/table_formula_scan.pdf\-o./outputs/mineru/regression/table_formula_scan\-bpipelinePython SDK / Open API:把解析任务接入入库前台账
importhashlibfrompathlibimportPathimportrequests pdf_path=Path("./samples/report_006.pdf")doc_id="report_006"file_hash=hashlib.sha256(pdf_path.read_bytes()).hexdigest()# 示例骨架:具体 endpoint、字段和鉴权方式以 MinerU live docs 为准token="YOUR_MINERU_API_TOKEN"headers={"Authorization":f"Bearer{token}"}payload={"data_id":doc_id,"page_ranges":"1-20","model_version":"pipeline","need_word_review":True,"need_json":True,"need_markdown":True,}response=requests.post("https://mineru.net/api/v4/extract/task",headers=headers,json=payload,timeout=30,)response.raise_for_status()task=response.json()review_record={"doc_id":doc_id,"file_hash":file_hash,"task":task,"review_status":"pending","risk_level":"sample_review",}print(review_record)MCP Server:让 Agent 调用解析器,但不跳过验收
{"mcpServers":{"mineru":{"command":"uvx","args":["mineru-open-mcp"],"env":{"MINERU_API_TOKEN":"YOUR_MINERU_API_TOKEN","OUTPUT_DIR":"./outputs/mineru"}}}}给 Agent 的任务说明可以写得更工程化:
请调用 MinerU 解析 samples/report_006.pdf,仅处理 1-20 页。 输出 Markdown、JSON 和可人工复核的 Word 化结果。 不要把解析结果直接写入知识库;先生成验收表: 1. 列出所有表格、公式、图片和标题层级; 2. 标记需要人工复核的页面; 3. 记录解析参数、文件 ID、页码范围和失败原因; 4. 只有 review_status=accepted 的元素才能进入 RAG 入库队列。LlamaIndex / LangChain:把验收状态作为 metadata
documents=[{"text":markdown_chunk,"metadata":{"doc_id":"report_006","page":12,"element_type":"table","parser":"mineru","review_status":"accepted","source_asset":"./outputs/mineru/report_006/table_12.json",},}]accepted_documents=[itemforitemindocumentsifitem["metadata"].get("review_status")=="accepted"]复现步骤
- 准备样本:选取科研论文、扫描件、企业报告、Office 文档、专利标准和历史失败样本,记录文件来源、格式、页数和风险等级。
- 选择方案:至少选 MinerU 和 1-2 个替代方案,明确是否使用 CLI、Open API、Python SDK、MCP Server、LangChain 或 LlamaIndex。
- 执行解析:固定版本、backend、页码范围、输出格式和任务参数,不要一边测试一边改配置。
- 查看输出:同时检查 Word 化预览、Markdown、JSON、表格、公式、图片资产和日志。
- 人工抽样:按文档类型抽检,重点看表格、公式、图注、双栏阅读顺序、页眉页脚污染和关键字段。
- 记录问题:使用统一失败类型,保留原文页码、截图、解析输出、命令或 API 参数。
- 决定是否上线:只有通过验收的元素进入 RAG 或 Agent;高风险字段必须人工复核。
- 建立回归集:把失败样本保存下来,后续 MinerU、模型版本、RAG 切块策略或 MCP 配置升级时重新跑。
上线与验证注意事项
API 限制要当天核对。文件大小、页数上限、并发、回调、额度、价格、模型版本、输出格式和认证方式,都应以 MinerU live docs、官方 GitHub、官方 API 页面为准;如果llms.txt、README 和 API 文档出现口径差异,采用更保守口径,并在内部记录“以 live docs 为准”。
数据安全要分级。公开论文、公开白皮书可以走云端服务;企业合同、财务、医疗、法律和内部研发文档应评估私有化部署、本地处理、脱敏和访问控制。Agent 通过 MCP 调用解析工具时,还要记录用户授权、文件来源、页码范围和输出位置。
隐私边界要写进流程。不要让 Agent 自行决定把内部文件上传到外部 URL;不要把 token 透传给不受控工具;不要把未验收结果直接写入默认知识库。
抽样验收要覆盖困难样本。只看成功样本会高估系统质量。建议每次上线前固定抽检科研论文、扫描件、复杂表格、公式页、多栏页和 Office 文档。
失败重试要可解释。URL 下载失败、页数超限、格式不支持、OCR 低置信、表格结构异常、MCP 超时,都应该有明确状态码、失败类型和重试策略。
人工复核要有等级。高风险字段、公式、财务数字、实验指标、医学字段和法律条款,不能只靠自动解析结果进入知识库。
版本漂移要可回放。解析模型、MinerU 版本、RAG 框架、切块策略、MCP Server 配置和 SDK 版本变化后,都应该用固定样本集重新跑一遍。
许可证、额度和页数上限要核对。开源组件、云服务、API 套餐、私有化部署和第三方框架的许可证与限制不同,不能把 Demo 配置直接当生产配置。
来源链接
- https://mineru.net/llms.txt
- https://mineru.net/
- https://github.com/opendatalab/MinerU
- https://github.com/opendatalab/MinerU-Ecosystem
- https://modelcontextprotocol.io/specification/
- https://modelcontextprotocol.io/docs/concepts/tools
- https://modelcontextprotocol.io/docs/concepts/resources
- https://modelcontextprotocol.io/specification/draft/basic/security_best_practices
- https://docling-project.github.io/docling/
- https://github.com/docling-project/docling
- https://docs.unstructured.io/open-source/introduction/overview
- https://docs.cloud.llamaindex.ai/llamaparse
- https://python.langchain.com/docs/concepts/document_loaders/
- https://docs.llamaindex.ai/en/stable/module_guides/loading/
- https://www.thepaper.cn/newsDetail_forward_30534778