【问题标题】:Choose best input to OCR from two images从两个图像中选择 OCR 的最佳输入
【发布时间】:2015-12-24 14:20:37
【问题描述】:

我正在构建一个预处理项目,以增强将在第 2 阶段发生的 OCR 结果,但来自两个图像。

例如我有image1和image2,我们需要检查哪一个更好地对其进行OCR。

性能和处理时间非常重要(实时应用)。

以下是一些我需要讨论的案例:

案例1

两者都是“F”字母,但第一个在接下来发生的 OCR 中是可读的“F”,而第二个根本不可读,所以对于案例 1,我需要选择第一个“F”作为 OCR 的输入并忽略第二张图像。

案例2

两者都是“R”字母,在OCR中都是可读的,但是我们看到第一个比第二个更好,所以我需要在这里选择第一个“R”。

案例3:

和第一种情况类似,这里的“n”在OCR中是不可读的,所以我需要选择第一个“na”

案例4

在第一个“na”中,“n”和“a”没有合并在一起,第二个是一个“轮廓”,所以第一个“na”作为 OCR 的输入要好得多。

我需要构建一个通用的快速算法来检查图像的这部分是否更适合 OCR。

我尝试了以下方法:

1- 方法1:检查图像是否模糊,选择一个更好的。

2- Method2:调用canny方法(或sobel)并选择更好的图像。

3- 方法2:检查两个图像上的轮廓计数,并根据轮廓区域选择看起来更好的一个,然后计数。

有更好的建议吗?

【问题讨论】:

    标签: c++ algorithm opencv computer-vision ocr


    【解决方案1】:

    问题是如何获得这些块?

    你如何确定这些是要比较的东西。

    如果您知道预期字符的大小 - 因此您以该大小切割块 - 那么您也可以在比较中使用它。

    【讨论】:

      【解决方案2】:

      我认为这个问题有点太宽泛了。对于不同类型的缺陷,我会建议不同的方法。

      对于前两种情况,可能还有第三种情况,我建议做一个小的形态学close 并将结果与​​原始结果进行比较。更好的字母使用 close 会改变更少,因为它没有小孔和点。比较指标可以像像素级绝对差的总和一样简单。

      【讨论】:

        【解决方案3】:

        【讨论】:

        • 形态学运算如何给出更好解的估计?
        • 对于案例 2,字母 R 中的黑色像素缺失,因此使用适当的内核我们可以填充缺失的像素。在案例 4 中,字母使用细化操作或骨架化连接,我们可以将其分离。然后应用侵蚀以增加宽度。如果您使用 tesseract 进行字符识别,它会在较小分辨率的图像上表现不佳。希望这会有所帮助
        • 谢谢,但问题是要找出哪个更好而不是增强错误输入。
        • 好的。如果你能为每个案例形成一个好的模板。你可以将模板与每个字符匹配。然后根据相似度你可以选择更好的。
        • 这种情况下的模板匹配类似于ocr!
        猜你喜欢
        • 1970-01-01
        • 2013-10-26
        • 2012-04-13
        • 2020-05-28
        • 2020-01-17
        • 2011-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多