欢迎光临
我们一直在努力

文档解析工具对比(PaddleOCR与MinerU)

PaddleOCR 与 MinerU:一个认字,一个还原整份文档

一句话总结:这两个工具根本不在同一层。PaddleOCR 是"眼睛"——检测文字框 + 识别字符,输出「文字 + 坐标」;MinerU 是"整条流水线"——版面分析、表格还原、公式转 LaTeX、阅读顺序重排,直接输出 Markdown/JSON。最能说明问题的一个事实是:MinerU 的 pipeline 后端,底层用的就是 PaddleOCR 的 PP-OCR 模型。 它不是竞品,是上下游。要"读出字"选 PaddleOCR,要"读懂整页"选 MinerU。


📋 目录

  • 先纠一个常见误解:它们不是竞品
  • PaddleOCR:解决"字长什么样"
  • MinerU:解决"文档长什么样"
  • 一张表对比
  • 一个决定性事实:MinerU 内部就在用 PaddleOCR
  • 怎么选:决策树 + 组合用法
  • 三个坑(含许可证)
  • 总结

  • 一、先纠一个常见误解:它们不是竞品

    很多人把这两个放在一起问"哪个更好",但它们解决的问题根本不同:

    解决的问题类比
    PaddleOCR 图片里有哪些字、在哪 打字员:把纸上每个字敲出来
    MinerU 这一页是什么结构、按什么顺序读 编辑:先框出标题/正文/表格,再决定怎么排

    为什么这个区分重要?

    因为**"识别准确"和"结构正确"是两件事**:

    PDF 原文(双栏论文):
    ┌─────────────┬─────────────┐
    │ 左栏正文 A │ 右栏正文 B │
    │ [表 1] │ 公式 (3) │
    └─────────────┴─────────────┘

    纯 OCR 的输出(按行扫):
    A 的第一行 + B 的第一行 + A 的第二行 + B 的第二行 … ❌ 全乱了

    结构化解析的输出:
    ## 标题
    A 的完整段落…
    B 的完整段落…
    | 表格内容 |
    $$ 公式 $$
    ✅ 顺序正确

    PaddleOCR 给你的是"字",MinerU 给你的是"读得懂的文档"。


    二、PaddleOCR:解决"字长什么样"

    2.1 它是什么

    百度飞桨团队的通用 OCR 工具库,Apache 2.0 协议,是中文 OCR 事实上的开源标杆。

    核心流程四步:图像预处理 → 文本检测(找出文字框)→ 方向分类(判断横竖/旋转)→ 文本识别(转成 Unicode)。

    2.2 现在的 3.x 有三条产品线

    注意:3.x 与 2.x 不向后兼容,老代码会直接报错。

    产品线定位输出
    PP-OCRv6 纯文字识别 文字 + 坐标 + 置信度
    PP-StructureV3 版面 + 表格 + 公式 Markdown / JSON(含精细坐标)
    PaddleOCR-VL 0.9B 视觉语言模型 结构化 Markdown / JSON

    PP-OCRv6(2026-06 随 PaddleOCR 3.7 发布)的几个关键数字:

    • 三个档位:tiny 1.5M / small 7.7M / medium 34.5M 参数
    • 一个识别模型覆盖 50 种语言(中、英、日 + 46 种拉丁语系)
    • 相比 PP-OCRv5_server:检测精度 +4.6%,识别精度 +5.1%
    • CPU 推理提速 5.2 倍

    💡 这就是它最不可替代的地方:小、快、CPU 就能跑、中文强。

    2.3 怎么用

    pip install paddlepaddle paddleocr

    from paddleocr import PaddleOCR

    ocr = PaddleOCR(lang="ch", ocr_version="PP-OCRv6")
    result = ocr.predict("invoice.png") # 返回文字 + 坐标 + 置信度

    命令行也行:

    paddleocr ocr -i invoice.png –save_path ./output

    2.4 强在哪、弱在哪

    ✅ 强项❌ 弱项
    轻量:mobile 档位几 MB,边缘设备能跑 不管结构:输出的是一堆文本框,不是段落
    快:实时视频流、批量票据都扛得住 公式不认:需要另外集成方案
    中文识别强:印刷体 + 常见手写体 表格弱:跨页、合并单元格会退化成拼接文本
    多语言:100+ 语言 无阅读顺序:双栏排版会乱

    三、MinerU:解决"文档长什么样"

    3.1 它是什么

    上海人工智能实验室 OpenDataLab 出品的一站式文档解析引擎,2024 年 7 月开源,GitHub 已 8 万+ star。

    目标很明确:把 PDF、图片、Word、PPT、Excel 转成干净、LLM-Ready 的 Markdown / JSON。

    3.2 五步流程

    #mermaid-svg-CjzMlnGD1w3wocw5{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-CjzMlnGD1w3wocw5 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CjzMlnGD1w3wocw5 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CjzMlnGD1w3wocw5 .error-icon{fill:#552222;}#mermaid-svg-CjzMlnGD1w3wocw5 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CjzMlnGD1w3wocw5 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CjzMlnGD1w3wocw5 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CjzMlnGD1w3wocw5 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CjzMlnGD1w3wocw5 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CjzMlnGD1w3wocw5 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CjzMlnGD1w3wocw5 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CjzMlnGD1w3wocw5 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CjzMlnGD1w3wocw5 .marker.cross{stroke:#333333;}#mermaid-svg-CjzMlnGD1w3wocw5 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CjzMlnGD1w3wocw5 p{margin:0;}#mermaid-svg-CjzMlnGD1w3wocw5 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-CjzMlnGD1w3wocw5 .cluster-label text{fill:#333;}#mermaid-svg-CjzMlnGD1w3wocw5 .cluster-label span{color:#333;}#mermaid-svg-CjzMlnGD1w3wocw5 .cluster-label span p{background-color:transparent;}#mermaid-svg-CjzMlnGD1w3wocw5 .label text,#mermaid-svg-CjzMlnGD1w3wocw5 span{fill:#333;color:#333;}#mermaid-svg-CjzMlnGD1w3wocw5 .node rect,#mermaid-svg-CjzMlnGD1w3wocw5 .node circle,#mermaid-svg-CjzMlnGD1w3wocw5 .node ellipse,#mermaid-svg-CjzMlnGD1w3wocw5 .node polygon,#mermaid-svg-CjzMlnGD1w3wocw5 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CjzMlnGD1w3wocw5 .rough-node .label text,#mermaid-svg-CjzMlnGD1w3wocw5 .node .label text,#mermaid-svg-CjzMlnGD1w3wocw5 .image-shape .label,#mermaid-svg-CjzMlnGD1w3wocw5 .icon-shape .label{text-anchor:middle;}#mermaid-svg-CjzMlnGD1w3wocw5 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CjzMlnGD1w3wocw5 .rough-node .label,#mermaid-svg-CjzMlnGD1w3wocw5 .node .label,#mermaid-svg-CjzMlnGD1w3wocw5 .image-shape .label,#mermaid-svg-CjzMlnGD1w3wocw5 .icon-shape .label{text-align:center;}#mermaid-svg-CjzMlnGD1w3wocw5 .node.clickable{cursor:pointer;}#mermaid-svg-CjzMlnGD1w3wocw5 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CjzMlnGD1w3wocw5 .arrowheadPath{fill:#333333;}#mermaid-svg-CjzMlnGD1w3wocw5 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CjzMlnGD1w3wocw5 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CjzMlnGD1w3wocw5 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CjzMlnGD1w3wocw5 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CjzMlnGD1w3wocw5 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CjzMlnGD1w3wocw5 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CjzMlnGD1w3wocw5 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CjzMlnGD1w3wocw5 .cluster text{fill:#333;}#mermaid-svg-CjzMlnGD1w3wocw5 .cluster span{color:#333;}#mermaid-svg-CjzMlnGD1w3wocw5 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-CjzMlnGD1w3wocw5 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CjzMlnGD1w3wocw5 rect.text{fill:none;stroke-width:0;}#mermaid-svg-CjzMlnGD1w3wocw5 .icon-shape,#mermaid-svg-CjzMlnGD1w3wocw5 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CjzMlnGD1w3wocw5 .icon-shape p,#mermaid-svg-CjzMlnGD1w3wocw5 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CjzMlnGD1w3wocw5 .icon-shape .label rect,#mermaid-svg-CjzMlnGD1w3wocw5 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CjzMlnGD1w3wocw5 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CjzMlnGD1w3wocw5 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CjzMlnGD1w3wocw5 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    ① 输入预处理区分原生文本/扫描件

    ② 版面分析框出标题/正文/表格/公式

    ③ 内容识别OCR/表格/公式/VLM 各司其职

    ④ 结构化还原拼接 + 阅读顺序 + 跨页合并

    ⑤ 格式输出Markdown / JSON / HTML

    它真正解决的是第 ②④ 步——这两步恰恰是纯 OCR 完全做不了的。

    3.3 三种推理后端(这是它最实用的设计)

    后端特点适合
    pipeline 小模型级联,无幻觉,CPU 可跑 常规文档、纯文本、批量处理
    vlm 视觉大模型,精度最高 复杂排版、低质量扫描件
    hybrid 原生文本提取 + VLM 增强 兼顾精度与低幻觉

    💡 选后端的经验:先跑 pipeline,不够再上 vlm。 pipeline 的"无幻觉"在小模型里非常难得——它不会给你编造不存在的表格内容。

    3.4 怎么用

    pip install -U "mineru[all]"

    # 最简:pipeline 后端,CPU 也能跑
    mineru -p input.pdf -o ./output -b pipeline

    Python 3.10–3.13。

    3.5 强在哪、弱在哪

    ✅ 强项❌ 弱项
    复杂版面:双栏/多栏、跨页表格、页眉页脚自动过滤 重:多模型,磁盘占用 GB 级
    公式转 LaTeX、表格转 HTML 慢:CPU 上一页十几秒,GPU 也要 2–5 秒
    原生解析 DOCX/PPTX/XLSX(3.x 新增,不用先转 PDF) 手写较弱:底层 OCR 词表有限,生僻字易失败
    109 种语言、竖排文本、印章识别 古籍识别差(第三方评价),历史文献要先试样
    全私有化部署,适配 10+ 国产芯片 API 还在演进,跨版本升级需注意

    四、一张表对比

    维度PaddleOCRMinerU
    定位 通用 OCR 工具库 一站式文档解析引擎
    核心能力 检测 + 识别 + 方向分类 版面 + OCR + 表格 + 公式 + 排版还原
    输出 文字 + 坐标 + 置信度 Markdown / JSON(含完整结构)
    复杂排版 ❌ 弱,需二次开发 ✅ 强,原生支持多栏/跨页
    公式 ❌ 无 ✅ 内置,直出 LaTeX
    表格 ⚠️ 基础 ✅ 跨页合并、单元格还原
    资源 极轻,纯 CPU 流畅 pipeline 约 4G 显存,VLM 约 8G
    速度 毫秒~百毫秒级 秒/页级
    典型场景 票据、证件、车牌、实时检测 论文、财报、技术手册、RAG 预处理
    协议 Apache 2.0 MinerU 许可证(基于 Apache 2.0 + 附加条款)

    五、一个决定性事实:MinerU 内部就在用 PaddleOCR

    这是理解两者关系的关键。

    MinerU 的 pipeline 后端,底层 OCR 用的就是 PaddleOCR 的 PP-OCRv5 / PP-OCRv6 模型。3.4 版本升级到 PP-OCRv6 后,官方口径是 OCR 精度提升约 11%,速度翻倍。

    所以真实的分工是:

    #mermaid-svg-QJ28RDTTgf3JETZA{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-QJ28RDTTgf3JETZA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QJ28RDTTgf3JETZA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QJ28RDTTgf3JETZA .error-icon{fill:#552222;}#mermaid-svg-QJ28RDTTgf3JETZA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QJ28RDTTgf3JETZA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QJ28RDTTgf3JETZA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QJ28RDTTgf3JETZA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QJ28RDTTgf3JETZA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QJ28RDTTgf3JETZA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QJ28RDTTgf3JETZA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QJ28RDTTgf3JETZA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QJ28RDTTgf3JETZA .marker.cross{stroke:#333333;}#mermaid-svg-QJ28RDTTgf3JETZA svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QJ28RDTTgf3JETZA p{margin:0;}#mermaid-svg-QJ28RDTTgf3JETZA .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-QJ28RDTTgf3JETZA .cluster-label text{fill:#333;}#mermaid-svg-QJ28RDTTgf3JETZA .cluster-label span{color:#333;}#mermaid-svg-QJ28RDTTgf3JETZA .cluster-label span p{background-color:transparent;}#mermaid-svg-QJ28RDTTgf3JETZA .label text,#mermaid-svg-QJ28RDTTgf3JETZA span{fill:#333;color:#333;}#mermaid-svg-QJ28RDTTgf3JETZA .node rect,#mermaid-svg-QJ28RDTTgf3JETZA .node circle,#mermaid-svg-QJ28RDTTgf3JETZA .node ellipse,#mermaid-svg-QJ28RDTTgf3JETZA .node polygon,#mermaid-svg-QJ28RDTTgf3JETZA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QJ28RDTTgf3JETZA .rough-node .label text,#mermaid-svg-QJ28RDTTgf3JETZA .node .label text,#mermaid-svg-QJ28RDTTgf3JETZA .image-shape .label,#mermaid-svg-QJ28RDTTgf3JETZA .icon-shape .label{text-anchor:middle;}#mermaid-svg-QJ28RDTTgf3JETZA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QJ28RDTTgf3JETZA .rough-node .label,#mermaid-svg-QJ28RDTTgf3JETZA .node .label,#mermaid-svg-QJ28RDTTgf3JETZA .image-shape .label,#mermaid-svg-QJ28RDTTgf3JETZA .icon-shape .label{text-align:center;}#mermaid-svg-QJ28RDTTgf3JETZA .node.clickable{cursor:pointer;}#mermaid-svg-QJ28RDTTgf3JETZA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QJ28RDTTgf3JETZA .arrowheadPath{fill:#333333;}#mermaid-svg-QJ28RDTTgf3JETZA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QJ28RDTTgf3JETZA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QJ28RDTTgf3JETZA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QJ28RDTTgf3JETZA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QJ28RDTTgf3JETZA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QJ28RDTTgf3JETZA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QJ28RDTTgf3JETZA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QJ28RDTTgf3JETZA .cluster text{fill:#333;}#mermaid-svg-QJ28RDTTgf3JETZA .cluster span{color:#333;}#mermaid-svg-QJ28RDTTgf3JETZA 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-QJ28RDTTgf3JETZA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QJ28RDTTgf3JETZA rect.text{fill:none;stroke-width:0;}#mermaid-svg-QJ28RDTTgf3JETZA .icon-shape,#mermaid-svg-QJ28RDTTgf3JETZA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QJ28RDTTgf3JETZA .icon-shape p,#mermaid-svg-QJ28RDTTgf3JETZA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QJ28RDTTgf3JETZA .icon-shape .label rect,#mermaid-svg-QJ28RDTTgf3JETZA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QJ28RDTTgf3JETZA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QJ28RDTTgf3JETZA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QJ28RDTTgf3JETZA :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    PaddleOCR(打字员)

    MinerU(编辑)

    版面分析这里是标题/正文/表格

    阅读顺序先读哪、后读哪

    跨页合并 / 公式 / 表格结构

    检测文字框

    识别每个框里的字

    Markdown / JSON

    角色谁负责
    怎么读才是对的 MinerU
    字到底长什么样 PaddleOCR

    🎯 一句话:MinerU 决定"读哪里、按什么顺序读",PaddleOCR 负责"把那个框里的字认出来"。

    这也解释了为什么 MinerU 支持把底层 OCR 引擎换成 PaddleOCR——因为它本来就是这么设计的。


    六、怎么选:决策树 + 组合用法

    #mermaid-svg-7FRL2mUgqapFgzg7{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-7FRL2mUgqapFgzg7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7FRL2mUgqapFgzg7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7FRL2mUgqapFgzg7 .error-icon{fill:#552222;}#mermaid-svg-7FRL2mUgqapFgzg7 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7FRL2mUgqapFgzg7 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7FRL2mUgqapFgzg7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7FRL2mUgqapFgzg7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7FRL2mUgqapFgzg7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7FRL2mUgqapFgzg7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7FRL2mUgqapFgzg7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7FRL2mUgqapFgzg7 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7FRL2mUgqapFgzg7 .marker.cross{stroke:#333333;}#mermaid-svg-7FRL2mUgqapFgzg7 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7FRL2mUgqapFgzg7 p{margin:0;}#mermaid-svg-7FRL2mUgqapFgzg7 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-7FRL2mUgqapFgzg7 .cluster-label text{fill:#333;}#mermaid-svg-7FRL2mUgqapFgzg7 .cluster-label span{color:#333;}#mermaid-svg-7FRL2mUgqapFgzg7 .cluster-label span p{background-color:transparent;}#mermaid-svg-7FRL2mUgqapFgzg7 .label text,#mermaid-svg-7FRL2mUgqapFgzg7 span{fill:#333;color:#333;}#mermaid-svg-7FRL2mUgqapFgzg7 .node rect,#mermaid-svg-7FRL2mUgqapFgzg7 .node circle,#mermaid-svg-7FRL2mUgqapFgzg7 .node ellipse,#mermaid-svg-7FRL2mUgqapFgzg7 .node polygon,#mermaid-svg-7FRL2mUgqapFgzg7 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7FRL2mUgqapFgzg7 .rough-node .label text,#mermaid-svg-7FRL2mUgqapFgzg7 .node .label text,#mermaid-svg-7FRL2mUgqapFgzg7 .image-shape .label,#mermaid-svg-7FRL2mUgqapFgzg7 .icon-shape .label{text-anchor:middle;}#mermaid-svg-7FRL2mUgqapFgzg7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7FRL2mUgqapFgzg7 .rough-node .label,#mermaid-svg-7FRL2mUgqapFgzg7 .node .label,#mermaid-svg-7FRL2mUgqapFgzg7 .image-shape .label,#mermaid-svg-7FRL2mUgqapFgzg7 .icon-shape .label{text-align:center;}#mermaid-svg-7FRL2mUgqapFgzg7 .node.clickable{cursor:pointer;}#mermaid-svg-7FRL2mUgqapFgzg7 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7FRL2mUgqapFgzg7 .arrowheadPath{fill:#333333;}#mermaid-svg-7FRL2mUgqapFgzg7 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7FRL2mUgqapFgzg7 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7FRL2mUgqapFgzg7 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7FRL2mUgqapFgzg7 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7FRL2mUgqapFgzg7 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7FRL2mUgqapFgzg7 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7FRL2mUgqapFgzg7 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7FRL2mUgqapFgzg7 .cluster text{fill:#333;}#mermaid-svg-7FRL2mUgqapFgzg7 .cluster span{color:#333;}#mermaid-svg-7FRL2mUgqapFgzg7 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-7FRL2mUgqapFgzg7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7FRL2mUgqapFgzg7 rect.text{fill:none;stroke-width:0;}#mermaid-svg-7FRL2mUgqapFgzg7 .icon-shape,#mermaid-svg-7FRL2mUgqapFgzg7 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7FRL2mUgqapFgzg7 .icon-shape p,#mermaid-svg-7FRL2mUgqapFgzg7 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7FRL2mUgqapFgzg7 .icon-shape .label rect,#mermaid-svg-7FRL2mUgqapFgzg7 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7FRL2mUgqapFgzg7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7FRL2mUgqapFgzg7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7FRL2mUgqapFgzg7 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    要,且排版复杂

    不要,只要能读字

    边缘设备 / 纯 CPU / 要实时

    有 GPU 服务器

    要

    不要

    要做文档处理

    需要结构化输出吗?Markdown / JSON

    MinerU

    部署环境?

    PaddleOCR

    要公式和表格吗?

    六个典型场景

    场景选谁
    发票 / 身份证 / 车牌识别 PaddleOCR
    实时视频流文字检测 PaddleOCR
    嵌入式 / 树莓派 / 手机端 PaddleOCR
    学术论文 → Markdown(含公式) MinerU
    财务报表 / 合同 → 结构化数据 MinerU
    给 RAG 建知识库做数据预处理 MinerU

    也可以组合用

    真实项目里最常见的组合是:

    MinerU 做整份文档的结构化解析(主力)
    ↓ 遇到特殊场景(票据、证件、竖排小字)
    PaddleOCR 做定点补充识别

    或者反过来:

    PaddleOCR 先在边缘端做快速预筛(判断这份文档要不要走重流程)
    ↓ 值得解析的
    送到服务端用 MinerU 做完整结构化


    七、三个坑(含许可证)

    坑 1:MinerU 的许可证变过,别按老文章判断

    这个必须说清楚,涉及商用合规:

    版本协议
    3.1.0 之前 AGPLv3(有传染性,商用要谨慎)
    3.1.0 起 MinerU 开源许可证(基于 Apache 2.0 + 附加条款)

    3.1.0 之后:绝大多数场景可直接商用,无需授权。但有两条附加条件:

    • 超大规模:月活超 1 亿 或 月收入超 2000 万美元,需另行取得商业许可
    • 对外提供在线服务:需在产品界面或公开文档的显著位置标注使用了 MinerU

    ⚠️ 网上很多 2025 年的文章还在说"MinerU 是 AGPLv3,商用有风险"——那是 3.1.0 之前的旧信息。

    坑 2:PaddleOCR 3.x 不兼容 2.x

    # ❌ 2.x 写法,3.x 会报错
    PaddleOCR(use_angle_cls=True, lang="ch", show_log=False)

    # ✅ 3.x 写法
    PaddleOCR(lang="ch", ocr_version="PP-OCRv6")

    如果你搜到的教程里还在传 use_angle_cls、show_log 这些参数,那篇是 2.x 时代的。

    坑 3:以为"上了 MinerU 就不用 PaddleOCR 了"

    MinerU 的 pipeline 后端本来就在用 PaddleOCR。

    所以:

    • 不必二选一
    • 也不会因为用了 MinerU 就"绕过" PaddleOCR
    • 反而要关注 MinerU 版本里打包的是哪个 PP-OCR 版本(3.4 之前是 v5,之后是 v6)

    八、总结

    三句话记住区别

  • PaddleOCR 是"眼睛":把图里的字找出来、认出来,输出文字 + 坐标。
  • MinerU 是"整条流水线":在 OCR 之上做版面分析 + 阅读顺序 + 公式/表格还原,输出 Markdown/JSON。
  • 它们是上下游,不是竞品——MinerU 的 pipeline 后端,底层就是 PaddleOCR。
  • ✅ 应该做的

    • 要"读出字"选 PaddleOCR,要"读懂整页"选 MinerU
    • PaddleOCR 用 3.x 新 API(ocr_version="PP-OCRv6")
    • MinerU 先跑 pipeline 后端,精度不够再上 vlm
    • 商用前核对 MinerU 的许可证版本(3.1.0 是分水岭)
    • 古籍、手写、生僻字场景先用自己的样本试样
    • 复杂项目两个一起用,不要纠结二选一

    ❌ 不要做的

    • ❌ 把两者当竞品比较"谁更准"
    • ❌ 用 PaddleOCR 直接处理双栏论文还期待正确顺序
    • ❌ 用 MinerU 做实时 OCR(它一秒才处理一页)
    • ❌ 照抄 PaddleOCR 2.x 的教程
    • ❌ 相信"MinerU 是 AGPLv3"这种过时说法

    🎯 最后一句

    文档解析的难点从来不是"认字",而是"认完字之后怎么摆回去"。 PaddleOCR 把字认得很准,MinerU 把摆回去这件事做成了产品——所以它们才能成为一条流水线上的两段,而不是擂台上的对手。


    📚 参考资料

    • PaddleOCR 仓库:https://github.com/PaddlePaddle/PaddleOCR
    • PaddleOCR 文档:https://paddleocr.dev/zh
    • MinerU 仓库:https://github.com/opendatalab/MinerU
    • MinerU 官网:https://mineru.net/
    • MinerU 3.1.0 协议变更说明(官方公众号)
    • OmniDocBench 榜单(文档解析评测基准)

    版本说明(2026-10 核对): PaddleOCR 3.x 线,PP-OCRv6 于 2026-06-11 随 3.7.0 发布(tiny 1.5M / small 7.7M / medium 34.5M,单模型 50 语言,CPU 提速 5.2×);PaddleOCR-VL-1.6 官方自报 OmniDocBench v1.6 96.3%(官方自测,未经第三方复现)。 MinerU 已迭代至 3.x / 4.0,3.4 版 pipeline 后端升级为 PP-OCRv6;3.1.0 起许可证由 AGPLv3 改为基于 Apache 2.0 的 MinerU 许可证。 两者迭代都很快,具体参数与协议请以官方 README 为准。


    如果这篇对你有帮助,欢迎点赞 + 收藏。下一篇可以写 MinerU 三种后端(pipeline / vlm / hybrid)实测对比,或者 从 PDF 到 RAG 知识库的完整流水线——评论区告诉我。

    赞(0)
    未经允许不得转载:171主机测评 » 文档解析工具对比(PaddleOCR与MinerU)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址