news 2026/9/11 21:32:13

PaddleOCR 的 PP-OCR 系列全景解析:从两阶段架构到 v2/v3/v4 版本演进与实战部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PaddleOCR 的 PP-OCR 系列全景解析:从两阶段架构到 v2/v3/v4 版本演进与实战部署

PaddleOCR 的 PP-OCR 系列全景解析:从两阶段架构到 v2/v3/v4 版本演进与实战部署

【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100+ languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR

PP-OCR 是 PaddleOCR 自研的超轻量 OCR 系统,围绕"精度与速度平衡、可产业落地"的目标,在文本检测、方向分类与文本识别三段式 pipeline 上持续迭代。本文以 PP-OCR 系列为核心,完整梳理其系统架构、从 PP-OCR 到 PP-OCRv4 的版本演进与技术要点、模型特性与 benchmark 口径,并结合仓库中的配置文件与源码给出可复现的安装、命令行、Python 调用与模型选型方案。

1. 系统定位与总体架构

PP-OCR 是 PaddleOCR 自研的实用型超轻量 OCR 系统,它在实现前沿算法的基础上,考虑精度与速度的平衡,通过模型瘦身深度优化,尽可能满足产业落地需求。

PP-OCR 是一个两阶段 OCR 系统,核心由三个模块串联组成:

  • 文本检测模块:选用 DB(Differentiable Binarization) 算法,负责在整图中定位文本区域;
  • 文本方向分类模块:在检测与识别之间插入文本方向分类器,用于纠正 0°/180° 旋转的文本行,应对不同方向的文本识别;
  • 文本识别模块:选用 CRNN 算法,将检测出的文本行图像转换为文字序列。

从仓库源码结构看,这一三段式流程在 paddleocr/_pipelines/ocr.py 中有对应实现:检测结果经方向分类器矫正后送入识别器,最终返回"文本框 + 文本 + 置信度"的结构化结果。而在配置层面,三套模型分别由configs/det/configs/cls/configs/rec/下的 YAML 文件定义,例如 PP-OCRv4_mobile_det.yml、cls_mv3.yml、PP-OCRv3_mobile_rec.yml。

PP-OCR 系统持续迭代,目前已发布PP-OCR、PP-OCRv2、PP-OCRv3、PP-OCRv4四个版本,下文按版本逐一拆解其演进脉络。

2. 版本演进:从 PP-OCR 到 PP-OCRv4

2.1 PP-OCR:19 个策略打造 3.5M 超轻量模型

第一代 PP-OCR 从骨干网络选择与调整、预测头部设计、数据增强、学习率变换策略、正则化参数选择、预训练模型使用、模型自动裁剪量化共 8 个方面入手,采用19 个有效策略,对各个模块的模型进行效果调优与瘦身,最终得到:

  • 3.5M 的超轻量中英文 OCR 模型
  • 2.8M 的英文数字 OCR 模型

更多细节可参考 PP-OCR 技术报告(arXiv:2009.09941)。

2.2 PP-OCRv2:5 个方向的重点优化

PP-OCRv2 在 PP-OCR 基础上进一步在 5 个方面重点优化:

  • 检测模型:采用CML(Collaborative Mutual Learning)协同互学习知识蒸馏策略CopyPaste 数据增广策略
  • 识别模型:采用LCNet 轻量级骨干网络UDML 改进知识蒸馏策略与 Enhanced CTC loss 损失函数改进。

以上策略在推理速度与预测效果上均取得明显提升,技术细节见 PP-OCRv2 技术报告(arXiv:2109.03144)。

2.3 PP-OCRv3:9 个方面的系统升级

PP-OCRv3 保持与 PP-OCRv2 相同的整体 pipeline,但针对检测与识别模型共进行了9 个方面的升级,详见 PP-OCRv3 技术解读:

检测模块(3 项)

  • LK-PAN:大感受野的 PAN 结构,将 path augmentation 中的卷积核从3*3扩大为9*9,更易检测大字与极端长宽比文本;
  • DML:教师模型间的 Deep Mutual Learning 互学习策略;
  • RSE-FPN:残差注意力机制的 FPN 结构,在 FPN 通道数较小的前提下引入残差结构缓解特征抑制问题。

识别模块(6 项)

  • SVTR_LCNet:将基于 Transformer 的 SVTR 与轻量级 CNN 网络 PP-LCNet 融合的轻量级文本识别网络;
  • GTC:Attention 指导 CTC 的训练策略,推理时完全去除 Attention 模块,不增加任何耗时;
  • TextConAug:挖掘文字上下文信息的数据增广策略(借鉴 ConCLR 思想,在一个 batch 内联结 2 张不同图像);
  • TextRotNet:利用大量无标注文本行数据自监督训练的预训练模型;
  • UDML:联合互学习策略,对 PP-LCNet 特征图、SVTR 输出与 Attention 输出同时监督;
  • UIM:无标注数据挖掘方案,用高精度大模型打伪标签并筛选高置信度样本训练小模型。

PP-OCRv3 系统 pipeline 如下:

从效果上看,速度可比情况下:中文场景较 PP-OCRv2 提升超 5%,英文数字场景提升 11%,多语言场景(80+ 语种)平均准确率提升超 5%。

2.4 PP-OCRv4:10 个方面的进一步优化

PP-OCRv4 延续 v3 pipeline,在数据、网络结构、训练策略等多个模块继续优化,详见 PP-OCRv4 技术解读:

检测模块(4 项)

  • LCNetV3:精度更高的骨干网络(替换 MobileNetV3);
  • PFHead:并行 head 分支融合结构,经过转置卷积后并行上采样与转置卷积分支,级联融合输出概率图;
  • DSR:训练中动态增加 shrink ratio(随 epoch 从 0.4 线性增至 0.6);
  • CML 增强:在 Student 与 Teacher 网络的 distill loss 中额外添加 KL div loss,拉近两者 response maps 分布。

识别模块(6 项)

  • SVTR_LCNetV3:精度更高的骨干网络;
  • Lite-Neck:精简参数的 Neck 结构,可将识别模型从 12M 降至 8.5M 且精度不变;
  • GTC-NRTR:用训练更稳定的 Transformer 模型 NRTR 作为指导分支(替代 v3 中基于 RNN 的 SAR 分支);
  • Multi-Scale:多尺度训练策略,每个 iter 从 (32, 48, 64) 三种高度中随机选择进行 resize;
  • DF:数据挖掘方案(Data Filter),先剔除置信度 >0.95 的冗余样本,再剔除 <0.15 的噪声样本,将千万级数据精简至百万级;
  • DKD:DKD 蒸馏策略,NRTR head 使用 DKD loss,CTC head 将 logits 沿文本长度维度求均值做分类监督。

效果上,速度可比情况下:中文场景端到端 Hmean 较 PP-OCRv3 提升 4.5%,英文场景识别准确率提升 6%,多语言(80 语种)平均识别准确率提升超 8%。

3. 特性与模型体量概览

PP-OCR 系列的核心竞争力在于"超轻量"与"多语言",官方给出的模型体量组合如下:

系列检测模型方向分类器识别模型整体
超轻量 PP-OCRv3 系列3.6M1.4M12M17.0M
超轻量 PP-OCRv2 系列3.1M1.4M8.5M13.0M
PP-OCR mobile 移动端系列3.0M1.4M5.0M9.4M
PP-OCR server 通用系列47.1M1.4M94.9M143.4M

此外还支持:

  • 中英文数字组合识别、竖排文本识别、长文本识别
  • 多语言识别:韩语、日语、德语、法语等约80 种语言

各语言对应的模型字典文件位于 ppocr/utils/dict/,例如韩文korean_dict.txt、日文japan_dict.txt、拉丁文latin_dict.txt等,可在模型列表中按语种查阅对应配置与下载地址。

4. Benchmark 口径

PP-OCR 系列模型之间的性能对比(检测/识别精度、模型大小、CPU 推理耗时等),统一收录在 benchmark 文档中。需要特别说明的是,各版本技术报告中的速度数据受测试环境影响较大:PP-OCRv2/v3 消融实验多基于Intel Gold 6148 CPU + MKLDNN 加速,PP-OCRv4 消融实验基于Intel Gold 6148 CPU + OpenVINO 预测引擎,且识别模型测试输入尺寸分为(3,32,320)(3,48,320)两档。实际预测时图像为变长输入,速度会有变化,横向对比时应以相同环境为准。

5. 效果展示

PP-OCRv3 系列模型在中文、英文、多语言场景下的可视化效果可参考 效果展示页,其中包含:

  • PP-OCRv3 中文模型:中文通用文档与场景图识别示例;
  • PP-OCRv3 英文模型:英文文档识别示例;
  • PP-OCRv3 多语言模型:日文、韩文等语种识别示例。

6. 使用教程:从快速体验到全流程开发

6.1 快速体验

  • 在线体验:可在 Paddle 官方在线场景(ocr 场景)直接体验超轻量 PP-OCR mobile 模型效果;
  • 移动端 Demo:基于 EasyEdge 与 Paddle-Lite 提供 iOS/Android 安装包,可下载体验端侧推理;
  • 一行命令快速使用:详见快速开始(中英文/多语言)。

6.2 安装

安装 PaddlePaddle(以 CPU 为例):

pip install "paddlepaddle<=2.6"

若机器安装 CUDA 11,则安装 GPU 版本:

pip install "paddlepaddle-gpu<=2.6"

更多版本需求参照飞桨官网安装文档;如果没有基础 Python 运行环境,可先参考运行环境准备。

安装 PaddleOCR whl 包

pip install "paddleocr<3.0"

Windows 用户若遇到 shapely 的[winError 126] 找不到指定模块问题,需要手动安装预编译的 shapely 包。

6.3 命令行使用

下载官方测试图片并解压后,切换到图片目录即可开始:

cd /path/to/ppocr_img

检测 + 方向分类器 + 识别全流程--use_angle_cls true启用方向分类器识别 180° 旋转文字,--use_gpu false关闭 GPU):

paddleocr --image_dir ./imgs/11.jpg --use_angle_cls true --use_gpu false

输出是一个 list,每个 item 包含文本框、文字与识别置信度:

[[[28.0, 37.0], [302.0, 39.0], [302.0, 72.0], [27.0, 70.0]], ('纯臻营养护发素', 0.9658738374710083)]

单独使用检测--rec false):

paddleocr --image_dir ./imgs/11.jpg --rec false

单独使用识别--det false):

paddleocr --image_dir ./imgs_words/ch/word_1.jpg --det false

支持 PDF 输入,通过--page_num控制推理页数,0 表示全部页:

paddleocr --image_dir ./xxx.pdf --use_angle_cls true --use_gpu false --page_num 2

多语言切换:通过--lang参数切换语种,例如英文--lang=en

paddleocr --image_dir ./imgs_en/254.jpg --lang=en

常用语种缩写对照:中文ch、英文en、繁体中文chinese_cht、法文fr、德文german、意大利文it、日文japan、韩文korean、俄罗斯文ru;完整语种列表见多语言模型教程。

版本选择paddleocr默认使用 PP-OCRv4 模型(--ocr_version PP-OCRv4),可手动指定其他版本:

版本名称版本说明
PP-OCRv4支持中、英文检测和识别,方向分类器,支持多语种识别
PP-OCRv3支持中、英文检测和识别,方向分类器,支持多语种识别
PP-OCRv2支持中英文的检测和识别,方向分类器,多语言暂未更新
PP-OCR支持中、英文检测和识别,方向分类器,支持多语种识别

6.4 Python 脚本使用

whl 包会自动下载 PP-OCR 轻量级模型作为默认模型。中英文全流程示例:

from paddleocr import PaddleOCR, draw_ocr # 支持通过 lang 参数切换语种,如 ch / en / fr / german / korean / japan ocr = PaddleOCR(use_angle_cls=True, lang="ch") # 首次运行自动下载并加载模型 img_path = './imgs/11.jpg' result = ocr.ocr(img_path, cls=True) for idx in range(len(result)): res = result[idx] for line in res: print(line) # 结果可视化 from PIL import Image result = result[0] image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] im_show = draw_ocr(image, boxes, txts, scores, font_path='./fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg')

PDF 输入:通过page_num指定页码,ocr.ocr(pdf_path, cls=True)直接识别,空页返回None时跳过,避免报错;可视化时可用fitz将 PDF 页渲染为图像后叠加绘制结果。

超大图滑动窗口:对超长/超大图像,可通过slice参数字典启用滑动窗口检测与识别,例如:

ocr = PaddleOCR(use_angle_cls=True, lang="en") slice = {'horizontal_stride': 300, 'vertical_stride': 500, 'merge_x_thres': 50, 'merge_y_thres': 35} results = ocr.ocr(img_path, cls=True, slice=slice)

更全面的切片操作说明见切片操作文档。

6.5 模型训练、压缩与推理部署

PP-OCR 系列模型的训练、压缩(裁剪/量化)、推理部署教程,均可在 docs/version2.x/ppocr 目录下找到:model_train/覆盖检测、识别、方向分类器的训练与微调;model_compress/覆盖模型压缩;模型列表 则给出了推理模型、训练模型、预训练模型与 Paddle-Lite nb 模型的完整下载入口。仓库根目录的 configs 目录存放全部训练配置文件,tools/train.pytools/export_model.py分别对应训练与模型导出入口。

7. 模型库:中英文 PP-OCR 系列选型

PP-OCR 中英文模型列表如下(完整下载地址见 PP-OCR 系列模型下载,各模型均提供推理模型与训练/预训练模型两类文件):

模型简介模型名称推荐场景
中英文超轻量 PP-OCRv3 模型(16.2M)ch_PP-OCRv3_xx移动端 & 服务器端
英文超轻量 PP-OCRv3 模型(13.4M)en_PP-OCRv3_xx移动端 & 服务器端
中英文超轻量 PP-OCRv2 模型(13.0M)ch_PP-OCRv2_xx移动端 & 服务器端
中英文超轻量 PP-OCR mobile 模型(9.4M)ch_ppocr_mobile_v2.0_xx移动端 & 服务器端
中英文通用 PP-OCR server 模型(143.4M)ch_ppocr_server_v2.0_xx服务器端

7.1 模型类型说明

PaddleOCR 提供的可下载模型分为四类,格式与用途各不相同:

模型类型模型格式简介
推理模型inference.pdmodelinference.pdiparams用于预测引擎推理(详见 Python 推理文档)
训练模型 / 预训练模型*.pdparams*.pdopt*.states训练过程保存的参数、优化器状态与中间信息,用于指标评估与恢复训练
nb 模型*.nb经 Paddle-Lite 优化后的端侧模型,适用于移动端 / IoT 端部署

其中,训练模型是基于预训练模型在真实数据与竖排合成文本数据上 finetune 得到的,在真实场景表现更好;预训练模型直接基于全量真实数据与合成数据训练,更适合在自己的数据集上继续 finetune。

7.2 源码与配置文件对照

仓库中的配置文件与模型一一对应,例如:

  • 检测: PP-OCRv4_mobile_det.yml、PP-OCRv4_server_det.yml(v4 检测配置位于configs/det/PP-OCRv4/);
  • 方向分类: cls_mv3.yml;
  • 识别: PP-OCRv3_mobile_rec_distillation.yml、PP-OCRv4_mobile_rec_distillation.yml(多语言配置位于configs/rec/PP-OCRv3/multi_language/)。

配置文件中的ArchitectureLossOptimizerMetric等字段定义了网络结构、损失函数与训练策略,读者可对照 训练文档 理解每个参数的作用。更多英文数字模型、多语言模型与 Paddle-Lite 模型,可在 PP-OCR 系列模型下载 中按语种和部署场景检索。

8. 小结

PP-OCR 系列以"检测 + 方向分类 + 识别"的两阶段 pipeline 为骨架,历经四代迭代:从 PP-OCR 的 19 个策略瘦身,到 PP-OCRv2 引入 CML 蒸馏与 LCNet,再到 PP-OCRv3 以 SVTR_LCNet 为核心的 9 项升级,最终在 PP-OCRv4 中以 LCNetV3/PFHead/DF/DKD 等 10 项改进进一步拉高精度上限。整体模型体量从 mobile 系列的 9.4M 到 server 系列的 143.4M 覆盖不同算力场景,并通过 whl 包命令行、Python API 与 80 种语言模型支持快速落地。无论你是要快速体验 OCR 能力、按需选型模型,还是深入训练与部署,都可以从本文链接的源码、配置与教程文档中找到对应路径。

【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100+ languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 21:28:40

租GPU服务器跑Stable Diffusion WebUI:从部署选型到公网访问全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 21:25:07

Docker部署ELK日志分析系统实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 21:23:36

拉丁超立方抽样:从分层采样到不确定性传播的工程实践

简介&#xff1a;面向数据分析、模拟预测与风险评估场景&#xff0c;这份资料包聚焦不确定性处理中的拉丁超立方抽样&#xff08;LHS&#xff09;技术&#xff0c;并结合数据正态分布与超立方抽样概念。不确定性在复杂系统和模拟中普遍存在&#xff0c;传统蒙特卡洛往往需要大量…

作者头像 李华