OCR光学字符识别综述

生活百科11个月前发布 aixure
55 0 0

OCR文字识别综述OCR定义

OCR(Optical Character Recognition,光学字符识别)是指对图像进行分析识别处理,获取文字和版面信息的过程,是典型的计算机视觉任务,通常由文本检测和文本识别两个子任务构成。

OCR发展历程

早在60、70年代,人们就开始对OCR进行研究。在研究的初期,主要以文字识别方法研究为主光学字符识别,而且识别的文字仅为0-9的数字。数字识别主要应用在识别邮件上的邮政编码。

在深度学习出现之前,传统算法(如积分投影、腐蚀膨胀、旋转等)在OCR领域占据主导地位。其标准的处理流程包括:

受传统算法的局限性,传统OCR仅在比较规整的印刷文档上表现比较好,但在复杂场景(图像模糊、低分辨率、干扰信息)之下,文字检测、识别性能都不够理想。

自2012年AlexNet在ImageNet竞赛夺冠以来,深度学习方法开始在图像视频领域大幅超越传统算法,OCR领域也引入了深度学习,包括基于卷积神经网络(Convolutional Neural Network, CNN)来取代传统算法提取特征。深度学习OCR主要分为2步,首先是检测出图像中的文本行、接着进行文本识别。

OCR 常用检测方法

OCR文字检测就是将图片中的文字区域检测出来。

常用的基于深度学习的文字检测方法一般可以分为基于回归的、基于分割的两大类,当然还有一些将两者进行结合的方法。

基于回归的方法

基于回归的方法又分为box回归和像素值回归:

box回归采用box回归的方法主要有CTPN、Textbox系列和EAST

像素值回归采用像素值回归的方法主要有CRAFT和SA-Text,这类算法能够检测弯曲文本且对小文本效果优秀但是实时性能不够。

基于分割的算法

OCR光学字符识别综述

如PSENet,这类算法不受文本形状的限制,对各种形状的文本都能取得较好的效果,但是往往后处理比较复杂,导致耗时严重。目前也有一些算法专门针对这个问题进行改进,如DB,将二值化进行近似,使其可导,融入训练,从而获取更准确的边界,大大降低了后处理的耗时。

OCR常用算法

算法论文出处引用量

2D-CTC

2D-CTC for Scene Text Recognition

arXiv1907

25

AM

Recursive Recurrent Nets with Attention Modeling for OCR in the Wild

CVPR2016

416

CRNN

An End-to-End Trainable Neural Network for Image-Based Sequence Recognition and Its Application to Scene Text Recognition

TPAMI2016

1808

ACE

Aggregation Cross-Entropy for Sequence Recognition

CVPR2019

58

SAR

Show, Attend and Read: A Simple and Strong Baseline for Irregular Text Recognition

AAAI2019

167

TrOCR

TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models

arXiv2109

OCR光学字符识别综述

11

Rosetta

Rosetta: Large scale system for text detection and recognition in images

arXiv2019

SVTR

SVTR: Scene Text Recognition with a Single Visual Model

IJCAI2022

MaskOCR

MaskOCR: Text Recognition with Masked Encoder-Decoder Pretraining

arXiv:2206.00311

CRNN

CRNN算法的模型设计非常直觉, 通过CNN抽取一个1维特征表示 (如下图, 可以想象为一个滑动窗口提取的1维特征, 整体来看, 维度为,C为通道数), 然后送入LSTM后得出一个后验概率矩阵 (维度为, L为字典长度+1, 因为有空字符).

得到这样一个后验概率矩阵后, 我们需要将其转换为输出的文字. 这里的矩阵维度由图片长度确定, 大于文本的长度, 所以并不能直接将概率矩阵转为文本 (如果直接转换, 会有重复字符), 而是使用Connectionist Temporal Classification (CTC)算法.

CTC的算法思想类似于HMM的前向后向算法, 简而言之, 就是通过动态规划求解出满足概率矩阵的文本,具体的原理推导可以参见, 这里不再赘述.

总结2D-CTC

2D-CTC解决的问题主要是不规则图像包含大量背景, 而这些信息对于模型是噪声, CTC的1D概率矩阵不可避免的会因此引入噪声. 2D-CTC将后验概率矩阵的维度有变为, 即增加了高度信息, 这样的话尽可能避免背景噪音对于概率矩阵的影响.

与1D-CTC相同的是, 2D-CTC依然每一列只有一个输出, 也就是说, 它的后验概率矩阵依然是以列为序的, 所以如果碰到多行文本, 后验概率矩阵依然要通过CRNN等模型学习出一个按列重排的有序概率矩阵.

ACE

ACE loss的出发点是觉得计算CTC loss的过程计算消耗大, 提出了一种简单的近似算法来优化后验概率矩阵来替代CTC loss. ACE算法只要计算单词出现频率, 与标签的真实频率求交叉熵损失, 通过这个去优化概率矩阵. 并且这样的算法, 可以直接用于2D概率矩阵优化, 2D概率矩阵的优点和2D-CTC类似, 更适合含有背景的不规则图像.

根据网上分享, 只用ACE loss可能存在收敛困难等问题, 而ACE loss结合CTC loss一起训练, 相较于CTC loss可以获得额外的提升,.

SVTR

PaddleOCR的PP-OCRv3钦定模型, 模型小, 效果好.主要就是利用Transformer替代了RNN, 得益于self-attention机制, 这样面对不规则文本图像的时候应该有更好的信息抽取能力, 可以更好的抽取有序后验概率矩阵。

AM

OCR很像图像描述/翻译, 所以很自然的想到将图像描述/翻译领域大获成功的seq2seq模型运用到OCR任务中。CNN提取的特征是一个一维向量, RNN的输出是每个位置的字母的预测概率 (如英文26个字母, 维度就是26), 求交叉熵损失反向传播. Attention机制可以帮助RNN关注到需要关注的特征, 提升性能, 上图几种办法在规则文本数据集上的表现如下

SAR

SAR同样是一个seq2seq模型, 不同于 AM直接用CNN抽取图像的一维特征, SAR先用CNN抽取一个feature map, 再将feature map一列一列送入LSTM encoder得到一维特征在进行解码, 解码过程依靠原来的feature map做attention。

总结

SAR一列一列送入LSTM encoder的做法很想CRNN中的做法, 可以看作引入了文本横向阅读的先验知识, 并且feature map保留了图像的空间信息, 用它做attention更合理.

TrOCR

Transformer的暴力美学, 一个encoder一个decoder完事, 轻松SOTA, 不过模型参数量也相当惊人. Decoder可以使用语言预训练模型. 并且Transformer还有一些自监督预训练的办法, MaskOCR就采用自监督预训练继续刷榜.

OCR常用评估指标

检测阶段:

识别阶段:字符识别准确率,即正确识别的文本行占标注的文本行数量的比例,只有整行文本识别对才算正确识别。

端到端统计:端对端召回率:准确检测并正确识别文本行在全部标注文本行的占比;端到端准确率:准确检测并正确识别文本行在 检测到的文本行数量 的占比;准确检测的标准是检测框与标注框的IOU大于某个阈值,正确识别的的检测框中的文本与标注的文本相同。

应用场景

在日常生活中,文字内容无处不在,根据拍摄的内容,自动分析图像中的文字信息已经成为人们的广泛诉求。而通过深度学习技术,可以自动的定位文字区域,并且学习包含丰富语义信息的特征,识别出图像中的文字内容。当前这一技术已经广泛应用于金融、交通等各行各业中。

OCR面临的挑战技术难点

克服这些技术难点需要综合应用计算机视觉、机器学习和自然语言处理等领域的技术光学字符识别,并进行持续的研究和改进。通过改进分割算法、训练更复杂的模型、引入上下文信息和采用深度学习等技术,可以提高OCR识别的准确性和鲁棒性。

发展前景

OCR技术在未来有着广阔的前景,有以下几个方面的趋势和发展:

对于从业人员的建议参考

限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:

© 版权声明

相关文章

暂无评论

暂无评论...