如何识别图像中的字母? (OCR 之前)

问题描述 投票:0回答:2

我在网上能找到的都是关于 OCR 的,但我还没有做到这一点,我仍然需要识别字母在图像中的位置。

image-processing computer-vision ocr
2个回答
8
投票

有趣的是,答案并不像看起来那么简单。有些人可能认为定位图片上的字符是 OCR 的第一步,但事实并非如此。事实上,在你真正完成识别之前,你不会确定每个字符的位置。

它的工作方式完全取决于您要识别的图像类型。首先,您应该在文本区域(块)和其他所有区域上分割图像。

仅举几个例子:

  • 如果您要识别汽车图片上的车牌,您应该先找到车牌,然后才将其拆分为单独的字符。
  • 如果您正在识别某些申请表,您只需了解其布局即可找到文本所在的区域
  • 如果您要识别书页的扫描件,则必须区分图片和文本区域,然后仅处理文本。

从这一刻开始,您不再需要原始图像,您需要的只是文本块的二值化图像。所有 OCR 算法都适用于二进制图像。您可能还需要进行其他类型的图像转换,例如直线矫直、透视校正、倾斜校正等 - 所有这些又取决于您正在识别的图像类型。

找到文本块并对其进行规范化后,您应该进一步查找文本块上的文本行。在文本水平线的简单情况下,通过水平线创建像素直方图非常简单。

现在,当你有了台词时,你可能会认为现在很简单了,你可以把它拆分成字符,呵呵!再说一次,这是错误的。存在诸如连接字符、断开字符甚至连字(两个字母形成一个形状)或字母的部分进一步移至下一个字符的右上方或下方等现象。您应该做的是创建几个将线条分割为单词和单个字符的假设,然后尝试 OCR 每个变体,用置信度衡量每个假设。最后一步是使用字典检查该图中的不同路径并选择最佳路径。

直到现在,当你真正认识到一切时,你才能说出各个字符的位置。

所以,简单的答案是:使用 OCR 程序识别您的图像,并从其输出中获取字符坐标。


0
投票

一般来说,您会寻找接近纯色的小连续区域。我建议对每个像素进行采样并构建一个附近像素的数组,这些像素也落在原始像素颜色的阈值内(对每个匹配像素的邻居重复)。将整个数组作为潜在字符放在一边(或立即检查)并继续(可能会忽略以前收集的像素以加快速度)。

如果您提前知道文本的字体大小、质量和/或颜色,则可以进行优化。如果不是,您需要对构成“连续区域”的阈值相当慷慨。

© www.soinside.com 2019 - 2024. All rights reserved.