亚马逊AWS官方博客
使用 Amazon Textract 与 Amazon Augmented AI 配合人工循环处理 PDF 文档
包括金融、医疗、法律以及房地产在内的诸多行业,都需要在不同的业务操作流程中处理大量文档。例如,医疗保健与生命科学组织需要访问医疗记录及表格中的数据,借此履行医疗要求并简化行政流程。 Amazon Textract是一项机器学习(ML)服务,能够从几乎任意类型的文档当中自动提取文本与数据,进而轻松实现文档信息的规模化处理。例如,Textract能够从保险索赔文件中提取患者信息,也可以从扫描得到的医学图表表格中提取具体数值。
根据实际业务用例,大家可能还需要对ML预测结果进行人工核查。例如,出于法规要求或者扫描质量低下等因素的影响,我们可能需要对从抵押贷款申请或医疗索赔表格扫描件中提取到的信息,特别是其中的部分关键字段进行人工核查。Amazon Augmented AI (Amazon A2I)可帮助大家构建并管理此类人工审核工作流。以此为基础,用户可以根据实际需求设定置信度得分阈值,并对得分低于阈值的ML预测结果进行人工核查,借此保证结论真实可信。关于更多详细信息,请参阅将Amazon Textract与Amazon Augmented AI配合使用以处理关键文档。
在本文中,我们将展示如何使用Amazon Textract与Amazon A2I构建工作流,通过人工审核循环处理一份多页PDF文档。
解决方案概述
以下架构所示,为如何使用无服务器架构以人工审核方式处理多页PDF文档。Amazon Textract身兼处理图像(PNG与JPG)与PDF文档的两大功能,但Amazon A2I人工审核程序只能将各页面作为图像,并使用Amazon Textract的 AnalyzeDocument API进行单独处理。
为了实现这套架构,我们使用Amazon Step Functions 以构建整体工作流。在工作流开始时,其首先从多页PDF文档当中提取各独立页面,而后使用Map状态通过AnalyzeDocument
API同时处理多个页面。当我们调用Amazon Textract时,还需要将Amazon A2I工作流指定为请求中的组成部分。配合这样的工作流配置,一旦检测到表单中特定字段的置信度低于某一阈值,则触发相应事件。被触发的事件将要求Amazon Textract返回提取到的文本以及与之相关的细节信息。待人工审核阶段完成后,系统将使用回调任务令牌以恢复状态机、合并页面结果并将输出结果存储在 Amazon Simple Storage Service (Amazon S3)存储桶当中。
关于本次演示解决方案的更多详细信息,请参阅 GitHub repo。
先决条件
在开始之前,大家需要预先安装以下组件:
- Node.js
- Python
- AWS命令行界面 (AWS CLI)—关于更多具体操作说明,请参阅 安装 AWS CLI。
部署解决方案
通过以下步骤,大家将在自己的AWS账户中部署本文中的参考实现方案。这套解决方案将部署多种不同组件,包括S3存储桶、Step Function、Amazon Simple Queue Service (Amazon SQS)队列、以及使用 AWS Cloud Development Kit (AWS CDK,一套开源云软件开发框架)的AWS Lambda函数。大家可以使用您所熟悉的编程语言,对云应用程序资源进行建模与配置。
- 安装AWS CDK:
- 将 GitHub repo 下载至您的本地计算机:
- 前往 amazon-textract-a2i-pdf文件夹并输入以下命令:
- 引导AWS CDK:
- 部署:
创建一支专有工作团队
所谓“工作团队”,是指您所指定的一组文档审核人员。大家可以通过Amazon Mechanical Turk外包商、供应商指派的员工、或者您所在组织的内部员工组建这样一支工作团队。无论选择哪种组建方式,Amazon A2I都会将审核任务发送至这部分工作人员。在本文中,我们使用内部工作人员创建工作团队,并将您自己添加至团队中以预览Amazon A2I工作流程。
要指定并管理您的内部工作人员,请使用Amazon SageMaker控制台上的Labeling workforces页面。在控制台上,您可以输入工作人员的电子邮件或者直接从Amazon Cognito用户池内导入先前存在的工作人员,借此建立起专有工作团队。
如果您已经拥有Amazon SageMaker Ground Truth工作团队,则可以直接将其分配至Amazon A2I当中,并跳过以下说明部分。
要创建专有工作团队,请完成以下操作步骤:
- 在Amazon SageMaker控制台上, 选择Labeling workforces。
- 在 Private选项卡上, 选择Create private team。
- 选择Invite new workers by email。
- 在Email addresses对话框中,输入工作团队的电子邮件地址(在本文中,请直接输入您个人的邮件地址)。
大家最多可以在邮件列表中输入50个邮件地址,各地址间以逗号分隔。
在专有团队创建完成之后,您会收到一封电子邮件邀请。以下截屏所示,为邀请邮件示例。
在点击该链接并更改密码之后,您将被注册为团队内的已验证工作人员。以下截屏所示为Private选项卡中的更新信息。
现在,我们的“一人团队”已经准备就绪,大家可以进一步创建人工审核工作流了。
创建人工审核工作流
要创建人工审核工作流,大家需要完成以下步骤:
- 定义业务条件,在本示例中,即设定将Amazon Textract将对文档内容的预测结果交付至人工审核的条件。例如,大家可以结合模型必须满足的指标为关键单词设置置信度阈值。如果该单词(或者形式键)的推理置信度低于预设的置信度阈值,则对该形式及预测结果进行人工审核。
- 创建操作说明,帮助工作人员顺利完成文档审核任务。
- 在Amazon SageMaker控制台上,导航至 Human review workflows 页面。
- 选择Create human review workflow。
- 在 Workflow settings部分的Name当中,输入一条唯一的工作流名称。
- 在S3 bucket部分,输入我们在CDK部署步骤中创建的S3存储桶。其名称格式应为
multipagepdfa2i-multipagepdf-xxxxxxxxx
。A2I将把所有人工审核结果保存在该S3存储桶内。 - 在IAM role部分, 从下拉菜单中选择Create a new role。Amazon A2I将自动为您生成一个角色。
- 在S3 buckets you specify部分,选择Specific S3 buckets。
- 输入我们在步骤3中指定的S3存储桶,例如
multipagepdfa2i-multipagepdf-xxxxxxxxx
。 - 选择Create。
在角色创建完成之后,您会收到一条确认消息,且您的角色现已被预先填充至IAM role下拉菜单当中。
定义触发条件
在本文中,一旦Amazon Textract在文档中预测出的Mail Address
键置信度得分低于99%,或者未能正确得出预测结果,则触发人工审核。对于所有其他键,如果识别出的置信度得分低于90%,则开始人工审核。
- 选择 Trigger a human review for specific form keys based on the form key confidence score or when specific form keys are missing(根据表单键置信度得分或缺少特定表单键时,选择触发对特定表单键的人工审核)。
- 在Key name部分,输入
Mail Address
。 - 将识别置信度阈值设定为0到99。
- 将条件置信度阈值设定为0到99。
- 选择Trigger a human review for all form keys identified by Amazon Textract with confidence scores in a specific range(对所有由Amazon Textract识别得出、且置信度得分处于特定区间内的键,触发人工审核)。
- 将 Identification confidence threshold设定为0到90。
- 将Qualification confidence threshold 设定为0到90。
出于模型监控的目的,大家还可以随时发送特定百分比的页面以供人工审核。具体操作为,在Conditions for invoking human review 页面中勾选第三个选项:Randomly send a sample of forms to humans for review。本文不涉及这部分条件。
创建一套UI模板
在接下来的步骤中,我们将创建一套面向工作人员的UI模板,供其进行该校审核。Amazon A2I提供预置模板选项,帮助工作人员轻松审核文档中的键值对。
在使用默认模板时,大家还可以添加与当前任务相关的特定说明,帮助工作人员顺利完成任务。在本文中,我们可以输入类似于控制台内默认说明的描述内容。
- 在 Task Description之下,输入类似于
Please review the Key Value Pairs in this document
的描述信息。 - 在 Instructions之下,查看提供的默认说明并根据需要进行修改。
- 在Workers部分,选择Private。
- 在Private teams部分, 选择我们之前创建的工作团队。
- 选择Create。
这时,您将被重新定向至Human review workflows页面,并看到类似于以下截屏所示的确认消息。
记录下新的人工审核工作流ARN,我们将在下一部分中使用它配置人工循环。
使用人工审核工作流更新我们的解决方案
接下来,我们开始添加人工审核工作流ARN。
- 在下载自 GitHub repo的代码当中,打开
multipagepdfa2i/multipagepdfa2i_stack.py
。
在第23行处,可以看到以下代码:
- 在空白部分,输入我们在上一节末尾复制的人工审核工作流ARN。
修改之后,第23行代码应如下所示:
- 保存所做的更改。
- 切换到上一级目录使用以下代码进行部署:
测试我们的工作流
要测试这套工作流,请完成以下操作步骤:
- 在CDK部署流程中创建的S3存储桶内,创建一个名为
uploads
的文件夹 (例如:multipagepdfa2i-multipagepdf-xxxxxxxxx
)。 - 将 示例PDF文档 上传至
uploads
文件夹。例如,uploads/Sampledoc.pdf
。 - 在Amazon SageMaker控制台上, 选择Labeling workforces。
- 在Private选项卡中, 选择Labeling portal sign-in URL下的链接。
- 使用由Amazon Cognito配置完成的账户进行登录。
如果该文档需要进行人工审核,则Jobs section下将显示一项作业。
在审核人员UI中,我们可以看到操作说明以及第一份需要审核的文档。大家可以使用工具箱进行缩放、调整图像尺寸并重新定位文档。详见以下截屏内容。
这套UI专门为文档处理任务而设计。在以上截屏的右侧,可以看到键值对被自动预填充至Amazon Textract响应当中。作为工作人员,您可以快速参考边栏内容,保证正确识别出键值对。
在选定右侧的任意字段后,界面中将出现对应的边界框,突出显示其在文档中的位置。具体参阅以下截屏。
在以下截屏中,Amazon Textract未能识别出Mail Address
。人工审核工作流将其确定为重要区域,工作人员任务UI会要求我们在右侧为未识别的部分输入详细信息。
根据所配置Amazon Textract置信度的得分范围,大家可能需要提交一系列页面。在审核完成之后,请继续以下操作步骤。
- 在完成人工审核流程后,前往我们之前使用过的S3存储桶(例如:
multipagepdfa2i-multipagepdf-xxxxxxxxx
)。 - 在
complete
文件夹内, 选择包含输入文档名称的文件夹(例如:uploads-Sampledoc.pdf-b5d54fdb75b143ee99f7524de56626a3
)。
该文件夹中包含 output.csv
,其中放置有所有键/值对。
总结
在本文中,我们展示了如何使用Amazon Textract与Amazon A2I从多页PDF文档扫描文件中自动提取数据,以及如何根据给定的业务条件对页面进行人工审核。关于Amazon Textract与Amazon A2I的更多详细信息,请参阅将Amazon Augmented AI与Amazon Textract配合使用。
关于视频演示、Jupyter notebook示例以及相关用例的更多详细信息,包括文档处理、内容审核、情感分析、文本翻译等,请参阅Amazon Augmented AI资源。