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

Google Vision complex OCR execution with two-column text

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

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

当我扫描收据(下图中给出的模板)时,Vision OCR 对于两列密集文本的行为很奇怪。例如,我有这个收据模板格式:

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

所以通常反应的例子:

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

此响应无法让我正确地将每件商品与相应的价格联系起来。

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

我的问题是:能否请您给我一个提示,如何通过创建新图像以编程方式调整这两列之间的距离。或者更好的主意是将收据图像分成 2 张图像,每列 1 张图像,然后分别对它们进行 OCR?但老实说,我不知道如何识别列 space 并将它们切割成新图像,所以对此有什么建议吗?

首先对图像进行二值化处理,然后使用"morphology - erosion"等图像处理算法进行预处理,根据两列之间的space将原始图像一分为二。如何?由于像素值在黑色区域最低,因此在水平扫描原稿时可以识别出有下降值。最后,您可以使用 OCR 检测数字。