[paddleocr]文本方向分类器训练

关于提高PaddleOCR识别准确率的一些优化(二) 关于提高OCR识别准确率的一些优化(二)前言一、为什么要判断方向?二、paddleocr方向分类器1.方法介绍2、实际效果测试3、文本框检测实际效果4、结果分析5、解决办法6、方向检测测试结果三、paddlex图像分类1.训练2.测试结果分析四、后续优化方向总结 前言 本文基于关于提高OCR识别准确率的一些优化做出了一些改进和尝试,主要分为以下两点: 1、使用paddleocr方向分类器判断文本方向 2、用paddlex训练一个方向分类器判断文本方向 一、为什么要判断方向? 在我们的数据集中,有很多用户 阅读详情
AI摘要

本文详细介绍了一种用于处理图片中非0度文本行的文本方向分类器的训练流程,包括数据准备、训练、评估及预测等关键步骤,旨在帮助读者理解和应用此分类器。

文本方向分类器

1. 方法介绍

文本方向分类器主要用于图片非0度的场景下,在这种场景下需要对图片里检测到的文本行进行一个转正的操作。在PaddleOCR系统内, 文字检测之后得到的文本行图片经过仿射变换之后送入识别模型,此时只需要对文字进行一个0和180度的角度分类,因此PaddleOCR内置的 文本方向分类器只支持了0和180度的分类。如果想支持更多角度,可以自己修改算法进行支持。

0和180度数据样本例子:

2. 数据准备

请按如下步骤设置数据集:

训练数据的默认存储路径是 PaddleOCR/train_data/cls,如果您的磁盘上已有数据集,只需创建软链接至数据集目录:

ln -sf <path/to/dataset> <path/to/paddle_ocr>/train_data/cls/dataset

请参考下文组织您的数据。

  • 训练集

首先建议将训练图片放入同一个文件夹,并用一个txt文件(cls_gt_train.txt)记录图片路径和标签。

注意: 默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错

0和180分别表示图片的角度为0度和180度

" 图像文件名                 图像标注信息 "
train/cls/train/word_001.jpg   0
train/cls/train/word_002.jpg   180

最终训练集应有如下文件结构:

|-train_data
    |-cls
        |- cls_gt_train.txt
        |- train
            |- word_001.png
            |- word_002.jpg
            |- word_003.jpg
            | ...
  • 测试集

同训练集类似,测试集也需要提供一个包含所有图片的文件夹(test)和一个cls_gt_test.txt,测试集的结构如下所示:

|-train_data
    |-cls
        |- cls_gt_test.txt
        |- test
            |- word_001.jpg
            |- word_002.jpg
            |- word_003.jpg
            | ...

3. 启动训练

将准备好的txt文件和图片文件夹路径分别写入配置文件的 Train/Eval.dataset.label_file_list 和 Train/Eval.dataset.data_dir 字段下,Train/Eval.dataset.data_dir字段下的路径和文件里记载的图片名构成了图片的绝对路径。

PaddleOCR提供了训练脚本、评估脚本和预测脚本。

开始训练:

如果您安装的是cpu版本,请将配置文件中的 use_gpu 字段修改为false

# GPU训练 支持单卡,多卡训练,通过 '--gpus' 指定卡号。
# 启动训练,下面的命令已经写入train.sh文件中,只需修改文件里的配置文件路径即可
python3 -m paddle.distributed.launch --gpus '0,1,2,3,4,5,6,7'  tools/train.py -c configs/cls/cls_mv3.yml
  • 数据增强

PaddleOCR提供了多种数据增强方式,如果您希望在训练时加入扰动,请在配置文件中取消Train.dataset.transforms下的RecAug和RandAugment字段的注释。

默认的扰动方式有:颜色空间转换(cvtColor)、模糊(blur)、抖动(jitter)、噪声(Gasuss noise)、随机切割(random crop)、透视(perspective)、颜色反转(reverse),随机数据增强(RandAugment)。

训练过程中除随机数据增强外每种扰动方式以50%的概率被选择,具体代码实现请参考: rec_img_aug.py randaugment.py

由于OpenCV的兼容性问题,扰动操作暂时只支持linux

4. 训练

PaddleOCR支持训练和评估交替进行, 可以在 configs/cls/cls_mv3.yml 中修改 eval_batch_step 设置评估频率,默认每1000个iter评估一次。训练过程中将会保存如下内容:

├── best_accuracy.pdopt # 最佳模型的优化器参数
├── best_accuracy.pdparams # 最佳模型的参数
├── best_accuracy.states # 最佳模型的指标和epoch等信息
├── config.yml # 本次实验的配置文件
├── latest.pdopt # 最新模型的优化器参数
├── latest.pdparams # 最新模型的参数
├── latest.states # 最新模型的指标和epoch等信息
└── train.log # 训练日志

如果验证集很大,测试将会比较耗时,建议减少评估次数,或训练完再进行评估。

注意,预测/评估时的配置文件请务必与训练一致。

5. 评估

评估数据集可以通过修改configs/cls/cls_mv3.yml文件里的Eval.dataset.label_file_list 字段设置。

export CUDA_VISIBLE_DEVICES=0
# GPU 评估, Global.checkpoints 为待测权重
python3 tools/eval.py -c configs/cls/cls_mv3.yml -o Global.checkpoints={path/to/weights}/best_accuracy

6. 预测

  • 训练引擎的预测

使用 PaddleOCR 训练好的模型,可以通过以下脚本进行快速预测。

通过 Global.infer_img 指定预测图片或文件夹路径,通过 Global.checkpoints 指定权重:

# 预测分类结果
python3 tools/infer_cls.py -c configs/cls/cls_mv3.yml -o Global.pretrained_model={path/to/weights}/best_accuracy Global.load_static_weights=false Global.infer_img=doc/imgs_words/ch/word_1.jpg

预测图片:

得到输入图像的预测结果:

infer_img: doc/imgs_words/ch/word_1.jpg
     result: ('0', 0.9998784)
PaddleOCR的方向分类器代码解析(二) 2021SC@SDUSC   方向分类器是文本检测矫正的一部分。文本检测一般是检测四个点,通过对四个点的水平变化,把文本框矫正成水平方向,这一步在PaddleOCR中称为几何变换。但是文本框内的输入方向可能不是正向的。方向分类器的作用就是判断水平文本框中的文字是正向的还是倒向的(根据yml配置文件的label_list项可知,文本分类器仅支持这两种)。倒向的文字由方向分类器正向化后再去识别。 ... 阅读详情

相关推荐

PaddleOCR使用详解

文章目录PaddleOCR简介环境配置PaddleOCR2.0的配置环境Docker数据集文本检测使用自己的数据集文本识别使用自己的数据集字典自定义字典添加空格类别文本角度分类文本检测训练模型准备启动训练断点训练指标评估测试检测效果文本识别启动训练评估预测文本角度分类训练启动训练数据增强训练评估预测配置文件说明GlobalOptimizer ([ppocr/optimizer](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/ppocr/

c2861024198的博客 2万+

六、OCR-PaddlePaddle训练源码解析系列-文本方向分类器

github地址: https://github.com//PaddleOCR/blob/dygraph/doc/doc_ch/angle_class.md

qq_15821487的博客 878

PaddleOCR方向分类器优化实践:提升文本识别准确率的关键策略

本文深入探讨了PaddleOCR方向分类器的优化实践,通过技术实现剖析、典型问题诊断和领域自适应训练等关键策略,显著提升文本识别准确率。文章详细介绍了数据增强、模型集成和工程部署优化等实用技巧,帮助开发者在实际应用中实现高效OCR处理。

weixin_29061821的博客 262

【人工智能学习之PaddleOCR训练教程】

训练集txt文件中默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错。" 图像文件名 图像标注信息 "train_data/rec/train/word_001.jpg 简单可依赖train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单...|-rec|- train| ...

Jiagym的博客 2392

PaddleOCR 使用以及用自己的数据训练

在OCR方面找了很多资料,本来想要找pytorch框架下的算法,无奈很多OCR算法太老,没人更新。感觉这块有点冷门似的,不像其它热门算法一出来就有各个框架版本的复现。 看了paddleOCR真的是相当全面深刻了,还是我们自家的框架接地气。而且百度经常搞直播分享学习什么的,各种训练营还有学习群.... 首先github下载:https://github.com/PaddlePaddle/PaddleOCR并解压 一。试用官方模型 打开这个网址的中文版,下载预训练模型: https://git..

xingtianyao的博客 4万+

PaddleOCR方向分类器实战:如何用矩形框长宽比提升文本方向检测准确率

本文针对PaddleOCR内置方向分类器在90/270度旋转图片上易误判的痛点,提出一种创新优化方案。通过分析文本检测输出的矩形框长宽比特征,结合统计决策逻辑,与分类器结果进行智能融合,有效提升了文本方向检测的准确率。该方法无需额外模型计算,即可显著改善复杂场景下的OCR预处理效果。

xxx12的博客 1073

PaddleOCR详解和识别图片中文字

目录一、介绍1、什么是OCR?2、 PaddleOCR 2.1 PP-OCR简介和特点 2.2 特点3、模型训练 3.1 文本检测 3.2 文本识别 3.1 文字方向分类 二、安装和使用1、安装2、python 识别图片文字光学字符识别(Optical Character Recognition, OCR),ORC是指对包含文本资料的图像文件进行分析识别处理,获取文字及版面信息的技术,检测图像中的文本资料,并且识别出文本的内容。那么有哪些应用场景呢?其实我们日常生活中处处都有ocr的影子,比

创作不易,请多支持,将为本站提供更多「有价值的文章」。 2万+

PaddleOCR识别框架解读[19] 文本方向分类器--从训练到部署全流程

PaddleOCR识别框架解读[19] 文本方向分类器--从训练到部署全流程

我是天才很好 2119

ppocr训练自己的分类器(多方向)

PaddleOCR默认分类器仅支持0度和180度识别,但实际场景常需识别0°、90°、180°、270°四种角度。为此需修改模型网络结构,调整label_list和class_dim参数(类别数量)。数据格式为"路径\t类别",训练方法与det/rec模型类似,可参考相关文档。

m0_48095841的博客 389

python+panddleocr+文本方向分类训练导出测试

在PaddleOCR系统内, 文字检测之后得到的文本行图片经过仿射变换之后送入识别模型,此时只需要对文字进行一个0和180度的角度分类,因此PaddleOCR内置的 文本方向分类器只支持了0和180度的分类。也就是说在进行文本检测的时候必须要保持所有的文本接近水平方向(),可以文本检测出来结果后再用方向分类器分类,然后再文本识别。方向分类器也是个模型也可能训练输出的,这里只有0、180两个方向的判断()方向分类器能比较准确的识别接近水平的。文本方向分类器相关模型(必看)原始cls数据集格式。

吾名招财的博客 1192

paddle文字识别:制作数据集时怎么处理竖向排布的集装箱号?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 397

PaddleOCR实战指南:从安装到多语言文本识别的全流程解析

本文提供了PaddleOCR从安装部署到实战应用的全流程指南。详细介绍了如何快速搭建环境、进行单张与批量图片的文本识别,并重点解析了其强大的多语言识别能力,支持超过80种语言。此外,文章还涵盖了高级功能如版面分析、表格识别、性能调优及定制化模型训练,帮助开发者高效解决复杂OCR场景问题。

github5actions的博客 875

PaddleOCR识别框架解读[07] 文本检测--从训练到部署全流程

PaddleOCR识别框架解读[07] 文本检测--从训练到部署全流程

我是天才很好 860

PaddleOCR实战:如何用MobileNetV3提升文本检测精度(附代码示例)

本文详细介绍了如何利用MobileNetV3在PaddleOCR框架中提升文本检测精度,包括架构解析、数据增强策略优化、损失函数调优及实战部署技巧。通过代码示例和性能对比,展示了MobileNetV3在保持高效特性的同时实现精度提升的方法,适用于证件识别和自然场景文本检测等多种业务场景。

weixin_30596343的博客 187

基于PaddleOCR的四方向评分文档旋转校正方案

在档案数字化、票据扫描等文档自动化流程中,图片方向错乱是常见问题,而借助OCR技术本身就能完成方向判断。其原理是:OCR模型对0°/90°/180°/270°四个方向分别识别,文字行置信度、文本长度与检测框形态共同构成方向评分,得分最高的方向即为图像真实朝向。与投影法和独立方向分类器相比,该方案无需额外标注,直接复用PaddleOCR预训练模型,并可通过文本长度加权、置信度阈值和输入尺寸压缩等参数调优提升稳定性。适用于扫描件预处理、文档库构建和批处理流水线,配合OpenCV进行小角度精修即可兼顾效率与精度。

weixin_29051193的博客 115

Cloudflare 5秒盾逆向实战:13次请求背后的Python补环境框架搭建指南

本文深入解析了如何通过Python构建浏览器环境模拟框架,以应对Cloudflare 5秒盾等现代Web防护机制。文章详细拆解了其背后复杂的13次请求链,涵盖了JavaScript执行引擎集成、DOM事件模拟、网络请求控制及Canvas指纹等环境检测的完整实现方案,为自动化数据采集和逆向工程提供了实战指南。

gold的博客 347

PaddleOCR中文场景文字识别实践:从环境搭建到模型微调全流程解析

场景文字识别是计算机视觉领域的重要应用,与传统的文档扫描识别不同,它需要应对光照不均、背景复杂、字体多样等现实挑战。中文场景识别更因字符类别多、排列方式复杂、字体差异大等问题,难度远高于英文。深度学习技术为此提供了有效的解决思路,其中基于可微分二值化的DBNet用于文本检测,基于Transformer的SVTR用于文本识别,配合方向分类模块,构成了完整的识别流水线。PaddlePaddle生态中的PaddleOCR套件封装了从预训练模型、训练微调到部署优化的全链路工具,帮助开发者高效解决中文场景下的招牌识别

weixin_29048309的博客 256

STM32MP157+AD7606BSTZ四通道IEPE传感器采集方案实战(附完整电路图)

本文详细介绍了基于STM32MP157和AD7606BSTZ的四通道IEPE传感器采集方案,涵盖硬件电路设计、软件驱动开发及系统性能优化。通过精确的恒流源设计和同步采样技术,实现高精度振动信号采集,适用于工业振动监测等应用场景。

weixin_42713608的博客 702

PaddleOCR光学字符识别(OCR)工具库/系统微调步骤

PaddleOCR是一个完整的文字识别算法套件,采用三阶段流水线架构:文本检测(定位文字区域)、方向分类(校正文字方向)和文本识别(转换为字符序列)。官方提供超轻量(移动端)和高精度(服务器)等不同规格的模型,支持行业专用和多模态扩展。使用前需准备Python环境、安装依赖和PaddlePaddle框架。训练流程包括数据准备(标注工具或YOLO+多模态模型生成标注)、预训练模型加载和配置文件修改(数据集路径、字典文件等参数)。最后通过运行train.py脚本启动训练(CPU或GPU均可)。

m0_67691058的博客 266

智能车八邻域图像算法_二

智能车八邻域图像算法 文章目录智能车八邻域图像算法前言一、一些想法二、生长方向的使用1.点的生长方向的表示2. 用点的生长方向来做初步判断1.引入库2.读入数据总结 前言 上一篇里面讲过用八邻域来获得赛道边界:智能车八邻域图像算法 当已经能稳定获得赛道边界时,就可以进行元素识别,获得偏差了。 这里就介绍一下我的一些思路。 早在前两年,优快云上就有一篇关于八邻域如何处理元素的文章第十五届全国大学生智能汽车竞赛-双车组三轮图像处理总结,写得很好,我当时也参考了这篇文章,但是我觉得不是很详细,所以我这里想写得

技术缝合怪的博客 1万+

基于情感分析+聚类分析+LDA主题分析对服装产品类的消费者评论分析

本研究旨在通过对服装产品类的消费者评论进行综合分析,为企业提供更全面、更深入的市场洞察和决策支持。同时,本研究的方法和结果也可以为其他领域的消费者评论分析提供借鉴和参考。

m0_64336780的博客 2万+
上一篇: [paddleocr]文字识别训练
下一篇: [paddleocr]基于Python引擎的PP-OCR模型库推理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值