发布于: Oct 10, 2022

如何把图片上的文字转换成文字,首先我们需要部署一套 CloudFormation 模板,用于置备必要的 Amazon Web Services 身份与访问管理(Amazon Indentity and Access Management,简称 IAM)角色、服务,并提供解决方案所必需的Amazon S3, Lambda, Amazon Textract, Amazon Comprehend 以及 Amazon Lex 聊天机器人等组件。
  • 在美国东部(北弗吉尼亚州)区域启动以下 CloudFormation 模板:
  • 请不要修改栈名称或者参数 botname InvoiceBot。
  • 在 Capabilities and transforms 部分,勾选全部三个复选项,确认由 Amazon CloudFormation 创建 IAM 资源并扩展模板。

关于上述资源的更多详细信息,请参阅 Amazon IAM 资源。

此模板使用 Amazon Web Services 无服务器应用程序模式( Amazon
Serverless Application Model,Amazon SAM)以简化面向无服务器应用程序的函数与 API 定义流程,同时为各项服务提供环境变量等功能支持。

  • 选择 Create stack。

以下截屏所示,为 Stack Detail 页面中显示的栈状态,目前为CREATE_IN_PROGRESS。在20分钟之内,该状态将转换为CREATE_COMPLETE,代表栈创建完成。

 

Outputs 选项卡中,复制 LexLambaFunctionArnAssetsUploadBucketExtractedTextfilesBucket以及 LexUIWebAppUrl 的值。

要将文档上传至新的 S3 存储桶,请选择与您之前复制的 AssetsUploadBucket 相对应的S3存储桶URL。上传 PDF 或图像,即可开始文本提取流程。

您也可以从 GitHub repo 处下载本文中使用的发票数据,并将其上传至 AssetsUploadBucket S3 URL。我们建议您在发票模板中使用自定义解决方案。关于上传文件的更多详细信息,请参阅如何向 S3 存储桶上传文件与文件夹?

在上传完成之后,大家可以在 Amazon S3 控制台的 Overview 选项卡中看到该文件。
在文件上传完毕后,即可开始文档文本提取流程。要查看待提取的文档,请打开存储桶并选择您之前复制的 URL
Overview 选项卡中,您可以下载该文件并检查内容,审核其是否与您上传的文档完全相同。

我们将使用以下会话对机器人进行建模:

Bot: Welcome to InvoiceBot. You can ask me to provide your invoice summary, or details of your invoices, or your invoice notes(欢迎访问 InvoiceBot。您可以要求我提供发票摘要、发票明细或发票注释)

用户: Show me the invoice summary(显示发票摘要)

Bot: I reviewed your input documents and found 1 invoice with invoice numbers 35678-9 totaling $2100.0. I can get you invoice details or invoice notes. Simply type your request(我检查了您的输入文件,发现其中包含1张发票,发票编号为35678-9,金额总计2100美元。我可以为您提供发票详细信息或发票注释。请输入您的要求

用户: Get me the invoice details(获取发票明细)

Bot: Please enter the invoice number(请输入发票编号)

用户: 35678-9

Bot: Invoice Details for 35678-9: On 5/10/2019 for the item One there is a charge of 1500.00. On 5/11/2019 for the item Merchant Two there is a charge of 100.00. On 5/12/2019 for the item Merchant Three there is a charge of 300.00. On 5/13/2019 for the item Merchant Three there is a charge of 200.00. You can request me for invoice notes or simply close this chat.(35678-9发票明细:2019/5/10,费用项一金额为1500美元。2019/1/11,费用项二为100美元。2019/5/12,费用项三为300美元。20195/13,费用项四为200美元。您可以要求我提供发票记录,也可以直接关闭本次聊天。)

用户: Can you show me the invoice notes for 35678-9(显示35678-9号发票注释)

Bot: Invoice Notes for 35678-9: 5/13/2019 Merchant Three 200.00 Merchant Three 300.00 Laptop Office Supplies Merchant Two 100.00 Team Dinner Food 5/12/2019 5/11/2019 Desks and Office Supplies 5/10/1019 Merchant One 1500.00 Chairs . Feel free to try the options again or you can simply close this chat(35678-9号发票注释:2019/5/13,购入三项计200美元。购入三项计300美元,为电脑办公桌。2019/5/12购入两项100美元,为团队晚餐。2019/5/11,为办公桌与办公服务器。2019/5/10 购入一项计1500美元,为椅子。

我们还可以使用以下意图构建其他 Amazon Lex 机器人(InvoiceBot):

  • GetInvoiceSummary – 用户请求查看发票摘要时所调用的意图。由 Lambda 函数完成,可返回当前可用发票的数量与发票总金额。
  • GetInvoiceDetails – 用户请求查看发票明细时所调用的意图。可通过 Lambda 函数实现,用于提供发票各条目明细,包括日期、数量与条目明细。
  • GetInvoiceNotes – 用户请求查看发票注释时所调用的意图。通过 Lambda 函数完成,提供带有日期与项目描述的发票注释信息。
     

如之前的解决方案概述中所提到,您可以使用 Amazon Lex 聊天机器人(InvoiceBot) Amazon Comprehend 提取自 Amazon Textract 文本中的洞见进行交互。

要发布您的聊天机器人,请完成以下操作步骤:

  • Amazon Lex 控制台上,选择 Bots
  • 选择您所创建的聊天机器人。
  • Intents下,选择GetInvoiceSummary
  • Fulfilment下,选择您的Lambda函数。
  • 输入 LexLambdaFunction以搜索该函数,并选定正确结果。

这时系统会出现显示弹框。

  • 选择OK
  • 选择 Save intent
  • 在另外两项意图 GetInvoiceDetailsGetInvoiceNotes 中,重复上述步骤。
  • 选择 Build
  • 在构建完成后,选择 Publish
  • Create an alias 部分,输入 Latest。您也可以使用其他名称,例如测试、开发、beta 或者生产等皆可,用于代指机器人的运行环境。 
  • Publish

在机器人发布完成后,系统将打开以下页面。

  • 选择 Close
您的聊天机器人现在已经就绪并可供使用。导航至复制自 Amazon CloudFormation Outputs 选项卡处的URL  LexUIWebAppUrl 。以下截屏所示,为用户与该机器人的对话结果(从左至右阅读):

本文介绍了如何在 Amazon Lex 中创建一款会话式聊天机器人,使用 Amazon Textract 从图像或 PDF 文档中提取文本,使用 Amazon Comprehend 从文本中提取洞见,并通过机器人实现与洞见的交互。本文中所使用的代码皆发布在 GitHub repo 当中,供您随意使用及扩展。我们也期待了解您如何将这套解决方案应用于实际用例,请在评论区中分享您的观点与疑问。

相关文章