你如何建立一个从收据中提取数据的模型?

数据挖掘 计算机视觉 图像识别 信息检索 ocr
2021-09-17 09:15:16

我正在尝试建立一个能够识别收据和发票信息的模型。

我已经使用 google cloud vision api 从收据中提取文本,但问题是它只返回收据中的所有文本。我正在寻找建立一个模型,该模型仅返回特定字段,例如总价,带来的酒精等。从收据中。

我可以通过硬编码来解析要提取的文本,但我认为这不是最佳的。有没有办法为这个用例构建一些东西。我需要一些事情继续下去。

评论---输出:

'Berghotel\nGrosse Scheidegg\n3818 Grindelwald\nFamilie R. Müller\nRech. Nr. 4572\nBar\n30.07.2007/13:29:17\nTisch 7/01\nNM\n#ರ\n2xLatte Macchiato à 4.50 CHF\n1xGloki\nà 5.00 CHF\n1xSchweinschnitzel à 22.00 CHF\n1xChässpätzli à 18.50 CHF\n#ರ #ರ #1ರ\n5.00\n22.00\n18.50\nTotal:\nCHF\n54.50\nIncl. 7.6% MwSt\n54.50 CHF:\n3.85\nEntspricht in Euro 36.33 EUR\nEs bediente Sie: Ursula\nMwSt Nr. : 430 234\nTel.: 033 853 67 16\nFax.: 033 853 67 19\nE-mail: grossescheidegg@bluewin.ch\n'
1个回答

最简单的管道是执行以下操作:

  1. 光学字符识别
  2. 命名实体提取
  3. 实体消歧

光学字符识别

这基本上是将您的收据转换为纯文本。

如果您有收据的扫描(图片),那么您需要一种可以处理图像的方法。例如,您可以使用tesseract

命名实体提取

这是检测文本中感兴趣的部分。这包括检测dates, prices, currency, locations, names, 等等。一旦你检测到一个命名实体,例如: price=2.59,你仍然不知道它是否是unit cost, or total cost after tax, or total cost before tax,但这将在下一步中出现。众所周知,这是一个令人感兴趣的领域。

有些工具能够检测您可能想要使用的大多数命名实体。例如:spaCyspaCy 最酷的地方在于,您可以训练它识别更多您可能想要的命名实体。

实体消歧

这是识别您提取的命名实体的用途。例如,给定price=2.59, 是unit cost, 或total cost after tax, 或total cost before tax.

这就是规则可能派上用场的地方,因为很难教机器学习模型来识别它们。你可以有如下规则:

  1. highest value = total cost after tax
  2. unity quantity × unit price = total cost before tax
  3. total cost before tax × 1.21 = total cost after tax
  4. 等等...