拍照怎么搜题?(上)

/*
 * 写在前面的两句话:
 * 1、老王写完上一篇《HTTPS到底是个啥玩意儿?》以后,就想再顺势写几篇技术干货,于是乎有了接下来这一篇文章。
 * 2、大家如果想看上一篇,以及未来的n篇,可以关注微信: simplemain
 */

前一段时间几个拍照搜题的软件挺流行(比如:小猿搜题、作业帮、学霸君等),手机拍张照片,就能把考题的答案搜出来,完全不用去百度手敲。这可乐坏了莘莘学子们,不过不知道父母是什么感受。

出于程序员那种职业的好奇心,同时也去评估一下做这个事情的难度和成本,老王用了两周的时间做了一个简单的研究并写了一个demo程序,这里分享给大家(注:由于研究时间不长,如有不正确的地方请专家们指正~)

拍照搜题的技术点主要由图像识别和内容搜索组成,将拍照图像中的文字或者图形识别出来,再交给检索系统,对已有的题目进行快速的搜索,找出最相似的题目。由于之前对搜索技术有过一定的了解(毕竟在狼厂干过几年,耳濡目染^_^),所以这次主要聚焦到图像文本的识别上。同时,只是调研性质,所以为了降低难度,我这次只做了英语的识别。

先给大家看看最后的效果。以下是随便用手机拍的一段英文文章:

最后识别出来以后,没有做任何的单词校正工作,效果如下:
=======================================
Three months after [he government stopped issulng (&%) or renewing permits for In[ernet cafes because of security (%#) concerns, some cafe owners are having flnanclal (ff%%) concerns of their own.
=======================================

后来,我的同事tt和yx可怜我,帮我做了两个相关的单词匹配算法,对单词做校正,使得一些识别的不准的单词得到校正,比如:issulng -> issuing。

好了,开始正题吧~



==== 处理流程 ====


整个过程大体分为两个阶段:
1、图像的处理。就是将我们拍的照片进行清理(有点类似于洗衣服),然后对图像中的字符进行切分,为字符的识别做准备。大概分成几个过程,分别是:
a、灰度处理:将彩色图片变成灰度图
b、二值化:将灰度图变成黑白图
c、去噪:消除黑白图上的噪点,让图看起来更干净
d、旋转:对图片进行顺时针和逆时针旋转,找到一个最佳水平位置
e、水平切割:对调整好水平位置的图片进行一行一行的切割
f、垂直切割:对一行一行的图片进行一列一列的切割,产出单个的字符。

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

你是不是感觉有点晕了呢?不错,是我我也晕了,哈哈哈~
还记得我们的理念嘛?把复杂的问题,简单的讲清楚!
来吧,老王不会干巴巴的讲那些无聊的理论,看看实际怎么处理的吧。


==== 图像的处理 ====


第一步,我们拍照得到原图。

肉眼看,你觉得这个图是不是黑白的?
回答“是”的同学,我负责任的告诉你,你的眼睛欺骗了你。可以用图像处理软件看看每一个像素,他们其实是彩色!!!
彩色有什么问题么?对于人眼来说,当然没有。不过对于我们的程序来说,就是有问题的。他不知道哪个颜色是有效信息。所以,我们接下来的工作,就是对信息进行降维,将RGB(红绿蓝)的256*256*256种色值降维到2种,即:白+黑。这样,我们的程序就能很轻松的判断信息的有效性了。
好了,要实现白+黑,还得分两步走ÿ

  • 20
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值