代码之家  ›  专栏  ›  技术社区  ›  Kasparas Taminskas

具有两列文本的Google Vision复杂OCR执行

  •  0
  • Kasparas Taminskas  · 技术社区  · 7 年前

    对不起,如果这个问题之前已经在这里问过,但我找不到答案。

    所以,我正在创建C#OCR程序来扫描商店收据。Vision OCR DocumentTextDetection本身可以非常准确地处理文本,但我还有其他问题:

    当我扫描收据(下图中给出的模板)时,视觉OCR在两列密集文本中表现得很奇怪。例如,我有以下收据模板格式:

    enter image description here

    响应通常是一列字符串,其中填充了第一列中的产品名称或第二列中的价格。

    通常的反应是:

    收据 产品1 产品2 产品3 9.99安 产品4 9.99安 12.10 A 产品5

    这个回复并没有让我正确地将每个项目与相应的价格联系起来。

    当我使用图像编辑程序(如Photoshop)缩小产品和价格栏之间的距离时,它会正常工作并逐行扫描收据,因此我可以轻松识别哪个价格属于哪个产品。

    我的问题是:你能给我一个提示吗,我如何通过创建新图像来编程调整这两列之间的距离。或者更好的办法是将接收图像分为2个图像,每列1个图像,并分别进行OCR?但我真的不知道如何识别列空间并将其剪切成新的图像,所以对此有什么建议吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   md612    7 年前

    首先对图像进行二值化,然后使用“形态学-腐蚀”等图像处理算法对其进行预处理,根据两列之间的间距将原始图像分割为两半。怎样由于像素值在黑色区域中最低,因此在水平扫描原始图像时可以识别出下降值。最后,您可以使用OCR检测数字。

    enter image description here