大部分跟我这边写的相同:基于paddleocr的文本检测-CSDN博客

文本识别任务接在检测任务之后,分为规则文本和不规则文本,规则文本主流包括下面的CTC和seq2seq,不规则文本主流分,基于校正的方法;基于 Attention 的方法;基于分割的方法;基
于 Transformer 的方法,我也不知道为什么书上处理一个不规则文本数据用的规则文本的模型

数据集

数据集链接如下,从官网下载的,我放在kaggle上:

wenbenshibie | Kaggle

基于 CTC 的CRNN

文 本 识 别 的 主 流 算 法 有 两 种, 分 别 是 基 于 CTC (Conectionist Temporal Classification) 的 算 法 和 Se-quence2Sequence 算法,区别主要在解码阶段。如下图:

他书上用的这个模型,backbone用的CNN,neck接的lstm,最后送入head进行后处理

下面是图像特征转化为序列特征的过程

在head部分的后处理长下面这样,上面用的数据集36个类别,他在重复字母之间引入-,-就是blank类别,是第0类

PaddleOCR 支持两种数据格式:
• lmdb 用于训练以lmdb格式存储的数据集(LMDBDataSet);
• 通用数据用于训练以文本文件存储的数据集(SimpleDataSet);

他提供的数据集是通用数据格式,想用那些应对不规则文本的算法,我看了,要转成lmdb格式给他

训练自己的数据

基本你弄好数据格式,配置文件自己修改,剩下的人脚本写好了,我跑了100多个epoch,效果不是很好

训练和评估

!python3 /home/linjiongji/anaconda3/envs/myenv/lib/python3.10/site-packages/PaddleOCR-main/tools/train.py -c /home/linjiongji/下载/PaddleOCR-main/configs/rec/rec_icdar15_train.yml \
   -o Global.pretrained_model=/home/linjiongji/PycharmProjects/pythonProject/rec_mv3_none_bilstm_ctc_v2.0_train/best_accuracy \
   Global.character_dict_path=/home/linjiongji/anaconda3/envs/myenv/lib/python3.10/site-packages/PaddleOCR-main/ppocr/utils/ic15_dict.txt


!python /home/linjiongji/anaconda3/envs/myenv/lib/python3.10/site-packages/PaddleOCR-main/tools/eval.py -c /home/linjiongji/下载/PaddleOCR-main/configs/rec/rec_icdar15_train.yml \
    -o Global.checkpoints=/home/linjiongji/下载/output/rec/ic15/best_accuracy \
    Global.character_dict_path=/home/linjiongji/anaconda3/envs/myenv/lib/python3.10/site-packages/PaddleOCR-main/ppocr/utils/ic15_dict.txt

更多推荐