OCR (Optical Character Recognition)是一种针对图像中文字进行自动识别的技术,有着悠久的研究历史和广泛的应用场景,如公文电子化、身份认证、数字金融系统、车牌识别等。此外,在工厂中, 通过自动提取产品的文本信息,可以更方便地管理产品。学生的线下作业或试卷可以通过OCR系统实现电子化,使师生之间的交流更加高效。OCR还可以用于标注街景图像的兴趣点(POI),有利于提高地图制作效率。丰富的应用场景赋予OCR技术巨大的商业价值,同时也带来了诸多挑战。
图像中的文本一般可以分为两类:场景文本和文档文本。本文介绍了一种实用的超轻量级OCR系统PP-OCR,能精准识别多种场景下的图片中文本。该系统由文本检测、检测框矫正和文本识别三部分组成,识别6622个汉字仅为3.5M,识别63个字母数字符号仅为2.8M。原创论文中提出一套策略,以增强模型能力或减少模型大小。同时,发布了几个用于中文和英文识别的预训练模型,包括文本检测器(97K张图像),方向分类器(600K张图像)和文本识别器(17.9万张图像)。
代码可以在GitHub存储库中获得,地址:https://github.com/PaddlePaddle/PaddleOCR。
论文地址:https://arxiv.org/pdf/2009.09941.pdf。
模型文件查看与下载地址:GitCode - 全球开发者的开源社区,开源代码托管平台
下面介绍一下PP-OCR模型架构与技术原理
下图为PP-OCR架构图
文本检测:文本检测的目的是定位图像中的文本区域。在PP-OCR中,我们使用可微二值化(DB) 作为基于简单分割网络的文本检测器。
检测框校正:在识别检测到的文本之前,需要将文本框变换为水平矩形框,以便后续的文本识别。
文本识别:在PP-OCR中,我们使用CRNN作为文本识别器,它对于文本识别具有广泛的实用性。
详解文本检测:
PaddleClass提供了总共多达24系列的图像分类网络结构和训练配置,122个模型的预训练权
重及其评估指标,如ResNet, ResNet_vd, SEResNeXt, Res2Net, Res2Net_vd, DPN, DenseNet, EfficientNet, Xception, HRNet等。轻量级骨干这里采用MobileNetV3。
文本检测器的头部类似于目标检测中的FPN架构,并融合不同尺度的特征图,以提高对小文本区域检测的效果。为了方便合并不同分辨率的特征图,1 × 1卷积通常用于将特征图减少到相同数量的通道(我们简称为inner_channels)。当输入分辨率较大时,如640 × 640,很难用SE块估计通道级特征响应。如果用SE块精度提升有限,但时间成本很高。所以从主干中移除SE块,移除SE块后,模型大小从4.1M减小到2.5M,但对精度没有影响。 学习率是控制学习速度的超参数。采用余弦学习率衰减法。在整个训练过程中,余弦学习率衰减保持了一个相对较大的学习率, 因此其收敛速度较慢,但最终收敛精度较好。下图展示余弦学习率中学习率变化情况
详解方向分类:
轻量级骨干采用MobileNetV3作为方向分类器的骨干,与文本检测器相同。
数据增强本文,一些用于训练文本识别器的图像处理操作,如旋转,透视失真,运动模糊和高斯噪声。这些过程简称为BDA(基 础 数 据 增 强)。 它 们 被 随 机 添 加 到 训 练 图 像 中 。除 了BDA, 最 近 还 提 出 了 一 些新的数据增强操作来提高图像分类的效果,其中RandAugment的效果最好。 最后,将BDA和RandAugment添加到方向分类的训练图像中。 PACT (PArameterized Clipping acTivation)是一种新的在线量化方法,它提前从激活中删除一些异常值。在去除异常值后,模型可以学习到更合适的量化尺度。PACT预处理激活函数的公式如下:
基于ReLU函数对普通PACT方法的激活值进行预处理。所有大于某个阈值的激活值都会被截断。然而,MobileNetV3中的激活函数不仅是ReLU,还有hard swish。使用普通契约量化会导致较高的量化损失。因此,修改激活预处理的公式如下,以减少量化损失。
使用改进的PACT量化方法对方向分类器模型进行量化。此外,在PACT参数中加入了系数为0.001的L2正则化,以提高模型的鲁棒性。
上述PACT量化的实现基于PaddleSlim。PaddleSlim是一个模型压缩工具包。它包含一组压缩策略,如修剪、定点量化、知识蒸馏、超参数搜索神经架构搜索。
详解文本识别:
轻 量 级 主 干 还 采 用MobileNetV3作 为 文 本 识 别 器 的 主 干 , 这 与 文 本 检 测 相 同 。 下图为文本识别架构
下图为TIA数据增强
数据增强除了前面提到的在文本识别中经常使用的BDA (Base Data Augmentation),TIA也是一种有效的文本识别数据增强方法。如上图11所示,首先,在图像上初始化一组基准点。然后随机移动这些点以生成具有几何变换的新图像。在PP-OCR中,我们将BDA和TIA添加到文本识别的训练图像中。
余弦学习率衰减正如在文本检测中提到的,余弦学习率衰减已经成为首选的学习率降低方法。实验结果表明,余弦学习率衰减策略对于增强模型的文本识别能力也是有效的。
正则化参数过拟合是机器学习中的一个常见术语。 一个简单的理解是,模型在训练数据上表现很好,
但在测试数据上表现很差。为了避免过拟合,人们提出了许多常规方法。其中,weight_decay是一种广泛使用的避免过拟合的方法。在最终的损失函数之后,L2正则化(L2_decay)被添加到损失函数中。
头部采用全连接层将序列特征编码为普通的预测字符。序列特征的维数对文本识别器的模型大小有很大的影响,特别是对于6 000字以上的中文识别。同时,并不是维度越高,序列特征的表示能力就越强。在PP-OCR中,序列特征的维度根据经验设置为48。 预训练模型如果训练数据较少,微调现有的网络,这些网络是在大数据集(如ImageNet)上训练的,以实现快速收敛和更好的精度。
量化除了跳过LSTM层外, 我们采用类似方向分类的量化方案来减小文本识别器的模型大小。由于LSTM量化的复杂性,这些层目前不会被量化。
在已有PP-OCR模型基础上投入自己数据训练自己的OCR模型方法步骤,可参考另外一个csdn作者提供的文章:PadleOCR训练自己的ocr模型之训练步骤_paddleocr训练分类模型-CSDN博客
在这编文章中,如果你要在本机用gpu进行训练,要求安装gpu版本的PaddlePaddle,你可以先进入这个页面https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html查看适合你电脑上cuda, cudnn版本的安装文件版本,再用命令安装,如:
Pip install paddlepaddle-gpu==2.6.1.post116 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
在没有报错、安装完成情况下,你可以在python程序中用如下代码测试是否能获取到gpu设备:
import paddle
print(paddle.device.get_device())
如果系统有提示lanms 找不到,可以参考下面文章解决:
paddleocr,windows pip 安装巨坑 lanms 库,全网最简单,最直接,最有效(记录贴)
https://blog.csdn.net/weixin_44354483/article/details/129415169
在用模型进行推理时候,会返回每张图片中检测出的内容及各个文字框的四角点坐标,如下图所示:
如果是票据或身份证,可以根据不同部分所处位置确定识别的文字代表的字段或属性。
随着大模型的出现与发展,为了解决OCR在不确定多种布局版本的文本图像中识别指定字段内容,出现了PP-OCR与大模型结合使用方法,以提高识别准确率,提高模型的兼容性的效果,这样PP-ChatOCRv2模型出现了。
PP-ChatOCRv2通过将LLM(Large Language Model)与经典的PP-OCR模型结合实现了通用场景下的图片关键信息抽取效果。这种结合的方式支持身份证、银行卡、户口本、火车票等多种场景的关键信息提取。用户只需指明自己所关注的字段,PP-ChatOCR就能从图片中提取出这些字段的信息。这种结合不仅提高了信息抽取的精度,还支持用户自定义关注的信息字段,使得信息提取更加灵活和高效。
具体来说,PP-ChatOCRv2通过将LLM与PP-OCR模型相结合,利用LLM的强大语言处理能力,对PP-OCR提取出的文本信息进行进一步的处理和分析,从而实现了对图片中关键信息的抽取和交互。这种结合方式不仅提高了信息抽取的精度,还使得用户能够更方便地获取和处理图片中的关键信息。
此外,PP-ChatOCRv2还支持多种场景的关键信息提取,如身份证、银行卡等,这得益于其结合了PP-OCR模型在文本识别方面的优势和LLM在自然语言处理方面的能力。通过这种结合,PP-ChatOCRv2能够有效地从复杂场景的图片中提取出用户所需的关键信息,从而提高了信息处理的效率和准确性。
标签:PP,识别,模型,文本,图像,原理,OCR From: https://blog.csdn.net/heyiqiunet/article/details/141966305