首页 > 其他分享 >PP-OCR技术原理与实现方法

PP-OCR技术原理与实现方法

时间:2024-09-06 18:22:49浏览次数:5  
标签:PP 识别 模型 文本 图像 原理 OCR

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

相关文章

  • 元素定位、规避监控、APP自动化测试(Appium)等
    元素定位我们通过webdriver打开一个网络页面,目的是为了操作当前页面已完成浏览器中的一些UI测试步骤,所以必然需要操作网页。而网页的内容组成是由HTML标签(element,也叫元素),所以基于selenium操作网页实际上本质就是操作元素。那么要操作元素就必须先获取元素对象。selenium中关于元......
  • 短剧APP系统搭建,短剧市场的发展机遇
    短剧作为近几年内发展快速的行业,一直深受大众的欢迎,各种让观众上头的短剧层出不穷,深深吸引着大众。短剧的巨大发展前景也吸引了大量资本涌入市场,目前,短剧入局者也都获得了不菲的经济收益!随着短剧行业的快速发展,短剧APP平台也进入到了蓬勃发展期,为大众带来一个便利、丰富的短剧观看......
  • estimate、appraise、assess和evaluate的区别
    estimate:预估。estimate的结果一定是一个具体的数字。比如:Governmentsourcesestimatealong-term50percentincreaseinrailfares.(政府消息人士估计,火车票会上涨50%)。宾语中带有数值结果是estimate的重要特征:其它几个词的宾语都是被评估的事物,强调的是评估行为本身,通常不......
  • 【Java】【SpringBoot】读取配置文件(appliation.yml)的值
    这里叙述4中读取配置文件(application.yml)方法  application.yml配置如下:#测试数据(用于读取数据文件值)student:name:lisiage:13name:zhangsan使用@value注解@SpringBootTestpublicclassApplicationTest{@Value("${student.name}")privateStr......
  • 媒体网站广告APP首页怎么投放?新闻首页视频焦点图文字链意义详解
    【本篇由言同数字媒体广告发稿原创】在信息爆炸的数字时代,媒体网站和新闻APP成为了重要的信息传播平台。广告作为这些平台的重要组成部分,通过多种形式帮助品牌达到目标受众。本文将介绍媒体网站和新闻APP的广告形式、行业领域新闻媒体的广告实例,以及广告合作的方法。广告形式1.首......
  • 基于SpringBoot+Vue+uniapp的同城蔬菜配送管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的教学辅助微信小程序(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的课程教学网站(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的电商平台的用户画像(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 11个提升点击率的技巧:如何撰写出色的PPC广告
    PPC是一种极佳的方式来为你的网站引流高质量流量——但前提是人们会点击你的广告。更糟糕的是,低点击率会拖累你的广告质量得分,从而提高你的广告成本。这就是为什么撰写出色的广告文案是你在付费搜索中应该投入时间的最重要的事情。那么,什么是出色的广告文案?它不仅仅是遵循最......