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

时间:2011-02-04 05:03:29

标签: image-processing ocr vision

我在网上找到的所有内容都是关于OCR的,但我还没有,我仍然需要识别图像中字母的位置。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:8)

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

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

只有几个例子:

  • 如果您在汽车图片上识别车牌,则应首先找到车牌,然后将其拆分为单独的字符。
  • 如果您正在识别某个申请表,您可以通过了解其布局来找到文本所在的区域
  • 如果您正在识别书页的扫描,则必须区分图片和文本区域,然后才能处理文本。

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

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

现在,当你有线条时,你可能会认为现在它很简单,你可以把它分成字符,好吧!再次,这是错误的。存在诸如连通字符,破碎字符甚至连字(两个字母形成单个形状)或字母,其部分进一步向右上方或下方字符下方的现象。你应该做的是创建几个将字符串分为单词和单个字符的hipiques,然后尝试OCR每个变体,用置信度对每个hypotesis进行加权。最后一步是使用字典检查此图中的不同路径并选择最佳路径。

直到现在,当你真正认识到所有内容时,你可以说出个别角色的位置。

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

答案 1 :(得分:0)

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

如果您事先知道文本的字体大小,质量和/或颜色,则可以进行优化。如果不是,你会对你构成“连续区域”的门槛相当慷慨。