【2020华为云AI实战营】实战营第五章OCR扩展之拍照搜题

举报
woyuRT 发表于 2020/08/18 11:52:12 2020/08/18
【摘要】 学完AI实战营第五章后,我想到了前一段时间几个拍照搜题的软件挺流行(比如:小猿搜题、作业帮、学霸君等)。手机拍张照片,就能把考题的答案搜出来,完全不用去手敲。所以好奇这个拍照搜题技术,下文部分资料源于知乎参考:拍照搜题的技术点主要由图像识别和内容搜索组成,将拍照图像中的文字或者图形识别出来,再交给检索系统,对已有的题目进行快速的搜索,找出最相似的题目。整个过程大体分为两个阶段:第一阶段:1....

学完AI实战营第五章后,我想到了前一段时间几个拍照搜题的软件挺流行(比如:小猿搜题、作业帮、学霸君等)。

手机拍张照片,就能把考题的答案搜出来,完全不用去手敲。所以好奇这个拍照搜题技术,下文部分资料源于知乎参考:

拍照搜题的技术点主要由图像识别和内容搜索组成,将拍照图像中的文字或者图形识别出来,再交给检索系统,对已有的题目进行快速的搜索,找出最相似的题目。

整个过程大体分为两个阶段:
第一阶段:

1.图像的处理。就是将拍的照片进行清理,然后对图像中的字符进行切分,为字符的识别做准备。大概分成几个过程,分别是:
2.灰度处理:将彩色图片变成灰度图
3.二值化:将灰度图变成黑白图
4.去噪:消除黑白图上的噪点,让图看起来更干净
5.旋转:对图片进行顺时针和逆时针旋转,找到一个最佳水平位置
6.水平切割:对调整好水平位置的图片进行一行一行的切割
7.垂直切割:对一行一行的图片进行一列一列的切割,产出单个的字符。

第二阶段:

图像的识别。就是将上面的一个个单独字符的图片进行判别,看他到底是哪个字符。

这边主要讲OCR技术,所以我们从第6步和第7步开始~

第一阶段:

水平切割:沿着每一条水平线,把我们的文字用剪刀剪成一行一行的。这就是水平切割。

垂直切割:紧接上面,我们将得到的水平的切割行,进行垂直的切割处理。

那垂直切割和水平切割有什么不一样?

答:同一行的两个字符往往挨的比较紧,有些时候会出现垂直方向上的重叠,投影以后也不好切割,从而造成切割的时候出错。就是这一点,使得垂直切割比水平切割更难。

第二阶段:

拿到一个个字符的图案了,现在要做的,就是如何把这些图案转化成计算机可认知的二进制编码。因为这次只涉及到英文和标点,所以实际要做的,就是将图案转化为asc码。我们可以将多种字体的所有英文和标点生成标准图案,再将待识别的图案和他们进行比对,看这些待匹配的图案和哪个标准图案最像,那就能找出最有可能的asc码。下图为模板图案:简单介绍下步骤:

1.生成模板图案

我们用多种常见字体,将所有英文和标点生成标准图案。这里简称模板图案。为什么要多种字体呢?因为对于同一个字符,在不同字体下,可能长的完全不一样,比如同样是gal,不同字体效果如下:

拿到这些标准模板图案以后,我们就有了如下图的这些位图:

2.归一化——记录meta信息

将模板图案先去掉上下左右空白的背景,让前景图案顶格。接着再统一宽高,将图案压缩或拉伸为p*q大小的图案(比如都压缩或者拉伸到50像素*50像素),其实就是统一标准才有可比性。

3.模板图案和待匹配图案的匹配

接下来,用我们的匹配算法,对待匹配的图案和标准图案进行匹配了。图像的识别算法有很多很多,根据不同的应用场景,会有很多不同的选择,包括直接匹配的,也有通过数据挖掘来识别。每一种方法没有绝对的好坏,只有看是否更适合。


以上就是本片文章的全部分享,感谢阅读~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。