Google Vision复杂的OCR执行,包含两列文字

时间:2017-12-08 21:31:44

标签: c# ocr image-recognition vision google-vision

很抱歉,如果此问题已在此处提出,但我无法找到答案。

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

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

enter image description here

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

通常回应的例子:

RECEIPT 产品1 产品2 产品3 9.99 A. 产品4 9.99 A. 12.10 A. 产品5

此回复不允许我使用相应的价格正确连接每个项目。

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

我的问题是:请你给我一个提示,我可以通过创建新图像以编程方式调整这两列之间的距离。或者更好的想法是将收据图像分成2个图像,每列1个图像并分别对它们进行OCR?但老实说,我不知道如何识别列空间并将其剪切成新图像,那么有关于此的任何建议吗?

1 个答案:

答案 0 :(得分:1)

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

enter image description here