OCR:小文本的细分

时间:2012-12-22 04:36:08

标签: opencv image-processing language-agnostic ocr image-segmentation

问题

我一直在构建一个(非常)简单的OCR引擎。 由于我试图对非常小(像素大小)的字符进行分类,我在分割方面遇到了一些困难。这是一个例子,经过尽力而为的图像范围阈值处理:

image of problematic segmentation on 63

我尝试了什么

错误检测

  • 段的大横向尺寸。它主要起作用,但失败了(误报) 对于一些较大的角色。
  • 分类,并以低分拒绝。这似乎有点浪费。

错误更正

  • 垂直添加像素(垂直直方图),找到最小值。在许多样本中,它会在错误的地方切割许多部分。

我还没有尝试过

  • 尝试对所有可能的分割点(像素)进行分类。这将是非常浪费的,并且难以扩展为3合并字符段。
  • 我一直在阅读morphology approaches,将角色变成数学曲线,但我不知道真的知道从哪里开始,或者是否值得付出努力

从哪里开始?

我不知道。因此这个问题:)

2 个答案:

答案 0 :(得分:6)

向后倾斜,一半闭上眼睛。

63 :-)

现在,如果只是电脑那么容易!

这与硅掩模中的双重图案(或不做?)非常接近。

我建议过采样(每个轴的像素数增加一倍或四倍),滤波(可能是低通 - 或者可能是带通=线的空间频率的带通),重新阈值直到它们分开。价格昂贵,只适用于问题区域。

答案 1 :(得分:3)

重塑您的问题,因此您不需要细分。

真的,对于这种规模,我认为你最好投资其他方法。例如,如果您对文本进行OCR(是吗?),您可以使用行的信息(字符高度)。可用于小(但可读)字符的字体不多。我的方法是扫描扫描线中的线条(从左到右,从上到下拍摄像素)并尝试查找训练文本和扫描线(n,n-1 ... n-x)之间的相关性

你可能也需要灰度等级的信息,所以最好不要对图像进行阈值处理。