小张在写期末课程小论文的时候,上网查资料发现一篇文章特别有参考价值,但是这篇文章无法复制,小张要怎么做才能获得这篇文章的电子版呢?
OCR是一个简称,全称叫Optical CharacterRecognition,中文是:光学字符识别。
它的本质是:把图像形状转变为文本字符。
下面说一下,我在教育行业是如何应用OCR的
信息化教学越来越普及,很多教学素材都要搬到信息化平台,比如试卷试题。那么,纸质的试卷要电子化,就会用到OCR识别技术

这么一张图,需要识别成结构化(图片、文字、公式、表格可独立提取出来)的数据,识别结果如下所示:

而且,识别结果还可以下载成word文档,便于老师校对并进行二次编辑.
除此之外,我们常见的各种证件识别、名片识别、车牌识别等,也涉及OCR技术。
OCR技术的实现,总体上可以分为五步:预处理图片、切割字符、识别字符、恢复版面、后处理文字。

我们买回来水果,需要洗一下再吃。如果运气不好的话,还需要挖掉虫眼和糙皮才能吃。我们把吃水果前的这些步骤,叫做CSG(吃水果)的预处理。
在进行OCR之前,也需要对图片进行预处理。因为,一般待识别的图片千奇百怪,来源复杂:有拍照、有扫描、有截图。
拿拍照来说,有夏至那天中午头儿,在阳光直射下拍的;也有人在傍晚,拿着大顶转着圈儿拍的。如果不进行预处理,OCR会很为难,因此需要进行灰度化,二值化,噪声去除,倾斜矫正等预处理过程。

假设,通过了预处理,我们的图片都变得很规范,于是,我们需要切割字符,把每一个字都给他挖出来。

并且,还需要对每个字符做好标记,因为识别完了,还得还原回去。识别完了,结果是一堆单蹦的“1”、“2”、“3”、“+”、“-”字符。我们需要根据它们的相对
位置,还原成“8-7=1”。所以,我们就知道了,哪个题目做对了,做错了,从而给出批改结果。
图片究竟是怎么变为字符的?它还能自己学习。计算机通过学习一些样本之后,遇到一些从未遇到过的同类样本,也能正确地识别出结果,原理如下:
我带着孩子去公园,公园门口有一对大狮子。孩子指着狮子说,狗!我说,哦,那不是狗,那是狮子,跟狗有点像是不是。又走了一段路,公园里又出现一个麒麟的雕塑。孩子指着它说,狮子!我说,那不是狮子。
孩子说,是狗。我说也不是狗,它叫:麒麟。我感觉到,孩子的大脑在反向矫正信息,这就是监督学习。
当我给他看狗的图片时,我告诉她这是狗。
她根据自己的认知,找了几个特征,构建了一个模型:长嘴+尖牙=狗。
虽然只是看过图片,但是出门遇到真狗,她根据这个模型也认识对了。
后来,她遇到了狮子,她修改了模型:长嘴+尖牙+鬃毛≠狗=狮子。
后来,又遇到了麒麟,这个公式变得越来越复杂……决策项越来越多。
人工智能,就是模拟的人类的神经元,构建神经网络来尝试寻找特征和结果的关系。如果对了,就给这个特征加分。如果,错了,就给这个特征减分。
识别数字,也是一样。
比如在学习识别数字6的时候,它随机认为只要有一个圈圈特征,就是数字6。
验证其他样本时,发现这个随机特征是对的(不对就再换一个特征再试)。于是,它建立了一个模型:只要有圈这个特征,就是6。
后来,这个模型遇到了数字0。加入新样本后,人工智能发现,0也有圈,但它不是6,也有可能是0。得再找一个特征,于是,新增一条,有勾就是6。后来,它又遇到了9。那勾在上面的就是6。后来,它又遇到了字
母b……反正计算机有的是算力,能在很短的时间内完成这些学习。上面我是搂着说的,其实即便在32*32像素的小图片上,它随机上几十个特征去做验证,一点都不吃力。
这就是识别字符的原理。OCR字符的识别从来不难。难的是两头,比如开头的预处理,以及下面要说的后处理。
识别出了字符,意义不大,有效地连接起来才能发挥作用。
我们期望的拆分和还原应该是下面这样:

“10+2= 4-3= 5+6=11”这些文本从数据结构上应该是一行。而且,“10+2=”从数据结构上是一个基本单位。因为,我们要对基本单位做运算和批改。这才叫还原,其实并不简单。
5.后处理文字
OCR识别的最终目的,是要获得一份准确的、结构化的文本内容。
单个字符识别,其实是各自为战,前后不商量。
就比如,遇到一个圆圈形状的字符图片。OCR识别就犯了难,它是数字“0”?汉字“〇”?大写字母“O”?小写字母“o”?中文句号“。”?还是“Q”忘了加尾巴……
啥都对,啥都不对。
所以,需要矫正……校正。这两个词,都是高频词,尤其拼音打字jiaozheng,容易出错。其实,也好分辨。看语境,如果我前后提到了“文稿”,那么是“校正”的可能性就大。如果我刚刚说了“牙齿”、“视力”、“角度”啥的,那么基本上就应该是“矫正”了。
OCR识别的最后一步校正也是一样。如果无法确定是数字“0”还是字母“o”,可以观察它相邻的几个字符,下面一图胜千言
