(14-1)OCR文本检测识别系统(OpenCV+TensorFlow Lite+TensorFlow+Android):背景介绍+背景介绍

OCR(Optical Character Recognition)即光学字符识别,是指电子设备(如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法 将形状翻译成计算机文字的过程:即对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。在本章的内容中,将详细讲解使用人工智能技术开发一个OCR文本检测识别系统的过程。

14.1  背景介绍

光学文字识别的概念是在1929年由德国科学家Tausheck最先提出来的,后来美国科学家Handel也提出了利用技术对文字进行识别的想法。而最早对印刷体汉字识别进行研究的是IBM公司的Casey和Nagy,1966年他们发表了第一篇关于汉字识别的文章,采用了模板匹配法识别了1000个印刷体汉字。

早在60、70年代,世界各国就开始有OCR的研究,而研究的初期,多以文字的识别方法研究为主,且识别的文字仅为0至9的数字。以同样拥有方块文字的日本为例,1960年左右开始研究OCR的基本识别理论,初期以数字为对象,直至1965至1970年之间开始有一些简单的产品,如印刷文字的邮政编码识别系统,识别邮件上的邮政编码,帮助邮局作区域分信的作业,也因此至今邮政编码一直是各国所倡导的地址书写方式。

20世纪70年代初,日本的学者开始研究汉字识别,并做了大量的工作。中国在OCR技术方面的研究工作起步较晚,在70年代才开始对数字、英文字母及符号的识别进行研究,70年代末开始进行汉字识别的研究,到1986年汉字识别的研究进入一个实质性的阶段,不少研究单位相继推出了中文OCR产品。早期的OCR软件,由于识别率及产品化等多方面的因素,未能达到实际要求。同时,由于硬件设备成本高,运行速度慢,也没有达到实用的程度。只有个别部门,如信息部门、新闻出版单位等使用OCR软件。

1986年以后我国的OCR研究有了很大进展,在汉字建模和识别方法上都有所创新,在系统研制和开发应用中都取得了丰硕的成果,不少单位相继推出了中文OCR产品。进入20世纪90年代以后,随着平台式扫描仪的广泛应用,以及我国信息自动化和办公自动化的普及,大大推动了OCR技术的进一步发展,使OCR的识别正确率、识别速度满足了广大用户的要求。目前OCR软件产品在医院、学校、企业等各大市场得到了广泛的应用。

14.2  OCR系统介绍

在开发OCR系统之前,需要先了解OCR系统开发需要的理论知识,了解开发OCR系统的步骤和流程。

14.2.1  OCR的基本原理和方式

在传统的OCR系统中,基本原理就是通过扫描仪将一份文稿的图像输入给计算机,然后由计算机取出每个文字的图像,并将其转换成汉字的编码。其具体工作过程是,扫描仪将汉字文稿通过电荷耦合器件CCD将文稿的光信号转换为电信号,经过模拟/数字转换器转化为数字信号传输给计算机。计算机接受的是文稿的数字图像,其图像上的汉字可能是印刷汉字,也可能是手写汉字,然后对这些图像中的汉字进行识别。对于印刷体字符,首先采用光学的方式将文档资料转换成原始黑白点阵的图像文件,再通过识别软件将图像中的文字转换成文本格式,以便文字处理软件的进一步加工。其中文字识别是OCR的重要技术。

与其它信息数据一样,在计算机中所有扫描仪捕捉到的图文信息都是用0、1这两个数字来记录和进行识别的,所有信息都只是以0、1保存的一串串点或样本点。OCR识别程序识别页面上的字符信息,主要通过单元模式匹配法和特征提取法两种方式进行字符识别。

单元模式匹配识别法(Pattern Matching)是将每一个字符与保存有标准字体和字号位图的文件进行不严格的比较。如果应用程序中有一个已保存字符的大数据库,则应用程序会选取合适的字符进行正确的匹配。软件必须使用一些处理技术,找出最相似的匹配,通常是不断试验同一个字符的不同版本来比较。有些软件可以扫描一页文本,并鉴别出定义新字体的每一个字符。有些软件则使用自己的识别技术,尽其所能鉴别页面上的字符,然后将不可识别的字符进行人工选择或直接录入。

特征提取识别法(Feature Extraction)是将每个字符分解为很多个不同的字符特征,包括斜线、水平线和曲线等。然后,又将这些特征与理解(识别)的字符进行匹配。举个简单的例子,应用程序识别到两条水平横线,它就会“认为”该字符可能是“二”。特征提取法的优点是可以识别多种字体,例如中文书法体就是采用特征提取法实现字符识别的。

多数OCR应用软件都加入了语法智能检查功能,这种功能进一步提高了识别率。它主要通过上下文检查法实现拼写和语法的纠正,在文字识别时,OCR应用程序会做多次的上下文衔接性检查,根据程序中已经存在的词组、固定的用词顺序,对应的检查字符串的用词字。比较高级的应用软件会自动用它“认为”正确的词语替换错误词语,纠正语句意思。

14.2.2  文字识别的基本步骤

文字识别包括以下几个步骤:图文输入、预处理、单字识别和后处理等。

(1)图文输入

是指通过输入设备将文档输入到计算机中,也就是实现原稿的数字化。现在用得比较普遍的设备是扫描仪。文档图像的扫描质量是OCR软件正确识别的前提条件。恰当地选择扫描分辨率及相关参数,是保证文字清楚、特征不丢失的关键。此外,文档尽可能地放置端正,以保证预处理检测的倾斜角小,在进行倾斜校正后,文字图像的变形就小。这些简单的操作,会使系统的识别正确率有所提高。反之,由于扫描设置不当,文字的断笔过多可能会分检出半个文字的图像。文字断笔和笔画粘连会造成有些特征丢失,在将其特征与特征库比较时,会使其特征距离加大,识别错误率上升。

(2)预处理

扫描一幅简单的印刷文档的图像,将每一个文字图像分检出来交给识别模块识别,这一过程称为图像预处理。预处理是指在进行文字识别之前的一些准备工作,包括图像净化处理,去掉原始图像中的显见噪声(干扰)。主要任务是测量文档放置的倾斜角,对文档进行版面分析,对选出的文字域进行排版确认,对横、竖排版的文字行进行切分,每一行的文字图像的分离,标点符号的判别等。这一阶段的工作非常重要,处理的效果直接影响到文字识别的准确率。

版面分析是对文本图像的总体分析,是将文档中的所有文字块分检出来,区分出文本段落及排版顺序,以及图像、表格的区域。将各文字块的域界(域在图像中的始点、终点坐标),域内的属性(横、竖排版方式)以及各文字块的连接关系作为一种数据结构,提供给识别模块自动识别。对于文本区域直接进行识别处理,对于表格区域进行专用的表格分析及识别处理,对于图像区域进行压缩或简单存储。行字切分是将大幅的图像先切割为行,再从图像行中分离出单个字符的过程。

(3)单字识别

单字识别是体现OCR文字识别的核心技术。从扫描文本中分检出的文字图像,由计算机将其图形、图像转变成文字的标准代码,是让计算机“认字”的关键,也就是所谓的识别技术。就像人脑认识文字是因为在人脑中已经保存了文字的各种特征,如文字的结构、文字的笔画等。要想让计算机来识别文字,也需要先将文字的特征等信息储存到计算机里,但要储存什么样的信息及怎样来获取这些信息是一个很复杂的过程,而且要达到非常高的识别率才能符合要求。通常采用的做法是根据文字的笔画、特征点、投影信息、点的区域分布等进行分析。

中国汉字常用的就有几千,识别技术就是特征比较技术,通过和识别特征库的比较,找到特征最相似的字,提取该文字的标准代码,即为识别结果。比较是人们认识事物的一种基本方法,汉字识别也是通过比较找出汉字之间的相同、相似、相异,把握其量和质的关系,以及时间与空间的关系等。对于大字符集的汉字一般采用多级分类,多特征、全方位动态匹配求相似集,以保证分类率高、适应性强、稳定性好;细分类重点在于对相似集求异匹配、加权处理、结构判别,定量、定性分析,以及前后联接词的关系,最后进行判别。汉字识别实质上是比较科学或认知科学在人工智能方面的应用,其关键技术是识别特征库。计算机有了这样的一个特征库,才能完成认字的功能。

在图像文档的版面中,除了有文字、图片,有时还会有表格存在,为了使识别后的表格数字化,需要在版面分析过程中,对表格域进行特殊的处理,它包括对表格线的结构信息的提取,对表格内文字域的分检,完成对表格线和对文字域的识别,并根据表格线的数字化生成不同的文件格式。由于文档中的表格随意性大,格式多样,有封闭式的,也有开放式的,特别是表格中的斜线,给表格分析造成一定的困难。

(4)后处理

后处理是指对识别出的文字或多个识别结果采用词组方式进行上下匹配,即将单字识别的结果进行分词,与词库中的词组进行比较,以提高系统的识别率,减少误识率。

汉字字符识别是文字识别领域最为困难的问题,它涉及模式识别、图像处理、数字信号处理、自然语言理解、人工智能、模糊数学、信息论、计算机、中文信息处理等学科,是一门综合性技术。近几年来,印刷汉字识别系统的单字识别正确率已经超过95%,为了进一步提高系统的总体识别率,扫描图像、图像的预处理以及识别后处理等方面的技术也都得到了深入的研究,并取得了长足的进展,有效地提高了印刷汉字识别系统的总体性能。清华大学在此方面的研究成果突出,已经成为世界上的最具权威的机构之一。目前,清华紫光的全系列扫描仪中都配装了清华OCR千禧版软件,它在识别率、表格识别甚至规范手写体的识别方面,均达到了较高水平。

14.2.3  深度学习对OCR的影响

深度学习算法的应用使OCR识别技术得到了一次跨越式的升级,整体提升了OCR的识别率与识别速度。深度学习OCR借助神经网络可模仿人脑机制对图像、文本等数据进行分析,可以更加可靠、快速地完成海量样本的训练,得到近似专家能力的最优模型,同时在低质量图像、生僻字、非均匀背景、多语言混合等复杂场景中实现了高效精准的识别与分类。

但是随着模型复杂度的提高,也带来了高额的存储空间、计算资源消耗问题,使其需要强大的算力支撑,很难落实到各个硬件平台,而如今众多的手机芯片,大多数基于ARM结构,相比服务端算力有限,所以移动端OCR算法多以牺牲一定的精度获取运行速度,轻量化网络,深度学习的移动端部署已成为重要的发展方向。

相比于传统OCR,在识别精度与速度上,深度学习OCR遥遥领先。以银行卡识别为例,深度学习移动端可适用于对焦不准、高噪声、低分辨率、强光影等复杂背景的图像识别,准确率提升10个点以上,同时识别速度变为原来的二分之一。

在证件分割中,深度学习网络可高效地学习到边缘情况,通过边缘检测,得到物体的边缘轮廓,然后通过边缘跟踪合并,得到证件信息,保障识别效果。

在目标检测中,可在杂乱无序、千奇百怪的复杂场景中准确定位出主方向角度、直线、图章、文字等区域;面对缺边缺角、光斑、形变、遮挡等异常图像情况可做出提示。

14.2.4  和OCR相关的深度学习技术

1. LSTM+CTC

长短期记忆网是一种特殊结构的RNN,用来解决RNN所依赖的长期依赖于输入信息的RNN。CTC(连接时间分类器)主要用来解决输入特征和输出标签的匹配问题。在进行分组识别时,可将相邻块识别为相同的结果,字符重复出现;利用CTC来解决对齐问题,训练后的结果中去除空隙字符,去除重复字符。

2. CRNN

CRNN(卷积循环神经网络)是目前比较流行的文字识别模型,它可以进行端到端的训练,无需对样本数据进行字符分割,可识别任意长度的文本序列,具有快速、高效的性能。文字识别运算流程如下:

(1)卷积层

用于从输入图像中提取特征序列,首先进行预处理,将所有输入图像缩放在同一高度,默认为32,宽度可任意长;然后执行卷积操作(由类似于VGG的卷积、最大池化和BN层组成);再从左到右提取序列特征,作为循环层的输入,每个特征向量都代表图像在一定宽度内的特征,默认为单个像素1(因为CRNN已将输入图像缩放同样高度,因此只需按一定的宽度提取特征)。

(2)循环层

用于预测从卷积层获得的特征序列的标签分布,由双向LSTM构成循环层,预测特征序列中各特征向量的标签分布。因为LSTM需要时间维度,序列的width在模型中被视为timesteps。用Map-to-Sequence层把误差从循环层反馈到卷积层,它是通过特征序列的转换把它们连接起来。

(3)转录层

通过去重、整合等操作,将从循环层获得的标签分布转换为最后的识别结果。转录层是对LSTM网络所预测的特征序列进行集成,并转化为最终输出结果。基于CRNN模型的双向LSTM网络层的最终连接,实现对终端的识别。

未完待续

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值