发布于: Oct 10, 2022

文本数据处理是办公一族每日都会面临的问题,各行各业的组织都需要处理大量纸质文件,其中又以发票类票据居多。以往,对于包含表格、表单、段落以及复选框的各类扫描文档,我们往往很难从中提取出有效信息。虽然目前不少组织已经通过人工、自定义代码或者光学字符识别(OCR)等技术解决了信息提取难题,但其中仍然需要借助完善的表单提取与自定义工作流模板。
此外,在从文档中提取到文本或其他形式的内容之后,用户还希望从收据或发票中帮助最终用户整理出更多深层洞见。但这又需要构建起复杂的自然语言处理(NLP)模型,模型的训练又要占用大量训练数据与计算资源。机器学习模型的构建与训练往往既昂贵、又极为耗时。
再有,对于最终用户来说,提供类似于人的界面来与这些文档交互是很麻烦的。虽然最终用户可以通过给服务台打电话的方式得到不少帮助,但随着时间的推移,组织成本总会因此而不断提升。
本文将向大家介绍如何使用 Amazon Web Services AI 服务自动实现文本数据处理与洞见发现。借助 Amazon Web Services AI 服务(包括Amazon Textract, Amazon Comprehend 以及 Amazon Lex),您可以设置自动化无服务器解决方案以满足上述要求。我们将分步引导您完成以下操作流程:

  • 使用 Amazon Textract 从收据或发票扫描件(pdf 或图片格式)中提取文本。
  • 通过 Amazon Comprehend 得出洞见。
  • 使用 Amazon Lex 以自然语言形式实现与这些洞见的交互。

接下来,我们将介绍用于构建这样一套解决方案的具体服务与架构选项。

这套解决方案将使用以下 AI 服务、无服务器技术以及托管服务建立起一套可扩展且具备成本效益的架构:

  • Amazon Cognito——帮助您快速在Web与移动应用中添加用户注册、登录与访问控制等功能。
  • Amazon Web Services Lambda——执行代码以响应触发器,执行数据更改、系统状态变化或用户操作等。由于 Amazon S3 能够直接触发 Lambda 函数,因此您可以借此构建起各类实时无服务器数据处理系统。
  • Amazon Lex——提供用于创建会话式聊天机器人的接口。
  • Amazon Comprehend——NLP服务,使用机器学习技术从文本中提取洞见与关系。
  • Amazon Textract——使用机器学习技术从 PDF、JPEG 或者 PNG 格式的扫描文档中提取文本与数据。
  • Amazon Simple Storage Service (Amazon S3)——为文档提供对象存储支持,并允许用户通过细粒度访问控制机制实现集中管理。

下图所示,为这套解决方案的基本架构。

此架构包含以下操作步骤:

  • 后端用户或管理员使用 Amazon Web Services 管理控制台或者 Amazon Web Services 命令行界面(Amazon Web Services CLI)将 PDF 文档或图像上传至 S3 存储桶。
  • Amazon S3 上传动作触发 Amazon Web Services Lambda 函数
  • Lambda 函数调用 Amazon Textract StartDocumentTextDetection API 后者设置一项异步作业以检测您上传的 PDF 中的文本内容。
  • 当文本处理完毕之后,Amazon Textract 向 Amazon Simple Notification Service (Amazon SNS) 发出通知。
  • 当作业完成文本检测任务之后,由另一项Lambda函数从 SNS 主题处获取通知。
  • 当 Lambda 收到 Amazon SNS 发来的作业完成通知后,其调用 Amazon Textract GetDocumentTextDetection API 以接收异步操作结果,并将结果加载至 S3 存储桶内。
  • 要使用 Amazon Lex 完成意图整理与分析,我们还需要使用另外一项 Lambda 函数。关于更详尽的交互序列,请参阅“使用 CloudFormation 部署架构”部分中的“构建聊天机器人”内容。
  • Amazon Comprehend使用机器学习技术从文本中提取洞见与关系。Lambda函数使用由Amazon Comprehend提供的boto3 APIs执行实体与关键短语检测。
        o 在聊天机器人显示欢迎致辞之后,用户输入“Show me the invoice summary(显示发票摘要)”即可调用 GetInvoiceSummary Lex 意图,并由 Lambda 函数调用 Amazon Comprehend DetectEntities API 以检测要实现的实体。
        o 当用户输入“Get me the invoice details(获取发票明细)”时,即可调用 GetInvoiceDetails 意图,Amazon Lex 会提示用户输入发票编号,并由 Lambda 函数调用 Amazon Comprehend DetectEntities API 以返回发票的详细信息。
        o 在用户输入“Can you show me the invoice notes for <invoice number>(能否显示〈发票编号〉发票注释)”时,即可调用 GetInvoiceNotes 意图,由 Lambda 函数调用 Amazon Comprehend DetectKeyPhrases API 以返回与发票相关的注释内容。
  • 使用现有CloudFormation栈作为嵌套栈,大家可以将 Lexbot Web UI 部署在 Amazon Web Services CloudFormation 模板当中。要下载该栈,请参阅为聊天机器人部署 Web UI。该嵌套栈将部署一套Lex Web UI,并将此网页作为 S3 存储桶的静态网站。Web UI 使用 Amazon Cognito 生成用于身份验证的访问令牌,并使用 Amazon Web Services CodeStar 设置交付管道。最终用户将通过 Web UI 与该聊天机器人进行交互。

相关文章