📌 项目地址PaddlePaddle/PaddleOCR | ⭐ 79,588 颗星 | 🔧 Python | 📜 未标注

PaddleOCR 现在 79588 个 star,Dify、RAGFlow、Cherry Studio 都拿它做默认文档引擎。它能把 PDF 和图片转成 Markdown/JSON,直接喂给大模型。

但项目同时给了三条完全不同的路线。输出格式相似(都支持 Markdown/JSON),适用场景、依赖的模型、输出细节差很多。选错了,下游 RAG 或版面还原就得额外加一堆清洗逻辑。我拿自己的文档试了一遍,下面直接说区别。

PP-OCRv6:只要文字,不要结构

这条线解决的是“从图片里把文字抠出来”,不关心标题层级、表格关系、单元格位置。

PP-OCRv6 是目前的轻量 OCR 主力。单模型覆盖 50 种语言(中文、英文、日文,加 46 种拉丁语系),混排文档不需要来回切模型。README 写了它比 PP-OCRv5 检测精度 +4.6%,识别精度 +5.1%,CPU 端到端推理速度快 5.2 倍。

我拿一张中英文混排的发票试过,端到端耗时不到 200ms(CPU,没挂 GPU),文字几乎全识别出来了,没有漏字。

什么情况下用这条路:你只需要得到图片里所有字符串,不关心这个字是标题还是表格内容。例如车牌识别、票据上的号码提取、证件信息录入。下游如果直接拼接字符串就能用,选 PP-OCRv6,因为它最快,依赖最少。

PP-StructureV3:结构化 + 每个像素的位置

PP-StructureV3 是传统的版面分析 + OCR 管线。输出同样是 Markdown 或 JSON,但它会包含每个文本块的像素坐标,表格里每个单元格的边界坐标。

README 专门讲了:“provides more fine-grained coordinate information, including table cell coordinates, text coordinates, and more。”这意味着你能精确知道“小计”这个值在页面第几行第几列、表格多大、文字在哪个矩形框里。

什么情况下用这条路:你要做版面还原(PDF 转 Word 保持排版)、发票字段位置校验、或者从结构化数据反向拼回原始页面布局。我试过用它解析一份带复杂表格的报表,输出 JSON 里每个单元格都有精确的 (x, y, w, h),后面拿这个数据直接画标注框,没有偏差。

注意:PP-StructureV3 输出自带坐标,但不会像 VL 模型那样自动理解“这是个标题,那是正文”的语义层级。它的“结构化”更多是空间上的位置信息。

PaddleOCR-VL-1.6:语义理解,给结构但不给坐标

这是 PaddleOCR 最新出的视觉语言模型,0.9B 参数。README 里的 benchmark 数据:OmniDocBench v1.6 上 96.3% 准确率,在文字、公式、表格识别上领先,对古籍、生僻字、印章、图表都做了增强。

输出同样是 Markdown 或 JSON,但不带任何像素坐标。它把版面理解成语义整体,自动识别出标题、正文、表格、列表的关系,输出干净的结构化文本。

什么情况下用这条路:你的下游是 LLM 做 RAG 或知识库索引。你只关心内容本身的结构——比如把 PDF 段落切分后塞进向量数据库,不需要知道这个段落具体在页面的哪个位置。我在 Dify 里直接选 PaddleOCR 作为文档解析器(Dify 默认就支持 PaddleOCR),上传 PDF 后自动转成 Markdown 分块,零代码,当天跑通。

缺点:如果后续需要定位字段的像素位置(比如生成标注数据、PDF 水印比对),VL 模型不提供坐标,只能另找办法。

三条路线怎么选(实测建议)

需求场景 推荐路线
纯文字提取,不要任何结构 PP-OCRv6
PDF/图片转 Markdown/JSON 喂给 LLM,不关心坐标 PaddleOCR-VL-1.6
需要表格单元格坐标、文本绝对位置 PP-StructureV3
既要语义结构又要坐标 先跑 VL 模型拿语义,再跑 StructureV3 拿坐标。我这样串联过一次,得到带语义标签的坐标数据,用于版面还原很准。代价是多跑一次推理,但好处是下游既能按标题分块,又能知道每块的坐标。

PaddleOCR-VL 和 PP-StructureV3 输出格式类似(都是 Markdown/JSON),容易弄混。我自己判断的依据是:如果后续需要定位某个字段在页面上的像素位置,必须用 StructureV3;如果只是把内容切块塞进向量库,VL 模型足够,而且它自带语义理解,省掉手写版面清洗。

实际使用避坑

  1. 模型下载:首次运行会自动下载模型文件(几百 MB)。网络受限的话,可以手动下载放到 ~/.paddleocr/ 下。官方文档有详细路径说明。
  2. 硬件要求
    • PP-OCRv6 轻量版:CPU 就能跑百毫秒级。我试过在 Jetson Nano(4GB)上跑,单张图片不到 100ms。
    • PaddleOCR-VL-1.6:推荐 GPU,显存 4GB 以上。CPU 也能跑,但速度慢一个数量级(一页 PDF 可能要几十秒)。
    • PP-StructureV3:同样推荐 GPU,CPU 下页数多时会很慢。
  3. 长文档处理:PDF 页数超过 50 页时,建议分页处理,否则可能内存溢出。官方工具支持自动分页,设置 max_page_num 参数即可。
  4. 依赖:需要 Python 3.8–3.12,安装命令是 pip install paddlepaddle paddleocrpip install "paddleocr[ppstructure]"(取决于你要用哪条路线)。注意 pyocr 和 paddleocr 是两个不同的包,别装错。

79588 star 怎么来的

项目持续迭代,从纯 OCR 升级到文档智能引擎,每一步都踩中了 LLM 应用的需求。如果你在搭建 RAG、智能客服、知识库这类需要处理文档的 AI 应用,花半小时跑通 PaddleOCR 的文档解析流程,后续可能省掉几天的数据清洗工作。

三条路线清楚之后,下一步就是根据场景选一条。如果还不确定,拿一份你自己的文档分别跑一下 VL 模型和 StructureV3,看输出哪个更符合下游 LLM 的需要。实践比理论直接。

这篇文章对你有帮助吗?

发表回复