首页 > 解决方案 > 使用 OCR/计算机视觉从图像中读取多张发票

问题描述

我希望从包含 2 张发票的以下图像中提取键值对。

图片示例 点击这里查看图片

我正在使用 AWS Textract 来实现这一点,但是我希望能够将键值对映射回发票。例如,“ Cornbread SVC ”应映射到帐单#1,“ 1 #1 CHKN PLATE ”应映射到帐单#2。

我认为的一种方法是对图像进行一些预处理,如果我们能找出答案。票据及其坐标然后根据尺寸裁剪图像。所以基本上图像上的“5”张钞票会产生“5”张钞票的坐标,然后根据不同的钞票尺寸拍摄原始图像并裁剪 5 次。然后将每个账单作为单独的图像发送到 AWS Textract。

但是,我一直无法找出一种方法来检测否。图像中的钞票及其边界坐标。

任何帮助,将不胜感激。我愿意使用任何其他 API 或方法来实现这一点。

标签: pythonamazon-web-servicescomputer-visionamazon-textract

解决方案


正如您已经提到的,在进行任何 OCR 之前,有必要拆分账单。有一些技术可以实现这一点。

您可以使用 OpenCV 并检测图像中的白皮书,请参阅. 根据我的经验,我可以告诉你,当图像的背景足够暗时,它会起作用。例如,当您在白色桌子上拍照时,它将不起作用。因此,使用这种方法获得的用户体验不会令人满意 - 有时有效,有时无效。

如果它是一个移动应用程序,您可以要求您的用户在每张收据周围画一个矩形。在移动扫描仪中使用了针对单个文档的类似方法,例如

我更喜欢的最后一个选项是使用扫描应用程序/SDK 并强制用户简单地为单张收据拍照。它可能听起来有点僵硬和不酷,但它一直有效。让我们面对现实吧——你有可能失败的步骤越多,就会发生更多的失败。在发票数据提取过程中,您至少有以下步骤:

  • 图像捕捉
  • 图像处理
  • OCR - 不是 100% 准确
  • 数据识别(什么是发票号码等) - 不是 100% 准确

至少,您有两个不是 100% 的步骤。为什么要添加一个不能在 100% 情况下工作的新步骤,而它可以通过拍摄单独的图像来实现相同的功能?


推荐阅读