项目快照:PaddlePaddle/PaddleOCR,约 87,742 个 Star,11,176 个 Fork;最新推送时间 2026-07-22T11:59:34Z。本文基于仓库公开资料撰写。

项目地址:https://github.com/PaddlePaddle/PaddleOCR · https://www.paddleocr.com

PaddleOCR 从代码、运行环境到实践流程的项目封面
PaddleOCR 的项目能力与实践流程示意。

项目速览(TL;DR)

PaddleOCR 是基于 PaddlePaddle 的光学字符识别(Optical Character Recognition,OCR)与文档解析工具包,项目目标是把 PDF 文档和图像转换为面向人工智能应用的结构化数据。仓库描述明确提到,输出可以面向结构化数据处理,并服务于图像或 PDF 与大语言模型(Large Language Model,LLM)之间的数据转换环节。

根据给定 GitHub 仓库元信息,项目使用 Python,默认分支为 main,采用 Apache-2.0 许可证,Star 数为 87742,Fork 数为 11176。README 标注支持 100 多种语言;其中 PP-OCRv6 的说明是由一个统一模型覆盖中文、英文、日文和 46 种拉丁字母语言,具体支持范围仍应以对应版本文档为准。

  • 主要输入:图像和 PDF 文档;README 还列出身份证件、街景、书籍和工业部件等场景。
  • 主要输出:文本识别结果,以及由文档解析流程生成的 Markdown 和 JSON 结构化结果。
  • 核心模块:PP-OCRv6、PP-StructureV3、PaddleOCR-VL-1.6,以及面向开发集成的 PaddleX 依赖体系。
  • 运行平台:README 标注支持 Linux、Windows、macOS,以及 CPU、GPU、XPU、NPU 等硬件类别。
  • Python 范围:README 徽章标注 Python 3.8 至 3.12;pyproject.toml 的项目声明为 Python 版本不低于 3.8,并列出 Python 3.13 分类。

定位与目标用户

本项目的定位不是只返回一段纯文本的单一 OCR 接口,而是同时覆盖场景文字识别、版面理解、表格处理、公式识别和文档到结构化数据的转换。根据 README,项目面向把 PDF 或图像转换为 JSON、Markdown 等适合后续检索、生成和代理流程消费的数据处理任务。

目标用户可以按照输入类型和输出要求划分。只需要从单张图片中识别文字时,重点关注 PP-OCR 系列;需要保留页面结构、表格单元格坐标或文档层次时,应关注 PP-StructureV3;需要使用视觉语言模型(Vision-Language Model,VLM)进行文档解析时,则应阅读 PaddleOCR-VL 相关文档。

  • 需要将扫描件、图片型 PDF 或复杂页面转成可检索文本的文档处理团队。
  • 需要为检索增强生成(Retrieval-Augmented Generation,RAG)系统准备 Markdown 或 JSON 数据的应用开发团队。
  • 需要识别中文、英文、日文或其他多语言场景文字的 OCR 开发者。
  • 需要在 CPU、GPU 或其他所列硬件后端上部署 OCR 和文档解析流程的工程团队。
  • 需要构建数据集、开展后续模型微调或将 OCR 作为数据处理环节的研究与应用团队。

核心功能

核心能力可分为“文字检测与识别”和“结构化文档解析”两条路径。前者关注文字区域及其内容,后者进一步处理页面布局、表格、公式和文档语义关系,选择哪条路径取决于下游是否需要坐标和结构信息。

多语言场景文字识别

PP-OCR 系列首先对输入图像中的文字区域进行检测,再对检测到的文字区域执行识别。README 将该能力描述为自然场景文字检测与识别,并列举身份证件、街景、书籍、工业部件等输入环境;因此,输入不局限于排版规整的电子文档。

README 的版本说明指出,PP-OCRv6 以单一统一模型覆盖中文、英文、日文和 46 种拉丁字母语言,不要求针对这些语言切换模型。资料还给出相对 PP-OCRv5 的检测准确率提升 4.6%、识别准确率提升 5.1%,以及端到端 CPU 推理速度提升 5.2 倍;这些数字属于 README 中的项目声明,实际结果需要在目标硬件、图像质量和数据集上单独验证。

结构化文档解析

PP-StructureV3 面向复杂 PDF 和图像文档,处理链路不止于识别字符,还会利用版面和元素关系组织结果。README 明确提到,该流程可将复杂 PDF 和图像转换为 Markdown 或 JSON,并提供比 PaddleOCR-VL 系列更细粒度的坐标信息,包括表格单元格坐标和文本坐标。

这意味着下游系统可以根据文本内容和空间位置进行检索、表格重建或版面校验。具体字段名称、坐标格式、分页结构和 API 调用签名没有出现在给定资料中,实施时应以项目文档中 PP-StructureV3 的使用说明为准。

视觉语言模型文档解析

README 将 PaddleOCR-VL-1.6 描述为参数规模为 0.9B 的轻量级文档视觉语言模型,并给出其在 OmniDocBench v1.6 上 96.3% 的准确率声明。该模型针对文本、公式和表格识别,并特别提到古文档、罕见字符、印章和图表等能力。

该路径的输入是包含视觉内容的文档,输出重点是 Markdown 和 JSON 等结构化表达。模型运行所需的显存、推理服务参数、模型下载方式和具体 Python 调用接口在给定 README 片段中没有完整提供,不能据此补充未经核实的命令或参数。

面向 LLM、RAG 与 Agent 的数据准备

README 将 OCR 结果定位为“LLM-ready”数据,并列举 Dify、RAGFlow、Pathway 和 Cherry Studio 等集成生态。其工作关系可以概括为:OCR 或文档解析模块负责从图像、PDF 中提取内容和结构,下游应用再将结构化结果用于检索、生成或代理任务。

项目还把数据集构建描述为面向大模型微调的数据飞轮(Data Flywheel)。这属于项目生态定位,并不等同于仓库已经提供完整的数据标注平台、数据质量保证或生产级检索系统;这些边界需要在具体集成方案中单独确认。

系统架构与关键模块

从 README 给出的架构图名称、功能说明和 pyproject.toml 依赖关系看,PaddleOCR 是由上层 Python 包、PaddleX OCR 能力以及不同任务模型组成的分层工具链。资料没有提供完整目录树,因此以下只描述已明确出现的模块和依赖关系,不推断未列出的内部文件结构。

调用层与 Python 包

项目发行包名称为 paddleocr,其 Python 包搜索范围配置为 paddleocrpaddleocr.*。pyproject.toml 还定义了命令行入口 paddleocr = "paddleocr.__main__:console_entry",说明发行包提供名为 paddleocr 的控制台入口。

能力层与可选依赖

基础依赖包括 paddlex[ocr-core]>=3.7.0,<3.8.0PyYAML>=6requestsaiohttp>=3.8.0typing-extensions>=4.12。项目把文档解析、信息抽取、翻译和文档转换拆为可选依赖组,从而让安装范围与使用场景对应。

  • doc-parser:声明 paddlex[ocr,genai-client]>=3.7.0,<3.8.0
  • ie:声明 paddlex[ie]>=3.7.0,<3.8.0,用于信息抽取相关能力。
  • trans:声明 paddlex[trans]>=3.7.0,<3.8.0,用于翻译相关能力。
  • doc2md:包含 python-docxpython-pptxopenpyxlpylatexenc
  • all:组合 OCR、生成式客户端、信息抽取、翻译以及 DOCX、PPTX、XLSX 相关依赖。

模型与处理路径

PP-OCRv6 负责通用场景文字检测和识别,PP-StructureV3 负责结构感知的文档转换,PaddleOCR-VL-1.6 负责视觉语言模型路径下的文档解析。三者的输出粒度不同:PP-OCR 更接近文字识别结果,PP-StructureV3 强调结构和坐标,PaddleOCR-VL-1.6 强调视觉内容到结构化结果的理解。

资料未给出模型文件的具体目录、下载缓存位置、推理服务拓扑或进程间通信方式。部署设计不能仅依据 README 中的能力名称推断出固定的微服务、端口或容器目录。

依赖与运行环境

项目在 pyproject.toml 中声明 Python 不低于 3.8,README 徽章将支持范围标为 Python 3.8 至 3.12。仓库还在分类器中列出了 Python 3.13,但该字段是包元数据分类,不应直接解释为所有功能已经在 Python 3.13 上验证通过。

README 标注的操作系统为 Linux、Windows 和 macOS,硬件类别为 CPU、GPU、XPU 和 NPU。硬件后端的具体驱动、运行时、算子兼容性和模型限制没有在给定资料中列出,实际部署前需要根据目标硬件查阅对应官方文档。

pyproject.toml 中可核查的项目配置与元数据
字段名 类型 默认值 作用
project.name 字符串 paddleocr Python 发行包名称。
project.requires-python 版本约束字符串 >=3.8 声明项目要求的最低 Python 版本。
project.license 对象 Apache License 2.0 声明发行包采用的许可证名称。
project.dependencies 字符串数组 未提供 声明 paddlexPyYAMLrequestsaiohttptyping-extensions 等基础依赖及版本约束。
project.optional-dependencies.doc-parser 字符串数组 未提供 声明文档解析可选依赖,包括 OCR 与生成式客户端能力。
project.optional-dependencies.ie 字符串数组 未提供 声明信息抽取相关的 paddlex[ie] 依赖。
project.optional-dependencies.trans 字符串数组 未提供 声明翻译相关的 paddlex[trans] 依赖。
project.scripts.paddleocr 字符串 paddleocr.__main__:console_entry 注册名为 paddleocr 的控制台入口。
tool.pytest.ini_options.addopts 字符串 -m 'not resource_intensive' 测试默认排除标记为资源密集型的测试。

快速开始(含最小可运行示例)

给定资料没有包含完整的安装章节、模型下载命令或 OCR 推理函数签名,因此下面只使用 pyproject.toml 中可以直接核实的发行包名称和控制台入口。示例用于完成“安装、运行、验证”闭环,不虚构输入文件参数、端口或模型配置。

安装

Bash
python -m pip install paddleocr

这里的包名来自 pyproject.toml 的 project.name 字段。资料没有给出推荐的虚拟环境创建命令、特定镜像地址或固定发布版本;如需锁定版本,应以当前官方发布信息和项目文档为准。

运行控制台入口

Bash
paddleocr

该命令对应 pyproject.toml 中声明的 project.scripts.paddleocr 入口。由于给定 README 片段未提供命令行参数说明,不能在此追加未经资料证实的 --image_dir--lang--device 或其他参数。

验证包是否可导入

Python
import paddleocr

print(paddleocr.__name__)

验证脚本只检查 Python 包是否能够导入,不代表模型已经下载、硬件后端可用或一张图片已经完成识别。若导入失败,应先核对 Python 版本、基础依赖安装结果以及当前环境是否使用了目标虚拟环境。

配置说明

项目资料提供的是 Python 包工程配置,而不是完整的运行时配置样例。因此,可核查的配置集中在 pyproject.toml 的项目元数据、依赖组、命令入口和测试选项;环境变量、服务端口、模型路径和日志级别在给定资料中均未提供。

下表中的“默认值”严格对应仓库文件中的实际字段。对数组型依赖字段,仓库没有提供一个名为“默认值”的独立运行时值,因此标为“未提供”,具体内容放在“作用”列中。

已提供的配置项
字段名 类型 默认值 作用
project.name 字符串 paddleocr 定义安装时使用的发行包名称。
project.requires-python 字符串 >=3.8 限制项目的最低 Python 运行版本。
project.urls.homepage URL 字符串 https://github.com/PaddlePaddle/PaddleOCR 项目主页地址。
project.urls.documentation URL 字符串 https://github.com/PaddlePaddle/PaddleOCR/blob/main/README.md 仓库 README 文档地址。
project.urls.repository URL 字符串 https://github.com/PaddlePaddle/PaddleOCR.git 源代码仓库地址。
project.scripts.paddleocr 入口映射字符串 paddleocr.__main__:console_entry 将命令行名称映射到 Python 控制台入口函数。
tool.pytest.ini_options.addopts 字符串 -m 'not resource_intensive' 测试默认不执行 resource_intensive 标记的测试。

下列运行参数在资料中没有出现:API Key、HTTP 端口、服务监听地址、模型缓存目录、GPU 编号、并发数、超时值和日志文件路径。官方仓库未提供该信息,建议以最新 README 和对应版本文档为准。

进阶用法

进阶使用应先依据任务输出选择可选依赖组,而不是无差别安装全部能力。文档解析场景可参考 doc-parser,信息抽取场景可参考 ie,翻译场景可参考 trans,需要处理 DOCX、PPTX、XLSX 和公式相关内容时可参考 doc2mdall

Bash
python -m pip install "paddleocr[doc-parser]"
python -m pip install "paddleocr[ie]"
python -m pip install "paddleocr[trans]"
python -m pip install "paddleocr[doc2md]"
python -m pip install "paddleocr[all]"

上述额外依赖组名称和其主要依赖来自 pyproject.toml。资料没有说明这些组是否互斥、是否包含特定模型权重,也没有提供组合安装后的完整命令行参数;在生产环境应按实际任务建立独立环境并记录解析结果。

文档解析结果的处理建议

对于需要向 RAG 或 Agent 流程提供内容的场景,应把页面文本、表格、公式、坐标和页码等信息作为不同数据层处理。PP-StructureV3 的定位是提供更细粒度的结构和坐标信息,适合在下游进行页面元素定位或表格重建;具体 JSON 字段仍须以官方接口文档为准。

对于只需要文字内容的场景,可以优先评估 PP-OCR 系列输出是否满足要求;对于包含复杂图表、印章、罕见字符或古文档的输入,可以将 PaddleOCR-VL-1.6 纳入评估范围。这里的选型建议是根据 README 所述能力做出的工程判断,不能替代目标数据集上的准确率和耗时测试。

可观测性与运维

仓库资料没有提供统一日志格式、指标名称、健康检查接口、服务端口、追踪协议、错误码或服务级别协议(Service Level Agreement,SLA)。因此,部署前不能依据本文为项目臆造固定的监控端点或告警阈值。

在授权的本地或测试环境中,可以围绕输入、模型、硬件和输出建立外部观测记录。记录内容至少应包括输入文件标识、文件页数或图像尺寸、所选模块、Python 与依赖版本、硬件类型、处理耗时、输出文件校验信息以及失败原因;这些是根据本文作者的经验判断提出的运维建议,不是仓库内置字段。

  • 正确性:抽样核对文本、表格、公式、坐标和页级结构,避免只统计是否生成文件。
  • 资源:分别记录 CPU、GPU、XPU 或 NPU 环境下的处理耗时和资源使用,不将 README 的性能声明直接当作本地基线。
  • 稳定性:对损坏 PDF、空白页、低清图像、多语言混排和超大文档建立测试样本。
  • 可追溯性:保存模型版本、包版本、输入摘要和输出摘要,便于定位模型或依赖升级造成的变化。

安全与合规边界

OCR 和文档解析会处理图像、PDF、证件、书籍及工业场景内容,其中可能包含个人信息、商业秘密或受版权保护的材料。项目资料没有给出数据保留策略、脱敏机制、访问控制、加密方案或合规认证,因此这些责任不能由项目许可证或 OCR 功能自动承担。

使用含个人信息或敏感业务内容的文档时,应先确认处理授权、数据来源和使用目的,并在组织批准的隔离环境中运行。本文只讨论授权环境下的本地或测试使用,不提供面向未授权目标的数据采集、隐私绕过、检测规避或账号自动化方法。

  • 对输入目录实施最小权限控制,避免将无关用户文件交给解析流程。
  • 对输出 JSON、Markdown 和中间文件设置访问控制,并根据组织制度决定保存期限。
  • 对第三方模型、生成式客户端或外部服务的调用进行网络隔离和出站审计。
  • 在生产环境上线前,对许可证、数据处理协议、行业监管要求和第三方组件条款进行审查。
  • 不要把 OCR 输出视为事实凭证;证件号码、金额、合同条款等高影响字段需要人工或规则复核。

许可证与商用条款

仓库 LICENSE 文件声明采用 Apache License 2.0。该许可证授予在许可证条件下复制、准备衍生作品、公开展示、公开执行、再许可和分发源代码或目标代码的版权许可,并包含相应的专利许可条款;专利诉讼触发的终止条件等细节应直接阅读仓库 LICENSE。

Apache License 2.0 通常允许商业使用,但本文不替代法律意见。分发原项目或衍生作品时,LICENSE 文件要求接收方获得许可证副本;修改过的文件需要带有明确的修改说明;还需要保留源代码中的版权、专利、商标和归属声明,若发行包包含 NOTICE 文件,还需按许可证要求保留其中的归属信息。

许可证本身不授予使用许可方商号、商标、服务标志或产品名称的权利,LICENSE 中另有规定的事项应以原文为准。PaddleOCR 的模型、依赖组件、外部服务和数据集可能存在独立条款,商业发布前应逐项核查,以仓库 LICENSE 和相关组件许可证为准。

局限性与已知限制

给定资料主要展示项目能力和包元数据,没有给出完整 API、模型下载流程、输入格式边界、异常处理约定、并发模型、内存要求或稳定性指标。因而,不能从仓库 Star 数、README 的准确率声明或 Python 包入口推导出某个具体业务场景的可用性。

  • README 的准确率和速度数字来自项目说明,未附带本文可复现的硬件、批大小、输入分辨率和测试脚本,不能直接作为所有环境的承诺。
  • 100 多种语言的总量声明与 PP-OCRv6 的 50 语言统一模型是不同层级的信息,不能将二者简单等同。
  • 复杂表格、公式、印章、罕见字符和低质量扫描件仍需使用业务样本评估,不能仅凭功能列表判断识别质量。
  • OCR 错误可能传播到金额、日期、身份标识和合同条款等下游字段,因此结构化输出仍需要校验。
  • 资料没有提供离线模型包、服务端部署、容器编排和多租户隔离的完整说明;官方仓库未提供该信息,建议以最新 README 为准。

README 资料中还出现了“2026.07.22:HPD-Parsing available”和“2026.06.11:PaddleOCR 3.7.0”等更新条目。由于给定信息没有提供当前发布日期上下文、完整变更记录或对应发布包校验信息,本文只将其作为 README 中出现的内容,不据此判断当前安装版本。

适合谁

如果项目的主要问题是“如何把图像或 PDF 转成可被程序继续处理的文字和结构”,PaddleOCR 的模块覆盖范围与这一需求匹配。以下信号可以帮助团队判断是否值得进入验证阶段。

  • 输入以扫描 PDF、图片或自然场景图像为主,输出需要文本、Markdown 或 JSON,而不是只要人工查看的图片。
  • 文档包含表格、公式、版面层次或坐标关系,需要比纯文本识别更细的结构信息。
  • 业务涉及中文、英文、日文和其他 README 所列语言,且希望在统一模型路径上处理多语言文档。
  • 团队已有 Python 和 PaddlePaddle 相关技术栈,能够自行进行模型、硬件和样本质量验证。
  • 应用需要在 CPU、GPU、XPU 或 NPU 等所列硬件环境中评估部署,而不是依赖某一个固定云端接口。

不适合谁

如果团队需要的是已经承诺固定 SLA、固定 API、固定字段或完整合规托管服务,仅凭当前仓库资料无法确认 PaddleOCR 满足这些条件。以下信号表示需要补充评估或考虑其他已满足约束的方案。

  • 项目要求供应商提供仓库资料中未出现的 SLA、服务端口、监控接口、数据留存承诺或合规认证。
  • 团队不能维护 Python 依赖、硬件驱动、模型版本和样本回归测试,却要求直接承担生产级识别质量。
  • 输入数据必须完全留在特定封闭环境,而目标部署所需的模型、依赖或硬件兼容性尚未获得官方文档确认。
  • 业务要求对金额、身份标识或法律文本达到未经人工复核的零错误结果,这与 OCR 输出需要验证的工程现实不匹配。
  • 任务只需要固定格式的人工录入或纯文本转换,不需要版面、表格、坐标和多语言能力时,应先比较更简单的现有组件;资料未明确列出具体替代项目,本文不指定替代方案。

常见问题与排查(FAQ / Troubleshooting)

排查优先级应从包安装和 Python 环境开始,再进入模型、输入数据和硬件后端。给定资料没有提供项目专属错误码,因此下面仅列出可以由仓库元数据和 README 能力边界支持的检查方向。

为什么安装后找不到 paddleocr 命令

先确认安装包名称是 paddleocr,并且安装命令与执行命令使用同一个 Python 环境。pyproject.toml 声明的入口名称是 paddleocr,入口目标为 paddleocr.__main__:console_entry;如果仍无法找到命令,应检查虚拟环境的可执行文件路径。

为什么导入失败

核对 Python 是否满足 >=3.8,再检查基础依赖是否安装完整。项目声明依赖 paddlex[ocr-core]>=3.7.0,<3.8.0PyYAML>=6requestsaiohttp>=3.8.0typing-extensions>=4.12;资料未提供针对每类导入错误的修复矩阵。

为什么识别结果不适合直接进入数据库

OCR 输出是模型推理结果,低清图像、复杂布局、多语言混排和表格都会影响结果质量。对于金额、日期、证件号和合同关键字段,应加入格式校验、坐标检查、置信度策略或人工复核;具体置信度字段和接口格式官方仓库资料未提供。

应该选择 PP-OCRv6、PP-StructureV3 还是 PaddleOCR-VL-1.6

如果主要任务是场景文字检测与识别,可先评估 PP-OCRv6;如果需要表格单元格坐标、文本坐标和页面结构,可评估 PP-StructureV3;如果需要视觉语言模型处理复杂文档元素,可评估 PaddleOCR-VL-1.6。最终选择应由目标样本、输出格式和资源预算决定,不能只根据模块名称做结论。

项目是否提供固定 HTTP 端口或 API Key 配置

给定资料没有提供固定端口、API Key、环境变量或服务启动参数。官方仓库未提供该信息,建议以最新 README、对应版本的 pipeline 文档和发布说明为准;不要把其他服务的配置模板直接套用到本项目。

验证与上线检查清单

上线前的重点不是只验证命令能够执行,而是验证输出是否能支撑业务决策。建议把样本、模型、依赖、硬件和输出校验纳入同一套可重复记录。

  1. 确定样本来源、处理授权和敏感字段范围,建立可在测试环境使用的脱敏样本集。
  2. 记录 Python 版本、PaddleOCR 包版本、PaddleX 依赖版本和目标硬件类型。
  3. 分别测试纯文本、表格、公式、多语言混排、低清图像和图片型 PDF。
  4. 检查 Markdown 或 JSON 是否保留页级关系、文本坐标和表格坐标等业务需要的信息。
  5. 对关键字段建立人工抽检和规则校验,不把单次推理成功当作准确率证明。
  6. 评估 CPU、GPU、XPU 或 NPU 环境中的耗时、资源占用、失败重试和输出落盘策略。
  7. 确认分发时包含 Apache License 2.0、版权声明、修改说明和适用的归属信息。

版本、维护与资料边界

仓库默认分支为 main,pyproject.toml 使用动态版本配置,并通过 setuptools_scm 从 Git 标签和提交信息参与版本生成。给定资料没有提供当前安装版本号,因此本文不填写一个未经核实的版本。

README 中存在多语言 README 链接,并列出 Python、操作系统和硬件支持徽章。使用者应将 README 的能力声明、pyproject.toml 的依赖约束和实际发布包信息分别核对,避免把仓库当前源码、某个历史发行版和模型版本混为一谈。

结论与选型建议

PaddleOCR 的工程价值集中在从图像和 PDF 提取文字、版面与文档结构,并将结果交给 RAG、Agent 或其他数据处理系统。其模块选择应围绕输出粒度展开:纯文字识别、结构与坐标、视觉语言模型解析分别对应不同的处理路径。

对于生产系统,最关键的决策不是仓库规模,而是目标数据集上的错误类型、硬件成本、可接受延迟、隐私边界、许可证履行方式和输出校验流程。资料不足的运行参数、服务化方式和接口细节,应在官方文档和实际版本中完成补充核验。

项目地址与资源

以下链接均来自给定仓库资料或 README 中出现的项目相关站点,使用时应注意不同页面对应的版本和语言。