简单拍张照就自动算出答案,你猜这些“学渣救星”应用是怎么工作的?

把手机对着试卷拍一下,然后等几秒钟的时间,这道题的答案就出来了。在我上中学的时候,从来没想几年之后学生们竟然可以用上这等“神器”,但是现在这类产品却开始接二连三的出现。

如果你之前使用过PhotoMath或者小猿搜题这些产品的话,你会发现它们一个共同点就是用起来很简单,用户只要拍个照软件就能返回题目答案。但在这个简单的过程背后,你是否知道这其中的原理到底是怎样的?

如果从技术上来说的话,这类软件主要有两种方案:“以图搜图”和“OCR+文字搜索”。

a111

从上面的流程图中我们可以看到,以图搜图的方法就是把用户拍摄的图片和已有的图片题库做匹配。这和我们平常通过上传图片的方式在搜索引擎中找与之相似的图片其实非常类似。只是在图片匹配的过程中有“计算机视觉+机器学习”和“深度学习”这两种方式可选。

a222

和“以图搜图”的方法相比,“OCR+文字搜索”的方式就复杂一些。用户在拍照后,软件首选需要把其中的字符识别出来,然后在题库中进行搜索才能得出结果。和上面图片匹配过程类似的是,在文字识别的过程中也有两种技术方案可选:“传统OCR”和“深度学习”。

虽然这两个流程看上去很简洁易懂,但在背后计算机要做的事情远比这些复杂。像PingWest品玩之前介绍过的PhotoMath,每一个处理过程都要经过图像输入、预处理、校正、噪声去除等多个阶段。而小猿搜题一次正常的“做题”过程也至少要经过预处理、切分、识别、搜索和辅助策略5个步骤。

当软件接收到手机拍摄的图片之后,首先要做异常检测,比如图片是否模糊、是否需要旋转图像等等。经过这个过程之后,再进行“二值化”并对“字符及公式进行切分”。

a333

对字符和公式进行切分

经过“二值化”之后整个图像会呈现出明显的黑白效果,这样一来,图像就变得简单了,而且数据量也减小了,还能凸显出感兴趣的目标的轮廓。接着自然也就可以把单个字符切分出来了。

把字符切分出来之后,软件还是“认不出”这个字符是什么的,所以接下来还要“识别”这些字符。这时就需要光学字符识别技术(OCR)和深度学习技术上场了。

在“识别”这个过程中,PhotoMath主要使用了OCR技术,而小猿搜题则主要使用了深度学习技术。不过,由于这两种方法都不能保证100%识别正确,所以中间可能还需要插入一个纠错过程,像“1和l”、“好图所示和如图所示”、“入和人”这些形式非常相近的字符机器也很容易读错。这个时候利用语言模型进行纠错就显得比较有必要了。

由于PhotoMath的功能比较简单——只能做简单的数学计算,所以在完成了“识别”过程之后它就开始做题了。但由于小猿搜题要兼顾各种各样的学科,所以在做完“识别”之后,它还要去题库里搜索对应的题目。在这个过程中,计算机又要用到分词、排序等搜索过程中需要的技术。

所以你看,虽然这些做题软件可以在几秒钟之内给你返回一道题的答案,但中间的整个处理过程其实是相当麻烦的,用到的技术也非常广泛。另外一个需要说明的是,即便用到了如此多的先进技术,这些软件也不能保证给出一个100%正确的答案。

不过对于学生来说你也不用太担忧,因为目前深度学习的识别极限和人眼的极限是差不多的,而未来深度学习肯定会比人眼更厉害。这也就是说再过几年,现在的中学生们或许又会感慨:我当年上学的时候怎么没有这种神器。

图片来自:Shutterstock

订阅更多文章