使用 Amazon Textract 自动从PDF文件中提取内容 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon Textract 自动从PDF文件中提取内容

由贾天霞创作 () AWS

环境:生产

技术:机器学习和人工智能;分析;大数据

AWS服务:亚马逊 S3;亚马逊 Textract;亚马逊 SageMaker

Summary

许多组织需要从上传到其业务应用程序PDF的文件中提取信息。例如,组织可能需要准确地从税务或医疗PDF档案中提取信息,用于税务分析或医疗索赔处理。

在 Amazon Web Services (AWS) 云上,Amazon Textract 会自动从PDF文件中提取信息(例如打印的文本、表单和表格),并生成包含原始文件信息的JSON格式文件。PDF您可以在AWS管理控制台中使用 Amazon Textract,也可以通过实现API调用来使用。我们建议您使用编程API调用来缩放和自动处理大量PDF文件。

当 Amazon Textract 处理文件时,它会创建以下 Block 对象列表:页面、文本行和单词、表单(键值对)、表格和单元格以及选择元素。还包括其他对象信息,例如边界框、置信区间和关系。IDsAmazon Textract 将提取字符串形式的内容信息。需要正确识别和转换数据值,以便下游应用程序更轻松的使用。 

此模式描述了使用 Amazon Textract 自动从PDF文件中提取内容并将其处理成干净输出 step-by-step的工作流程。此模式使用模板匹配技术正确识别必填字段、密钥名称和表,然后对每种数据类型进行后期处理更正。您可以使用这种模式来处理不同类型的PDF文件,然后可以缩放和自动化此工作流程,以处理格式相同的PDF文件。  

先决条件和限制

先决条件

  • 一个活动的 AWS 账户。

  • 现有的亚马逊简单存储服务 (Amazon S3) 存储桶,用于存储PDF文件转换为格式JPEG以供亚马逊 Textract 处理后的文件。有关 S3 存储桶的更多信息,请参阅 Amazon S3 文档中的存储桶概述

  • Textract_PostProcessing.ipynb Jupyter 笔记本(附件),已安装并配置。有关 Jupyter 笔记本的更多信息,请参阅亚马逊文档中的创建 Jupyter 笔记本。 SageMaker

  • 具有相同格式的现有PDF文件。

  • 了解 Python。

限制

架构

此模式的工作流程首先在示例PDF文件上运行 Amazon Textract(首次运行),然后在格式与第一个PDF文件相同的文件上运行PDF(重复运行)。下图显示了 “首次运行” 和 “重复运行” 的组合工作流程,该工作流程会自动重复地从具有相同格式PDF的文件中提取内容。

使用 Amazon Textract 从文件中提取内容 PDF

图表显示了此模式的以下工作流程:

  1. 将PDF文件转换为JPEG格式并将其存储在 S3 存储桶中。 

  2. 致电亚马逊 Textract API 并解析亚马逊 Textract 的响应文件。JSON 

  3. 通过为每个必填字段添加正确的KeyName:DataType配对来编辑JSON文件。为重复运行阶段创建 TemplateJSON 文件。

  4. 为每种数据类型(例如浮点数、整数和日期)定义后处理校正函数。

  5. 准备与第一个PDF文件格式相同的PDF文件。

  6. 致电亚马逊 Textract API 并解析亚马逊 Textract 的回复。JSON

  7. 将解析后的JSON文件与文件进行匹配。TemplateJSON

  8. 实施后期处理校正。

最终JSON输出文件中每个必填字段KeyName都有Value正确的 and。

目标技术堆栈

  • 亚马逊 SageMaker 

  • Amazon S3 

  • Amazon Textract

自动化和扩缩

您可以使用 AWS Lambda 函数自动执行重复运行工作流程,该函数会在向 Amazon S3 中添加新PDF文件时启动 Amazon Textract。然后,Amazon Textract 会运行处理脚本,并将最终输出保存至存储位置。有关这方面的更多信息,请参阅 Lambda 文档中的使用 Amazon S3 触发器调用 Lambda 函数

工具

  • Amazon SageMaker 是一项完全托管的机器学习服务,可帮助您快速轻松地构建和训练机器学习模型,然后将其直接部署到可用于生产的托管环境中。

  • Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

  • Amazon Textract 可以轻松地将文档文本检测和分析添加至您的应用程序。

操作说明

任务描述所需技能

转换PDF文件。

将PDF文件拆分为单个页面,然后将其转换为 Amazon Textract 同步操作的JPEG格式(),为首次运行Syn API做好准备。

注意:您也可以对多PDF页文件使用 Amazon Textrac t 异步操作 (Asyn API)。

数据科学家,开发人员

解析亚马逊 Text JSON ract 的回复。

打开 Textract_PostProcessing.ipynb Jupyter 笔记本(附后),然后使用以下代码调用 Amazon API Textract:

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])

使用以下代码JSON将响应解析为表单和表格:

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
数据科学家,开发人员

编辑模板JSON文件。

编辑每个KeyName和相应JSON的DataType(例如字符串、浮点数、整数或日期)以及表格标题(例如ColumnNamesRowNames)的解析结果。

此模板用于每种单独PDF的文件类型,这意味着该模板可以重复用于格式相同的PDF文件。

数据科学家,开发人员

定义后处理校正函数。

Amazon Textract 对 TemplateJSON 文件的响应中的值为字符串。日期、浮点数、整数或货币无区别。必须将这些值转换至适合下游用例的正确数据类型。 

使用以下代码根据 TemplateJSON 文件更正每种数据类型:

finalJSON=postprocessingCorrection(parsedJSON,templateJSON)
数据科学家,开发人员
任务描述所需技能

准备PDF文件。

通过将PDF文件拆分为单个页面,然后将其转换为用于 Amazon Textract 同步操作的JPEG格式()Syn API来准备这些文件。

注意:您也可以对多PDF页文件使用 Amazon Textrac t 异步操作 (Asyn API)。

数据科学家,开发人员

致电 Amazon Textract API。

使用以下代码致电 Amazon T API extract:

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])
数据科学家,开发人员

解析亚马逊 Text JSON ract 的回复。

使用以下代码JSON将响应解析为表单和表格:

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
数据科学家,开发人员

加载模板JSON文件并将其与解析后的JSON文件进行匹配。

通过以下命令使用 TemplateJSON 文件提取正确的键值对和表:

form_kv_corrected=form_kv_correction(parseformKV,templateJSON) form_table_corrected=form_Table_correction(parseformTables, templateJSON) form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}
数据科学家,开发人员

后期处理校正。

TemplateJSON 文件和后处理功能中使用 DataType,以使用以下代码校正数据: 

finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)
数据科学家,开发人员

相关资源

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip