首页
港粤资本
投研信息
项目介绍
港粤活动
联系我们
加入港粤

港粤观察 | 光学字符识别(OCR)在教育领域的应用及其技术原理

2019-05-12

  无“師”胜有师

港粤资本

专注科技教育的中早期投资

旗下直投基金、跟投基金、产投基金

布局结合新技术、新模式下的创新性项目

致力于培育符合未来教育方向的创新公司

成为行业领军者

极速BP通道:bp@ifsc-gd.com

全文字数: 6418

阅读时间:20分钟

本文作者:港粤资本—-袁凌

摘要:

本文首先介绍了OCR在教育领域的几种典型应用方式,如拍照扫题、自动阅卷等,进而以其中一种应用方式为例展开,详细阐述了图像识别过程几个阶段的技术原理,随之继续深入分析了各种主流图像识别方法,包括传统方法以及基于深度学习的方法等,最后给出总结。通过阅读本文,读者能够对OCR在教育领域的应用及其技术原理建立起一个较为详尽的全面理解。

OCR(Optical Character Recognition)即光学字符识别,指通过检测图像中的视觉特征,如暗、亮、形状等,将图像内容识别出来的技术。OCR从最早出现至今已有多年。OCR在教育领域有着广泛的应用,其中不少目前已经较为普及化了。

OCR在教育领域的应用场景

1、 扫描并识别文字或字符,如拍照搜题。

这个应该很多朋友都有所了解了。学生做题时碰到不会的题时,可以对题目拍照并上传,软件后台会对题目进行识别,在云端数据库中进行比对,找到匹配题目,反馈答案及解析。

当然,题库要足够大。这种应用对学生和家长带来了很大的帮助,大幅提升了便利度和学习效率。在识别效果的提供此功能的主要产品有猿题库、学霸君、作业帮等。

2、自动阅卷或自动作业批改。

传统阅卷或批改作业需要老师人力完成,比较耗时耗力。尤其是大量试卷的批阅,对人力的消耗非常大。自动批阅可以大量节省人力成本,且效率可以大大提高。其实现过程可以是试卷的批量扫描或学生将作业拍照上传。

因为是整个试卷或一组试题,为了提高识别准确率,可以通过预先标准化纸质试卷和试题来提高识别精准性,一般情况下,需要按标准模板格式来设计试卷。这种模式本质上是过去的答题卡的升级应用,当前主要引用为客观题居多。目前科大讯飞在这一块有很多落地产品。

3、 纸质文档转化电子文档。

在学习中若对课本及纸质书籍内的内容觉得重要,可以对其拍照,通过图像识别,照片内容可以被转化为word格式的文档,使得之后的再编辑成为可能。同理,也可以直接转化图片格式的文档。该转化过程也可以批量化。

除了上述这些应用场景之外,我们还可以在身边经常看到各种各样其他应用场景。以下以拍照搜题为例,我们将讲解各种主流OCR方法的技术步骤和原理。

图像识别的技术原理

这部分将是本文重点讲述的内容。

一般来讲,图像识别过程需要三个基本阶段:

1、图像预处理 ;2、字符提取;3、字符识别。

01

图像预处理

我们手机拍的照片通常都会有各种各样的问题,比如因为光线不足、镜头不好、对焦不好、拍摄角度等原因使得所获取图像质量参差不齐,因此识别能力受限,要对图片进行预处理,使图像能够符合识别所需标准。

图像预处理具体方法

灰度处理:去颜色信息

对于识别字符而言,颜色信息是无用信息。因为无论字符是什么颜色,字本身都是一样的。所以为了简化信息,我们要把颜色去掉。

几何校正:纠正变形图片

通常拍摄的图片都不是绝对的水平,这会影响到后续环节对图像的分割,调整图片位置及形变,使之达到较佳的正视和水平状态。

二值化:处理成黑白图片

我们要将目标字符与背景及其它杂物进行区分。由于目标字符的灰度会与其它背景有差异,可以通过对灰度设定一个阈值,大于此值为目标字符,低于此值为其它物体及背景,这样就可以分开了。

而且,灰度也是无用信息。我们并不需要渐变的灰度数值,我们只需要有字的地方是黑色,没字的地方是白色,这就可以了。通过二值化,图像可以在保留有用信息的基础上,数据量大大减少。

去噪声:去掉图片的干扰杂项(noise)

因为图片本身在拍摄及获取过程中的质量问题无法保证,其图像会含有各种各样杂七杂八的无用信息,比如纸面上的杂点,痕迹,图像噪点等等,需要将其去掉或降低。根据噪声类别的不同,滤除噪声的方法也有很多种,效果各不相同。

降噪的过程会损失图像细节,因此要选择合适的降噪方法,并根据图像情况对其进行不断优化。总的来说,这些算法都是通过利用图像本身的某些性质或属性来将噪声与有用信息进行分离,常用的方法比如各种滤波器等。

02

字符提取

图片初始化完毕,接下来就要切割划分出字符块。这里有各种各样的方法,我们在这里讲述常用的典型切割方法:使用联通域及投影等方法将图片根据文字进行横向切割、垂直切割,形成字符块。

比如横向行切割:书籍的字迹一般是以一行一行的形式来排布的,每一行之间有一个行距,在这个行距范围内没有文字,行与行之间以一定宽度的空白来隔开。

也就是说,文字行的地方是有信息的,而留白的地方是没信息的。我们如果把这些文字信息向Y轴上进行投影,那么写有字的位置信息将会累加,得到较大的数值,而空白处因为没有信息,其投影后数值为零。

因此我们就可以得到一组类似与锯齿状的离散数值,清晰的告诉我们横向来看哪里是有文字的,哪里是留白。这样我们就可以将文本行清晰的隔开。

再比如垂直向的列切割:横切完了我们可以继续进行纵切,从而进一步将单个字符隔开。其原理同横切十分相似,也是通过投影叠加后根据数值进行切分,只不过这次是投影到X轴。

因为字与字之间的横向间距较小,没有行距那么大,因此整体的难度会更大,容易切割出错。比如有的字是左边一个偏旁,右边一些笔画,左右两边之间不相连且有一定空隙。当字与字间间隙较小并与此空隙宽度接近时,可能发生误切割,将该字切成两半。

因此我们可以使用一些手段尝试进一步将其精准化,比如汉字的平均宽度一般是差不多的,我们可以预设一个宽度值。如果把一个字切成两半,那么左右两边的宽度值都会很小,从而不符合预设宽度,因此不会造成误识别。

03

字符识别

当字符图像切好之后,我们可以进行识别。识别有很多方法,是本文介绍的重点。这里主要介绍三种方法:传统方法、HOG+SVM方法、CNN方法

传统方法

为了能够识别字符,我们必须预先拥有一系列的字符模板,也就是先要有标准答案,知道什么图形对应的是什么字,然后将我们上面切割出来的字符通过一些算法与模板进行比对,确认是否是其中的某个字,如果与其中某个相符度甚高且明显高于其他字,那么就将这个字符识别为该字。

因此,我们的模板库要够大够全,比如要涵盖全部的汉字和各种不同的字体。而且,这些模板也需要进行二值化,保留最核心的信息。

在进行识别之前,可以先将字符进行归一化。简单地说,就是我们把字符图片统一调整宽高,让所有的字符使用统一标准,同时与模板一致,以便后续比对。

在此之上,我们还可以记录一些原始信息,比如原始宽高及其他信息,在某些错判的情况下,可根据这些信息加以进一步区分。

接下来要做的是和字符模板的匹配。典型的经典算法如字符像素匹配。这个方法非常直观,就是将待识别的字符与模板字符进行像素级比对。

模板和待识别字符都是0/1位图,大小一致,直接将两者比较,看看每个像素是否一样,一样就计一个数,最后将所有的数进行累加求和,再除以字符的总像素值,看看一致的比例有多少。

比如说算出来是90%,那么就说该待识别字符和该模板字符相似度达到90%。接下来我们再将待识别字符与模板库中其他的字符进行比对,选择其中最高的作为最优答案。

这种方法理解起来特别简单,但对图像质量要求高。要求待识别图像和模板匹配度很高。若是图像源较好,且预处理较好,匹配结果还可以。但是一旦图像源差点,效果就差很多,鲁棒性差

在此算法基础上,发展出了一系列各种各样的算法,比如投影区块匹配,将像素向横纵两个轴向投影求和,再通过一些类似求平均的比对计算求得结果。

这种方式因为有了类似平均的计算,其敏感性就要小一些,但是准确度也要弱点。除此之外,还有诸如将字符图像先行切块之后在比对等等方法。

总体来看,这一类算法普遍限制较多,精准度较低。比如,切分、二值化、人工特征等多个步骤的误差累加导致整体误差相对高。

HOG+ SVM方法

接下来要谈的,是之前较长时间内主流的机器学习方法。典型如方向梯度直方图(HOG)+ 支持向量机(SVM)。该方法能达到比上面的方法好得多的效果,得到普遍采用。这种方法相对来说要复杂很多,这里我尝试简单描述其原理:

方向梯度直方图(HOG):

其目的是获取图像内的轮廓特征,并将其用后续识别算法能理解的方式表示出来,给到后续识别模型。这个特征我们用向量来表示。

轮廓我们用梯度计算来寻找。梯度是一个向量。若将图像看做一个离散函数,梯度可视为对其求导,因此可以表征图像的变化值。

比如,图像某个位置有比较大的图像变化,那么变化的边缘处会有比较大的梯度值,而变化缓慢处的梯度值就较小。因此,梯度可以用来表征图像中的形态轮廓。

HOG的基本逻辑是,首先,将图像归一化,计算图像各像素点的梯度。然后将图像划分成多个小块(cell),对每个cell按梯度方向划分为多个角度,将cell中的像素的梯度值在其梯度方向上进行投影累加,获得该cell的梯度直方图,进而得到该cell的HOG特征向量

接下来,可将几个cell组成一个大一点的块,称为block。将block中各cell的特征向量串联在一起,构成block的特征向量。将block对整个图像进行滑动遍历,可以得到整个图像其它部分的特征向量。

将这些特征向量都串在一起,得到一个最终的整个图像的特征向量,也就是将特征表示为一串数。到此为止,我们已经拥有了图像的特征描述,接下来就是对其进行识别。

支持向量机(SVM):

所谓识别,其实就是分类。比如我们的库里有6000个汉字,每个字作为一个类别,我们要识别该图像是其中哪个字,就是将其识别为该类别。SVM就是一个分类器,是主流监督学习算法的一种。

其原理比较复杂,简单描述如下:

SVM是做二分类,也就是区别两组数据。换言之,就是如果有两个备选字的话,svm可以告诉我们待识别的字符是其中哪个字。

比如,这两组数据分布在一个XY平面上,因为两组数各有不同规律,这两组数在平面上会呈现出内部各数之间相隔较近,而和另一组数相隔较远。那么我们就想在两组数之间画出一个空间将两者分隔开,这样就可以分开两者了。

打个比方,有两片树林,一边是桃树,一边是李树,我们想在中间将两者隔开,隔得越宽越好。我们首先要找到一条中间线,这条线是最好的分隔线。然后尝试将这条线扩宽,拓宽成一条路,在保证路的边缘尽量不要碰到树林的前提下,尽可能将路拓宽

如果路的边沿超过了树林,就可能无法准确分开两边,因此路的边沿就由离路最近的那些树来限定。我们能够在两片树林间划出不同方向的很多条路都可以将两边隔开,这个路就称为决策面,路的边沿是决策面的极限位置。我们希望找出其中最宽的那条路,这条路能够最好的分开两边树林。

也就是说,我们想找出最优的那个方向,使得我们在这个方向可以构造一条路,并且能将这个路建到最宽,可以最好地将两片树林隔开。找到能达到最大分类间隔的那个决策面,这就是SVM要做的事情。而这个面的边沿上的样本,也就是最靠路边的树,就是支持向量,因此叫做支持向量机。

前期,我们会使用大量数据去训练这个SVM模型,让它去做分类,根据分类结果告诉它是对还是错,让它不断训练,直到最后能够做出比较准确的分类,然后拿去用测试数据进行测试,如果测试ok,我们就说这个模型可以用了。

我们只要把待识别图像的HOG的特征向量导入该SVM模型,让SVM去做分类,告诉我们这个字符是哪个字,就ok了。当然,svm只能做二分类,我们可以让一个字作为一类,其它所有字作为另一类,使用一个分类器,

然后同理再将其它每个字都使用不同的分类器,最后将所有分类器的结果做一个组合,便可得到最终结果,大功告成。

这种方法识别效果不错,长期作为OCR主流算法而存在。

CNN方法

最后,我们来看看利用深度神经网络来做文字图像识别。这也是相对非常复杂的技术。

深度神经网络有很多种,图像方面的识别主要使用的是卷积神经网络(CNN)。相比标准神经网络(DNN),卷积神经网络对图像的处理效率更高。

原因在于,一般图像的像素数都很大,以像素来描述的特征其维度就会很高, 如果使用标准神经网络的话,会让网络体积过于庞大,计算量过大。而卷积神经网络可以很好的解决这个问题。

CNN的基本原理:

我们把图像视为一个二维矩阵,同时,构造一个过滤器(又称为核,一个小型矩阵),用这个过滤器和图像矩阵做卷积计算,可获得一个尺寸减小的新矩阵。

这里所谓的卷积计算,就是把过滤器矩阵与图像中对应大小的矩阵进行元素相乘并加总,再遍历整个图像矩阵,获得新矩阵的过程。卷积不仅仅能够将矩阵简化,通过合理构造过滤器中的数值,卷积计算还可以将图像中的轮廓检测出来。

有轮廓的地方,其数值变化会比较大,通过卷积计算后,这些位置的变化值会被凸显表示出来。

因此,卷积计算能够用来检测形状。在CNN模型的训练中,反向传播可以使得过滤器中的值逐渐被确定在最优水平,使其成为一个很好的轮廓检测器。这么讲可能会让有的同学感到费解,可以尝试这么理解:用一个长得比较方形的贪食蛇将图像的每个位置都跑一遍,贪食蛇就可以对它走过的这些位置做一个计算,辨认出其中哪些地方是有轮廓的。

为了检测多个图像的特征,比如我们不仅要检测横向的轮廓,还要检测纵向的轮廓,我们可以使用多个过滤器,每个过滤器用以检测一个特征。

这样,我们求得的新矩阵就会是一个多通道的,每个通道用以记录一个新特征。然后,我们可以将这个新矩阵又再与新的过滤器进行第二次卷积计算,可以又得到下一层的多通道新矩阵,这个矩阵尺寸更小,但通道数可能更多。

通过重复这个步骤,在多层之后,我们将得到一个尺寸较小,但却用多通道记录了多个特征的矩阵(其实已经不能再叫矩阵了,应该叫一个volume)。这时我们可以再将这个最后的volume送进一系列类似标准神经网络全连接层,得到图像的最终特征向量

将这个特征向量送入分类器如softmax分类器,便可得到最终识别结果。这个过程,我们也可将其通俗理解为,我们使用了多条贪食蛇反复跑了图像n次,每条蛇每跑满一次整个图像可以得到一个特征,所有的蛇多次跑下来,我们就可以得到描述这个图像的多个特征了,在通过分类器分类,我们便能识别字体图像。

上面所述是CNN的基本工作形态,已涵盖CNN的主要基本原理。实际上其中还有很多没讲到的点,比如池化层以及步长、填充等概念,这里就不再细讲。

经典的CNN架构有AlexNet、VGG、GoogleNet等等。这些架构实际上就是上面说的基本结构的各种组合和变形。实际使用中,CNN可以是各种各样的架构,比如可以是在这些常用经典架构基础上的延展和变体,以实际效果而定。

在实践中,有时也会将CNN与SVM进行结合,比如用CNN得到最终图像特征向量之后,不用softmax,而使用SVM来进行分类,因此也可以利用到SVM的一些优点,理论上也能获得不错或可能更好的识别结果。

总结

目前,以CNN来对图像进行识别越来越受欢迎。主要原因在于,在足够算力和数据的前提下,利用深度神经网络可以达到比HOG+SVM更加精准的识别结果。其实神经网络也是传统机器学习算法的一种,也主要做分类应用。

但是随着算力算法的不断发展,神经网络层数逐渐能达到很深,因此被称为深度神经网络,也就是常说的深度学习。深度神经网络最大的优势是,当数据越来越海量的情况下,其它算法的精度一般没有明显提高,但深度神经网络的精准度能够不断提升,超越其它算法。

深度神经网络和支持向量机一样,需要在使用前先训练好。另外,理论上在数据足够多足够好,算力也足够的情况下,深度学习可以直接很好的完成端到端的任务,不需要再涉及任何其它中间另外设计的计算方法和过程。

即使不能完全端到端,也可以减少很多中间过程。比如,文字的切割和提取过程可以尝试用循环神经网络(RNN)来直接完成,效率更高,效果更佳。由于能力强且泛化性好,深度神经网络得以在各个领域得到广泛使用。

至此,我们已了解了当前主流的各种图像识别算法。通过这些方法将字符图像识别出来后,后续在通过NLP模块进行一定语意理解,去库里寻找答案,便可完成拍照搜题的整个过程。

当然,这里介绍的算法不仅可以用在拍照搜题当中,也可以用到各种其他类似领域,比如车牌识别,以及行人检测等各种图像识别场景。

图像识别算法时至今日,比过去已有了长足进步,大量的各种商用已充分证明了其价值。当然,技术本身还有很多需要继续提高的,比如对大篇幅手写汉字的识别精准度还有待进一步提高。这里最核心的原因在于手写文本训练数据的不足

而数据不足的原因一是由于没有任何两个人的字体是完全一样,手写体呈现出千差万别的形态;二是本身汉字的复杂度就比较高,多字组合后复杂度更高得多。

 

因此样本特征的学习和训练难度就增加不少,对训练数据的要求也就增加很多。目前研究人员主要尝试人工生成大量伪样本用以扩充数据,以及与传统模式进行结合,如构造人工特征等,同时继续不断改进算法。

 

当这一领域发展到识别精度足够高时,新的toC强市场需求痛点又将会被开启,就像当年拍照搜题一样,新的巨大市场机会又将会出现。

本文部分图片摘自网络,如有侵权,请联系删除。

往期精彩回顾:

港粤观察 | 互联网下新型的职业教育分析

港粤观察 | 大数据精准营销缘起何处?

港粤观察 | 实现精准营销的底层技术是什么?

港粤资本成立于2014年,是一家专注科技教育领域中早期项目的投资机构。公司于2015年开始布局STEAM教育赛道,成功投资搭搭乐乐、麦高创想家、盛思科教等创客教育项目,也成功投资阳阳魔法学院、AI音乐学院、凯瑞宝贝等线上线下教育项目。投资项目中已有多个实现退出,并取得可观的投资回报。目前重点关注新技术、尤其人工智能在教育领域的应用项目。如果您是教育领域或新技术的优秀创业团队,欢迎联系我们港粤资本的投资经理,期待合作,共同成长。

袁凌   投资总监

北京大学MBA,

纽约城市大学巴鲁克学院金融学硕士。

7年产业经验以及5年股权投资经验,

曾任职环球数码、数虎图像,对人工智能、图像识别、AR/VR等技术在产业端的应用,有深入理解和研究

微信号:flysky11alex

港粤资本

无“師”胜有师

 

本篇文章来源于微信公众号:%港粤资本%

相关推荐

新冠病毒真的会通过气溶胶传播吗?
2020-02-09
医疗器械行业分析 3:高值耗材
2020-06-03
港粤观察丨医疗职业教育赛道浅析
2019-04-02

深圳市福田保税区桃花路1号创业中心3B1-06

网站备案号:粤ICP备18126401号-1

返回顶部