从技术上来说,这类软件主要有两种方案:“以图搜图”和“OCR+文字搜索”
①以图搜图的方法就是把用户拍摄的图片和已有的图片题库做匹配。这和我们平常通过上传图片的方式在搜索引擎中找与之相似的图片其实非常相似。只是在图片匹配的过程中有“计算机视觉+机器学习”和“深度学习”这两种方式可选。
②和以图搜图的方法相比,“OCR+文字搜索”的方式就复杂一些。用户在拍照后,软件首选需要把其中的字符识别出来,然后在题库中进行检索才能得出结果。和上面图片匹配过程类似的是,在文字识别的过程中也有两种技术方案可选:“传统OCR”和“深度学习”。
虽然这两个流程看上去简洁易懂,但在背后计算机要做的事情远比这些复杂。像PhotoMath,每一个处理过程都要经过图像输入、预处理、校正、噪声去除等多个阶段。而小猿搜题一次正常的“做题”过程也至少要经过预处理、切分、识别、搜索和辅助策略5个步骤。
当软件接受到手机拍摄的图片之后,首先要做异常检测,比如图片是否模糊、是否需要旋转图像等等。经过这个过程之后,再进行二值化,并对字符及公司进行切分。
经过二值化之后,整个图像会呈现出明显的黑白效果,这样一来,图像就变得简单了,而且数据量也减小了,还能凸显出感兴趣的目标的轮廓。接着自然也就可以把单个字符切分出来了。
把字符切分出来之后,软件还是“认不出”这个字符是什么的,所以接下来还要识别这些字符。这时就需要光学字符识别技术(OCR)和深度学习技术上场了。
在识别这个过程中,PhotoMath主要使用了OCR技术,而小猿搜题则主要使用了深度学习技术。不过,由于这两种方法都不能保证100%识别正确,所以中间可能还需要插入一个纠错过程,像“1和l”、“好图所示和如图所示”、“入和人”这些形式非常相近的字符机器也很容易读错。这时候利用语言模型进行纠错就显得比较有必要了。
在做完识别之后,它还要去题库里搜索对应的题目。在这个过程中,计算机又要用到分词、排序等搜索过程中需要用到的技术。
OCR(Optical Character Recognition,光学字符识别),自动研究光学设备产生的图片检查纸上的字符,通过检测暗、亮的模式确定其形状,实现计算机对文字的阅读。