菜单

识别模型

相关源文件

此页面介绍了 PaddleOCR 中用于将裁剪后的文本图像转换为字符序列的文本识别模型。文本识别模型接收来自检测阶段的检测到的文本区域,并输出实际的文本内容。有关文本检测模型的信息,请参阅 识别模型。有关文档级理解模型的信息,请参阅 文档理解模型

架构概述

PaddleOCR 的文本识别模型遵循模块化流水线架构,具有可针对不同用例和语言需求进行配置的组件。

识别流水线组件

  • 变换 (Transform):可选的几何变换(TPS 用于弯曲文本)
  • 骨干网络 (Backbone):CNN 特征提取器(MobileNetV3、ResNet)
  • Neck:序列编码器(BiLSTM、reshape)
  • Head:字符分类层
  • 后处理 (PostProcess):CTC 解码得到最终文本

来源:configs/rec/rec_icdar15_train.yml33-57 configs/rec/rec_mv3_none_bilstm_ctc.yml33-57

识别算法

PaddleOCR 实现三种主要的识别算法,每种算法都有不同的架构方法用于文本识别。

CRNN(卷积循环神经网络)

CRNN 结合了 CNN 特征提取和 RNN 序列建模,以实现鲁棒的文本识别。

CRNN 主要特点

  • 算法CRNN
  • 骨干网络MobileNetV3(缩放比例:0.5)或 ResNet(层数:34)
  • NeckSequenceEncoderencoder_type: rnn
  • RNN:BiLSTM,隐藏层大小可配置(MobileNetV3 为 96,ResNet 为 256)

来源:configs/rec/rec_mv3_none_bilstm_ctc.yml33-47 configs/rec/rec_r34_vd_none_bilstm_ctc.yml33-46

STARNet(空间变换器 + 注意力 + RNN)

STARNet 增加了几何变换能力,以处理弯曲或失真的文本。

STARNet 主要特点

  • 算法STARNet
  • 变换TPS(薄板样条)模型,具有 20 个控制点
  • 几何校正:处理弯曲、旋转或透视失真的文本
  • TPS 参数loc_lr: 0.1,模型大小可配置

来源:configs/rec/rec_r34_vd_tps_bilstm_ctc.yml35-50 configs/rec/rec_mv3_tps_bilstm_ctc.yml35-51

Rosetta(纯 CNN 架构)

Rosetta 采用简化的纯 CNN 方法,无需循环组件,可实现更快的推理。

Rosetta 主要特点

  • 算法Rosetta
  • 无变换:直接进行 CNN 处理
  • NeckSequenceEncoderencoder_type: reshape
  • 无 RNN:推理速度更快,架构更简洁

来源:configs/rec/rec_r34_vd_none_none_ctc.yml33-44 configs/rec/rec_mv3_none_none_ctc.yml33-46

模型组件

骨干网络

骨干网络从输入文本图像中提取视觉特征。

骨干网络 (Backbone)配置参数用例
MobileNetV3缩放比例: 0.5, 模型名称: large轻量移动端部署
ResNet层数:34更高的精度服务器部署

输入图像形状:所有模型使用 [3, 32, 100](通道数、高度、宽度)

来源:configs/rec/rec_mv3_none_bilstm_ctc.yml37-40 configs/rec/rec_r34_vd_none_bilstm_ctc.yml37-39

序列编码器

Neck 组件将骨干网络提取的特征处理成序列格式,用于文本识别。

序列编码器参数

  • RNN 类型:BiLSTM,用于序列建模
  • 隐藏层大小:96(MobileNetV3),256(ResNet)
  • Reshape:Rosetta 的直接特征展平

来源:configs/rec/rec_mv3_none_bilstm_ctc.yml41-44 configs/rec/rec_r34_vd_none_bilstm_ctc.yml40-43

Head 和损失函数

所有识别模型都使用 CTC(连接主义时间分类)进行序列预测,无需显式对齐。

CTC 配置

  • HeadCTCHead,可选 L2 正则化(fc_decay
  • LossCTCLoss,用于无字符级对齐的训练
  • 解码CTCLabelDecode,用于去除空白符和重复字符

来源:configs/rec/rec_icdar15_train.yml45-53 ppocr/utils/ppocr_keys_v1.txt1-6000

配置系统

识别模型通过 YAML 文件进行配置,这些文件指定了完整的架构和训练参数。

配置结构

关键配置部分

  • 全局 (Global):训练超参数、路径、评估设置
  • 架构 (Architecture):模型类型和组件规格
  • Loss/PostProcess/Metric:基于 CTC 的训练和评估
  • Train/Eval:数据加载和增强流水线

来源:configs/rec/rec_icdar15_train.yml1-100 configs/rec/rec_mv3_none_bilstm_ctc.yml1-100

字符词汇表

文本识别模型需要字符词汇表来进行分类和解码。

参数描述
character_dict_pathppocr/utils/en_dict.txt英文字符
character_dict_pathppocr/utils/ppocr_keys_v1.txt中文字符 + 多语言
max_text_length25最大序列长度
use_space_char包含空格字符

中文字符词汇表:包含 6000 多个字符,包括

  • 中文字符(简体/繁体)
  • ASCII 字母和数字
  • 标点符号和符号
  • 数学运算符

来源:configs/rec/rec_icdar15_train.yml17-20 ppocr/utils/ppocr_keys_v1.txt1-6000