【2020华为云AI实战营】实战营第五章OCR扩展之拍照搜题
学完AI实战营第五章后,我想到了前一段时间几个拍照搜题的软件挺流行(比如:小猿搜题、作业帮、学霸君等)。
手机拍张照片,就能把考题的答案搜出来,完全不用去手敲。所以好奇这个拍照搜题技术,下文部分资料源于知乎参考:
拍照搜题的技术点主要由图像识别和内容搜索组成,将拍照图像中的文字或者图形识别出来,再交给检索系统,对已有的题目进行快速的搜索,找出最相似的题目。
整个过程大体分为两个阶段:
第一阶段:
1.图像的处理。就是将拍的照片进行清理,然后对图像中的字符进行切分,为字符的识别做准备。大概分成几个过程,分别是:
2.灰度处理:将彩色图片变成灰度图
3.二值化:将灰度图变成黑白图
4.去噪:消除黑白图上的噪点,让图看起来更干净
5.旋转:对图片进行顺时针和逆时针旋转,找到一个最佳水平位置
6.水平切割:对调整好水平位置的图片进行一行一行的切割
7.垂直切割:对一行一行的图片进行一列一列的切割,产出单个的字符。
第二阶段:
图像的识别。就是将上面的一个个单独字符的图片进行判别,看他到底是哪个字符。
这边主要讲OCR技术,所以我们从第6步和第7步开始~
第一阶段:
水平切割:沿着每一条水平线,把我们的文字用剪刀剪成一行一行的。这就是水平切割。
垂直切割:紧接上面,我们将得到的水平的切割行,进行垂直的切割处理。
那垂直切割和水平切割有什么不一样?
答:同一行的两个字符往往挨的比较紧,有些时候会出现垂直方向上的重叠,投影以后也不好切割,从而造成切割的时候出错。就是这一点,使得垂直切割比水平切割更难。
第二阶段:
拿到一个个字符的图案了,现在要做的,就是如何把这些图案转化成计算机可认知的二进制编码。因为这次只涉及到英文和标点,所以实际要做的,就是将图案转化为asc码。我们可以将多种字体的所有英文和标点生成标准图案,再将待识别的图案和他们进行比对,看这些待匹配的图案和哪个标准图案最像,那就能找出最有可能的asc码。下图为模板图案:简单介绍下步骤:
1.生成模板图案
我们用多种常见字体,将所有英文和标点生成标准图案。这里简称模板图案。为什么要多种字体呢?因为对于同一个字符,在不同字体下,可能长的完全不一样,比如同样是gal,不同字体效果如下:
拿到这些标准模板图案以后,我们就有了如下图的这些位图:
2.归一化——记录meta信息
将模板图案先去掉上下左右空白的背景,让前景图案顶格。接着再统一宽高,将图案压缩或拉伸为p*q大小的图案(比如都压缩或者拉伸到50像素*50像素),其实就是统一标准才有可比性。
3.模板图案和待匹配图案的匹配
接下来,用我们的匹配算法,对待匹配的图案和标准图案进行匹配了。图像的识别算法有很多很多,根据不同的应用场景,会有很多不同的选择,包括直接匹配的,也有通过数据挖掘来识别。每一种方法没有绝对的好坏,只有看是否更适合。
以上就是本片文章的全部分享,感谢阅读~
- 点赞
- 收藏
- 关注作者
评论(0)