如何构建识别图像中字符的自动程序?一文解读OCR与HTR

在机器学习和计算机视觉领域,光学字符识别(ocr)和手写文本识别(htr)长期以来都是人们研究的重要主题。本文将帮助计算机视觉爱好者大致了解如何对文档图像中的文本进行识别。 大数据分析工具可以对非常庞大的一些数据流进行处理,还可以运用在hadoop批量数据的处理。
光学字符识别和手写文本识别是人工智能领域里非常经典的问题。ocr 很简单,就是将文档照片或场景照片转换为机器编码的文本;而 htr 就是对手写文本进行同样的操作。作者在文章中将这个问题分解成了一组更小型的问题,并制作了如下的流程图。
图 1.1:应用流程图
按文档边框裁剪图像
在图像处理中,通常需要对图像进行预先编辑,以便获得更好的表征。裁剪是图像编辑中最常用的操作之一,这可以移除图像中不需要的部分,也可以向图像添加所需的特征。
你可以使用 opencv 来轻松地找到图像中文档的边缘,查找图像中文档边缘的最佳方法是使用阈值图像。opencv 提供了不同的阈值样式,这是由其函数的第 4 个参数决定的。在这个函数中,第一个参数是源图像,这应该是一张灰度图像;第二个参数是用于分类像素值的阈值;第三个参数是 maxval,这是当像素值超过(有时是低于)阈值时所要给出的值。
下面的代码将能帮助你找到阈值图像,然后确定文档边缘的轮廓,你可以将这些轮廓点与图像边缘进行比较,然后确定文档的边缘。
检测和裁剪分割文档中的所有词
在有约束的受控环境中进行词检测通常可以使用启发式方法实现,比如利用梯度信息或者这样的事实:文本通常会被分组成段落以及排列成直线的字符。但是,使用启发式方法是存在缺陷的,图像中很多不需要的区域也会被检测为词,所以我们可以使用 opencv 的 east(efficient and accurate scene text)检测器。
可以参考 adrian rosebrock 写的 east 检测器