你是否遇到过这样的情况:想用RAG从一份扫描版的年度财报中提取关键数据,结果大模型输出了一堆断裂的文本,表格和标题都乱了?或者,你想让AI Agent帮你总结一篇双栏排版的学术论文,但它给出的答案逻辑混乱,完全分不清哪个是正文、哪个是页眉?
问题的根源,很可能出在最基础的环节------文档解析。
很多人认为,OCR(光学字符识别)就等同于"把图片变成文字"。但在大模型时代,我们需要的远不止于此。我们需要的是文档结构。
这就是我们今天要深入探讨的主题:OCR 如何与 MinerU 这样的文档解析工具组合,共同构建大模型(LLM)可理解、可使用的结构化知识。
引言:字面含义 vs. 真实需求
如果只看字面含义,OCR 的任务很清楚:把图片或扫描件里的文字识别出来。
但在大模型应用里,用户真正需要的往往不是"文字识别结果",而是**"可以被模型使用的文档结构"**。一份论文、合同、财报、招股书或扫描 PDF,不只是由字符组成,还包含标题层级、阅读顺序、表格、公式、图片、脚注、图注、页眉页脚和页面布局。
这就是 OCR 与 MinerU 需要组合起来讨论的原因。
一句话总结核心观点:
OCR 解决的是"看见文字"的问题;MinerU 更适合解决"把复杂文档编译成结构化知识"的问题。两者不是简单替代关系,而是上下游关系、互补关系和工程组合关系。
更准确地说:
OCR 是文档智能链路里的识别层,MinerU 是面向大模型工作流的文档解析与结构化层。
1. OCR 到底负责什么?
一个典型的 OCR 系统通常包含以下几个基础环节:
#mermaid-svg-jmTzYgFFZHKCtcEd{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-jmTzYgFFZHKCtcEd .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-jmTzYgFFZHKCtcEd .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-jmTzYgFFZHKCtcEd .error-icon{fill:#552222;}#mermaid-svg-jmTzYgFFZHKCtcEd .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jmTzYgFFZHKCtcEd .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-jmTzYgFFZHKCtcEd .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jmTzYgFFZHKCtcEd .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jmTzYgFFZHKCtcEd .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-jmTzYgFFZHKCtcEd .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jmTzYgFFZHKCtcEd .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jmTzYgFFZHKCtcEd .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jmTzYgFFZHKCtcEd .marker.cross{stroke:#333333;}#mermaid-svg-jmTzYgFFZHKCtcEd svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jmTzYgFFZHKCtcEd p{margin:0;}#mermaid-svg-jmTzYgFFZHKCtcEd .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jmTzYgFFZHKCtcEd .cluster-label text{fill:#333;}#mermaid-svg-jmTzYgFFZHKCtcEd .cluster-label span{color:#333;}#mermaid-svg-jmTzYgFFZHKCtcEd .cluster-label span p{background-color:transparent;}#mermaid-svg-jmTzYgFFZHKCtcEd .label text,#mermaid-svg-jmTzYgFFZHKCtcEd span{fill:#333;color:#333;}#mermaid-svg-jmTzYgFFZHKCtcEd .node rect,#mermaid-svg-jmTzYgFFZHKCtcEd .node circle,#mermaid-svg-jmTzYgFFZHKCtcEd .node ellipse,#mermaid-svg-jmTzYgFFZHKCtcEd .node polygon,#mermaid-svg-jmTzYgFFZHKCtcEd .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jmTzYgFFZHKCtcEd .rough-node .label text,#mermaid-svg-jmTzYgFFZHKCtcEd .node .label text,#mermaid-svg-jmTzYgFFZHKCtcEd .image-shape .label,#mermaid-svg-jmTzYgFFZHKCtcEd .icon-shape .label{text-anchor:middle;}#mermaid-svg-jmTzYgFFZHKCtcEd .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-jmTzYgFFZHKCtcEd .rough-node .label,#mermaid-svg-jmTzYgFFZHKCtcEd .node .label,#mermaid-svg-jmTzYgFFZHKCtcEd .image-shape .label,#mermaid-svg-jmTzYgFFZHKCtcEd .icon-shape .label{text-align:center;}#mermaid-svg-jmTzYgFFZHKCtcEd .node.clickable{cursor:pointer;}#mermaid-svg-jmTzYgFFZHKCtcEd .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-jmTzYgFFZHKCtcEd .arrowheadPath{fill:#333333;}#mermaid-svg-jmTzYgFFZHKCtcEd .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jmTzYgFFZHKCtcEd .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jmTzYgFFZHKCtcEd .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jmTzYgFFZHKCtcEd .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-jmTzYgFFZHKCtcEd .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jmTzYgFFZHKCtcEd .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-jmTzYgFFZHKCtcEd .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jmTzYgFFZHKCtcEd .cluster text{fill:#333;}#mermaid-svg-jmTzYgFFZHKCtcEd .cluster span{color:#333;}#mermaid-svg-jmTzYgFFZHKCtcEd div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jmTzYgFFZHKCtcEd .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-jmTzYgFFZHKCtcEd rect.text{fill:none;stroke-width:0;}#mermaid-svg-jmTzYgFFZHKCtcEd .icon-shape,#mermaid-svg-jmTzYgFFZHKCtcEd .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jmTzYgFFZHKCtcEd .icon-shape p,#mermaid-svg-jmTzYgFFZHKCtcEd .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-jmTzYgFFZHKCtcEd .icon-shape .label rect,#mermaid-svg-jmTzYgFFZHKCtcEd .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jmTzYgFFZHKCtcEd .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-jmTzYgFFZHKCtcEd .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-jmTzYgFFZHKCtcEd :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 图片/扫描页
图像预处理
文本检测
文本识别
输出: 文本框、字符、置信度、坐标
在这个链路里,OCR 的核心输出通常是:
- 识别出的文本
- 文本所在位置(边界框坐标)
- 行、段或文本框坐标
- 置信度
- 语言、方向或页面角度等辅助信息
这类输出非常适合解决基础识别问题,例如扫描件转文字、图片文字抽取、移动端拍照识别、票据识别等。
但 OCR 本身并不天然解决以下问题:
- 语义理解: 哪些文本是标题,哪些是正文?
- 版式还原: 多栏论文应该按什么顺序阅读?
- 噪声过滤: 页眉、页脚和页码是否应该进入正文?
- 复杂元素: 表格的行列结构如何恢复?公式应该如何转成 LaTeX?
- 元素关联: 图片、图表和图注之间是什么关系?
- 下游适配: 输出结果能不能直接进入 RAG、知识库或 Agent?
所以,对复杂文档来说,OCR 是必要能力,但不是完整答案。
2. MinerU 负责什么?
MinerU 的公开定位是高精度文档解析工具,支持 PDF、图片、DOC、DOCX、PPT、PPTX、XLS、XLSX 等文档解析,并生成 Markdown、JSON 等结构化结果。
从工程视角看,MinerU 更像一个文档解析编译器。它的任务不是只把字识别出来,而是尽可能把文档还原成下游系统(如RAG、Agent)可用的结构化内容。
可以把 MinerU 的能力抽象成下面这条链路:
#mermaid-svg-alhh8qOmYfYoxeHR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-alhh8qOmYfYoxeHR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-alhh8qOmYfYoxeHR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-alhh8qOmYfYoxeHR .error-icon{fill:#552222;}#mermaid-svg-alhh8qOmYfYoxeHR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-alhh8qOmYfYoxeHR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-alhh8qOmYfYoxeHR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-alhh8qOmYfYoxeHR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-alhh8qOmYfYoxeHR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-alhh8qOmYfYoxeHR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-alhh8qOmYfYoxeHR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-alhh8qOmYfYoxeHR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-alhh8qOmYfYoxeHR .marker.cross{stroke:#333333;}#mermaid-svg-alhh8qOmYfYoxeHR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-alhh8qOmYfYoxeHR p{margin:0;}#mermaid-svg-alhh8qOmYfYoxeHR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-alhh8qOmYfYoxeHR .cluster-label text{fill:#333;}#mermaid-svg-alhh8qOmYfYoxeHR .cluster-label span{color:#333;}#mermaid-svg-alhh8qOmYfYoxeHR .cluster-label span p{background-color:transparent;}#mermaid-svg-alhh8qOmYfYoxeHR .label text,#mermaid-svg-alhh8qOmYfYoxeHR span{fill:#333;color:#333;}#mermaid-svg-alhh8qOmYfYoxeHR .node rect,#mermaid-svg-alhh8qOmYfYoxeHR .node circle,#mermaid-svg-alhh8qOmYfYoxeHR .node ellipse,#mermaid-svg-alhh8qOmYfYoxeHR .node polygon,#mermaid-svg-alhh8qOmYfYoxeHR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-alhh8qOmYfYoxeHR .rough-node .label text,#mermaid-svg-alhh8qOmYfYoxeHR .node .label text,#mermaid-svg-alhh8qOmYfYoxeHR .image-shape .label,#mermaid-svg-alhh8qOmYfYoxeHR .icon-shape .label{text-anchor:middle;}#mermaid-svg-alhh8qOmYfYoxeHR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-alhh8qOmYfYoxeHR .rough-node .label,#mermaid-svg-alhh8qOmYfYoxeHR .node .label,#mermaid-svg-alhh8qOmYfYoxeHR .image-shape .label,#mermaid-svg-alhh8qOmYfYoxeHR .icon-shape .label{text-align:center;}#mermaid-svg-alhh8qOmYfYoxeHR .node.clickable{cursor:pointer;}#mermaid-svg-alhh8qOmYfYoxeHR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-alhh8qOmYfYoxeHR .arrowheadPath{fill:#333333;}#mermaid-svg-alhh8qOmYfYoxeHR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-alhh8qOmYfYoxeHR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-alhh8qOmYfYoxeHR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-alhh8qOmYfYoxeHR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-alhh8qOmYfYoxeHR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-alhh8qOmYfYoxeHR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-alhh8qOmYfYoxeHR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-alhh8qOmYfYoxeHR .cluster text{fill:#333;}#mermaid-svg-alhh8qOmYfYoxeHR .cluster span{color:#333;}#mermaid-svg-alhh8qOmYfYoxeHR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-alhh8qOmYfYoxeHR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-alhh8qOmYfYoxeHR rect.text{fill:none;stroke-width:0;}#mermaid-svg-alhh8qOmYfYoxeHR .icon-shape,#mermaid-svg-alhh8qOmYfYoxeHR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-alhh8qOmYfYoxeHR .icon-shape p,#mermaid-svg-alhh8qOmYfYoxeHR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-alhh8qOmYfYoxeHR .icon-shape .label rect,#mermaid-svg-alhh8qOmYfYoxeHR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-alhh8qOmYfYoxeHR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-alhh8qOmYfYoxeHR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-alhh8qOmYfYoxeHR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} PDF/图片/Office文档
文档类型判断与页面解析
OCR/版面分析/元素检测
阅读顺序恢复
表格/公式/图片等复杂元素结构化
输出: Markdown/JSON/HTML/LaTeX/图片资源
RAG/Agent/知识库
这意味着 MinerU 的价值不只在 OCR 层,而在 OCR 之后的结构化层。
对大模型应用来说,这个结构化层非常关键。因为 RAG 和 Agent 不适合直接消费一堆无结构文本,它们更需要:
- 清晰的标题层级 (
#,##,###) - 正确的段落顺序
- 可切分的 Markdown
- 可程序读取的 JSON
- 可还原的表格 (Markdown Table / HTML)
- 可计算和引用的公式 (LaTeX)
- 可追溯的图片资源 (Base64或文件路径)
- 能被 API、SDK、CLI、MCP 调用的工程接口
3. 差异对比:单独 OCR vs. OCR + MinerU
| 能力点 | 单独 OCR | OCR + MinerU |
|---|---|---|
| 文字识别 | 强 | 强 |
| 坐标信息 | 通常支持 | 可作为版面理解基础 |
| 阅读顺序 | 弱,尤其是多栏和复杂排版 | 强,更适合恢复人类阅读顺序 |
| 标题层级 | 通常需要复杂的后处理 | 强,更适合输出结构化层级 |
| 表格结构 | 容易碎成文本 | 强,更适合保留表格结构 |
| 公式识别 | 通常较弱 | 强,更适合输出 LaTeX 等结构形式 |
| 图片与图注 | 通常需要额外规则关联 | 强,更适合保留文档元素关系 |
| 输出格式 | Text / hOCR / TSV 等 | Markdown / JSON / HTML / LaTeX 等 |
| RAG 入库 | 需要大量清洗和重构 | 更接近可直接入库 |
| Agent 调用 | 需要自行封装 | 可通过 API / SDK / MCP 直接接入 |
所以,OCR 与 MinerU 的组合不是"识别两次",而是把 OCR 的识别结果放进更完整的文档结构化流程中。
4. 三种典型组合方式(工程实战)
在真实工程里,OCR 与 MinerU 可以有三种组合方式。
4.1 方式一:MinerU 作为端到端解析入口(最推荐)
这是最直接、最高效的方式。用户把 PDF、图片或 Office 文档交给 MinerU,由 MinerU 一站式完成文档解析,并输出结构化结果。
text
原始文档 → MinerU → Markdown/JSON/Images → Chunk/Index/Retrieve → RAG/Agent
适合场景:
- PDF 转 Markdown
- 扫描 PDF 解析
- 论文、合同、研报和财报解析
- RAG 入库前的数据准备
- Agent 调用文档解析能力
推荐: 对于大多数复杂文档解析场景,应该优先评估这条路径。
4.2 方式二:OCR 作为前置分流与质量检测(大规模系统)
在大规模文档系统里,OCR 可以先做低成本分流,判断文档类型,避免所有文档都走昂贵的深度解析。
text
文档进入系统 → 文件类型识别 → OCR/文本层预检 → 判断是否复杂/扫描/低质量
↓
复杂文档 → 进入 MinerU 深度解析
简单文档 → 走轻量索引
适合场景:
构建本地知识库、企业文档中心或批量文档处理平台。
4.3 方式三:OCR 作为专项补充能力(业务集成)
有些场景里,业务已有专用 OCR(如票据、证件OCR)。这时可以将OCR结果作为辅助信息,MinerU负责文档整体结构化。
text
业务专用OCR → 提供字段、置信度、坐标
↓
MinerU文档解析 → 提供Markdown、JSON、表格、公式、图片
↓
业务系统合并结果
适合场景: 企业业务系统,专用OCR负责特定字段,MinerU负责复杂文档结构和大模型可用内容。
5. 技术上最容易被忽略的4个问题
OCR 与 MinerU 组合时,真正难的不是"接一个 API",而是如何避免链路错误累积。
5.1 不要把 OCR 文本当成唯一真相
传统 OCR 输出往往是一段文本,但复杂文档里的信息不只在文本里。更好的做法是把 OCR 输出视为识别层结果 ,把 MinerU 的 Markdown/JSON 作为文档结构化最终结果。
5.2 不要重复 OCR
如果文档已经由 MinerU 完成解析,就不应该再对 Markdown 或截图做二次 OCR。建议基于文档哈希做解析缓存。
5.3 不要只评估 OCR 准确率 (CER/WER)
在复杂文档场景里,还需要评估:
- 阅读顺序是否正确?
- 标题层级是否保留?
- 表格结构是否可用?
- 公式是否可还原为LaTeX?
- 图片和图注是否对应?
- Markdown/JSON 是否适合下游使用?
5.4 不要对所有文件都走高成本深度解析
真实系统里,文档量可能极大。更合理的是分层处理:
| 文档状态 | 推荐处理方式 |
|---|---|
| 普通文本文件 (.txt, .md) | 轻量抽取和全文索引 |
| 原生PDF (有文本层) | 先抽文本层,再判断是否需要深度解析 |
| 扫描PDF (无文本层) | 进入 OCR + MinerU 结构解析 |
| 含表格、公式、论文类文档 | 优先进入 MinerU 深度解析 |
| 高敏感文件 | 优先本地处理 |
| 需要高精度恢复的复杂文档 | 用户确认后走云端高精度解析 |
6. 与典型 OCR 工具的技术对比
从技术定位看,Tesseract、PaddleOCR 和 MinerU 可以代表三个层级。
| 工具 | 定位 | 优势 | 局限 |
|---|---|---|---|
| Tesseract | 传统 OCR 引擎 | 成熟、开源、本地化、语言覆盖广 | 不负责复杂文档结构恢复 |
| PaddleOCR | OCR与文档智能工具箱 | 功能全面,含版面/表格/公式分析 | 在复杂PDF转Markdown、与LLM生态集成方面,接入成本较高 |
| MinerU | 面向 LLM 的文档解析基础设施 | 输出直接适配RAG/Agent,Markdown/JSON质量高,生态集成好 | 相对较新,部分细分领域可能仍在迭代 |
结论: 如果只需要图片识字,Tesseract等传统工具足够;但如果需要让复杂文档进入大模型工作流,MinerU是更优的基础设施选择。
7. 推荐的技术评测指标(四层体系)
如果要评估 OCR 与 MinerU 的组合价值,建议建立以下分层指标:
- OCR 层指标: CER, WER, 检测框准确率等。
- 文档结构层指标: 阅读顺序准确率,布局元素F1值,页眉页脚过滤质量。
- 复杂元素层指标: 表格结构准确率,公式LaTeX转换准确率,图片提取质量。
- 下游应用层指标(最重要): Markdown可用性,Chunk质量,RAG检索质量,引用可追溯性。
8. 一个更合理的生产架构(分层设计)
text
【文件接入层】 → 上传、扫描、API导入
↓
【文档预检层】 → 文件类型、大小、文本层、扫描比例、敏感策略
↓
【轻量索引层】 → 元数据、全文索引、基础标签 (Elasticsearch, Qdrant...)
↓
【深度解析层】 → MinerU 本地解析 / MinerU 云端高精度解析
↓
【结果存储层】 → Markdown, JSON, HTML, LaTeX, 图片资源, 解析日志
↓
【应用服务层】 → 搜索、RAG、Agent API、MCP、知识库
核心原则: 能轻量处理的文档不强制深度解析,真正复杂和高价值的文档再进入 MinerU 深度解析。
9. 总结
OCR 与 MinerU 的关系,可以用一句话概括:
OCR 把文字从图像里识别出来,MinerU 把复杂文档编译成大模型可用的结构化知识。
如果只做 OCR,系统得到的是文本 ;如果把 OCR 与 MinerU 组合起来,系统得到的是更接近知识资产的 Markdown、JSON、表格、公式、图片和结构关系。
这对 RAG、Agent 和知识库有直接意义:
- 检索更容易命中正确片段
- 切块更不容易打断语义
- 表格和公式信息不丢失
- 文档来源更容易追溯
- 本地与云端可按需选择
因此,MinerU 不应该被放在"传统 OCR 工具"的窄框里理解。它更适合被定位为:
连接 OCR 与大模型应用的复杂文档解析层。
当用户只需要图片识字,传统 OCR 工具就足够;当用户需要让论文、合同、财报、扫描 PDF 进入 RAG、Agent 和知识库,OCR 与 MinerU 的组合才是更完整的工程答案。
参考资料
你在处理PDF转Markdown或构建RAG时,遇到过哪些文档解析的"坑"?欢迎在评论区分享你的经验和解决方案!如果觉得本文有帮助,请点赞、收藏、转发支持一下~