在当今数字化时代,组织面临的一个常见问题是如何处理那些为报销目的而扫描并提交的电子收据。为了使任何索赔或报销得到清算,这些收据首先必须根据组织和部门到达适当的会计部门,而实现这一活动的一种方式是通过手动干预。一个人或一个团队必须手动浏览所有这些数字化扫描的收据,并根据他们可能拥有的部门或其他验证和资格标准进行筛选。
当扫描收据的数量过高时,情况变得更加糟糕。为了摆脱这种手动努力,许多组织已经选择了基于AI的解决方案,还有许多组织正在这样做的过程中。
当然,可以选择OCR(光学字符识别技术)来提取数据,但这里的问题不仅仅是数据提取,还涉及到数据解释。因为可能会发生这样的情况,用户上传了一个完全错误的文档,这不是收据。因此,解决方案应该足够强大,能够过滤出这些情况。
像许多其他Azure服务一样,这里也可以使用名为Form Recognizer的服务,它具有智能处理能力,允许自动化处理表格和收据。基本上,它是OCR和预测模型的组合,这反过来又属于Azure Cognitive Services的范畴。
在这里,OCR将进行文本提取,模型将帮助过滤有用信息,如发票日期、地址、金额、描述、名称或可能是业务需求的任何其他相关字段。
Form Recognizer支持两种类型的模型:预构建和自定义模型。预构建模型是现成提供的,并且已经用基于美国销售格式的一些基本销售数据进行了训练。自定义模型可以根据自己的数据和业务需求进行定制。
在本文中,将专注于预构建模型,并将在另一篇文章中介绍自定义模型集成。
需要做的第一件事是登录到Azure门户portal.azure.com创建Azure资源。创建Azure资源有两种方式:使用Azure Form Recognizer或使用Azure Cognitive Services。如果有人计划在Cognitive Services下使用其他服务,那么可以使用现有的/新资源。但如果只需要使用Form Recognizer服务,也可以按照下面的方法进行:
一旦选择了Form Recognizer,就需要在下面的表单中填写所有基本信息:
点击“Review + Create”,它将创建一个带有密钥和端点的Azure资源。
对于开发,使用Python作为语言,使用Visual Studio Code带有Jupyter Notebook。以下是核心实现:
key = "KEY_TO_BE_REPLACED"
endPoint = "ENDPOINT_TO_BE_REPLACED"
import os
from azure.ai.formrecognizer import FormRecognizerClient
from azure.core.credentials import AzureKeyCredential
client = FormRecognizerClient(endpoint = endPoint, credential = AzureKeyCredential(key))
image = "IMAGE_FILE_PATH"
fd = open(image, "rb")
analyzeReceipt = client.begin_recognize_receipts(receipt = fd)
result = analyzeReceipt.result()
print('Address: ', result[0].fields.get("MerchantAddress").value)
print('Contact Number: ', result[0].fields.get("MerchantPhoneNumber").value)
print('Receipt Date: ', str(result[0].fields.get("TransactionDate").value))
print('Tax Paid: ', result[0].fields.get("Tax").value)
print('Total Amount Paid: ', result[0].fields.get("Total").value)
items = result[0].fields.items()
for name, field in items:
if name == "Items":
for items in field.value:
for item_name, item in items.value.items():
print(item_name, ': ', item.value)