图像中检测文本的算法

37

我有一个新任务,需要找到一种方法来检测图像上的文本。该图像是地图——例如谷歌地图。任务是检测街道/城市标签的位置。

我知道opencv库有算法可以检测特征(例如人脸)——haar分类器或hog(方向梯度直方图),但我听说这些算法的学习过程相当困难。

你知道是否有任何算法、方法或库可以做到这一点(检测图像上的文本)吗?

谢谢, 约翰

3个回答

21

在视觉领域中存在一个标准问题,称为图像中的文本检测。它与OCR非常不同。 OCR关注的是它说了什么,而文本检测则是确定图像中是否有文本。 Adi Shavit的第三个链接是解决这个问题的方法。您可以在Google学术中查找文本检测的文章。


16

Ocropus能够将找到的文字转换为实际文本,但并不能帮助首先找到这些文字。简单的模板匹配加上一个限制条件,要求至少有两个字符在水平线上靠近彼此,对于谷歌地图案例非常有效。 - jilles de wit
2
Epshtein等人的论文(笔画宽度变换)已被Saurav&Andrew实现并分享。 - Kaushik Acharya
1
这是一个使用Python OpenCV包装器实现的示例Python代码 https://github.com/opencv/opencv_contrib/blob/master/modules/text/samples/textdetection.py - parsethis

0

你需要将其调整为特定类型的地图图像,否则问题会非常困难(请参阅有关文章链接的先前帖子)。

OCR 是解决问题的方法,你应该使用现有的库。然而,OCR 主要是针对白色背景上的文本进行的。为了将你的问题简化为常规 OCR 问题,你应该尝试处理地图的颜色空间。很可能地图文本具有非常特定的颜色,这可能足以找到这些像素。然后,你可以根据连接区域的大小过滤检测到的像素。

如果你只想找到文本标签的位置,可以执行上述操作,基本上跳过 OCR 步骤。如果标签不太接近,可以使用简单的聚类算法来找到它们各自的位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接