Opencv多语言自然场景文本识别系统(源码&教程)
由于图床过期,图片无法正常显示,有图阅览请移步以下Gitee/Github网址,文末获取【源码和部署教程】或者通过以下Gitee/Github的文末邮件获取
Gitee(推荐国内访问): https://gitee.com/qunmasj/projects
Github(推荐国外访问): https://github.com/qunshansj?tab=repositories
# 1. 研究背景
人类在自然场景中可以快速定位并识别看到的文字信息,但是想要计算机做到和人类一样是比较困难的。开发人员一直想要让机器也能识别图像中的文字信息。当然,对于自然场景来说,图像中的信息复杂甚至是低效的,文字旁的物体﹑光影,以及字体颜色、大小、书写风格,都会给机器识别带来不同程度的影响。图像文本识别通常被划分为两个部分:文本检测与文本识别。
文本检测是文本识别首先要做的一步,是必不可缺的一步。要让机器识别自然场景中获取的文本信息,要先让机器知道文本信息的位置。现在也有很多文本检测的解决方案,但是在面对复杂的图像时,往往抗干扰能力不尽如人意。而且这些图像通常会有不同字体(例如艺术文字),不同形状,严重影响了文本的检测与识别。
2.多语言选择模块
3.识别效果展示
4.效果视频演示
Opencv多语言自然场景文本识别系统(源码&教程)_哔哩哔哩_bilibili
5.文本识别算法CRNN
文本识别是把文字图片转换成计算机可读文本的过程,输入是从原图中裁剪出来的候选区域的图片,输出是图片中包含的文字序列。目前的文本识别方法把识别任务看作一种序列识别任务,可以省略字符的分割。和一般图像分类任务不一样,文本识别输出的是文字序列,长度不固定。如图所示,根据序列建模方式的不同 将 目 前 文 本 识 别 方 法 分 为 两 大 类 :
1.基 于 CTC(Connectionist Temporal Classification)的文本识别算法
2.基于注意力机制的文本识别算法
文本识别的目的是将候选区域中的文本图案识别为标准的文字,由于文本识别算法并不是论文的研究重点,所以本节只介绍文中使用到的CRNN文本识别算法。
CRNN的主要思想就是将文本识别看作是对序列的预测,而不是将文本看作独立的目标,所以采用了RNN网络来预测序列,算法的主要流程可以分为三个部分:通过CNN网络提取图像特征,然后采用BiSTLM(双向长短时记忆)网络来对序列进行预测,最后通过CTC转录层来得到最终的结果。
代码实现
1 | class CRNN(nn.Module): |
6.基于改进CTC的方法
参考该博客直接将字符特征序列转化为字符概率,通过CTC损失来得到识别Loss。受到语音识别的启发,CRNN将CTC引入到基于图像的序列识别中,CRNN是一种端到端的文本序列识别系统,包括卷积模块、递归模块和转录模块。为了提取来自相关上下文的信息,用到了一种循环卷积神经网络——LSTM,在LSTM中通过“门”来控制历史信息的遗忘和当先状态的更新。Star-net将空间变换和CRNN相结合,引入空间注意力机制对具有几何畸变的文本图像进行校正,从而实现对具有几何畸变的场景文本的识别。为了避免RNN训练过程中的梯度退化和梯度爆炸。
Gao提出了一种端到端的全卷积文本识别网络,该网络采用CNN捕捉长期依赖关系,并代替RNN生成序列特征,该模型大大提高了识别器的识别速度。文献[1]-[2]同样运用神经网络结合CTC实现了准确鲁棒的识别自然场景中倾斜的文本,如下图所示。
代码实现
1 | def ctc(img, text_recs, adjust=False): |
7.系统整合
参考文献《Opencv多语言自然场景文本识别系统(源码&教程)》
8.参考文献
[1]韩宇.基于CNN及RPN技术的文字识别应用[J].机电信息.2019,(21).90-91,93.DOI:10.3969/j.issn.1671-0797.2019.21.046.
[2]李颖,刘菊华,易尧华.自然场景图像的字符识别方法[J].包装工程.2018,(5).168-172.
[3]李文轩,孙季丰.基于复合优化的深度玻尔兹曼机的路牌文字图像识别算法[J].计算机工程与科学.2018,(1).79-85.DOI:10.3969/j.issn.1007-130X.2018.01.012.
[4]万萌.基于深度学习的自然场景文字检测与识别方法研究[D].2019
[5]陈桂安.端到端的自然场景文字检测与识别神经网络的研究与实现[D].2019
[6]Baoguang Shi,Xiang Bai,Cong Yao.An End-to-End Trainable Neural Network for Image-Based Sequence Recognition and Its Application to Scene Text Recognition[J].IEEE Transactions on Pattern Analysis & Machine Intelligence.2017,39(11).2298-2304.