使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。

使用 AWS AI 服务进行智能文档处理:第 1 部分

医疗保健、金融和贷款、法律、零售和制造等行业的组织通常必须在其日常业务流程中处理大量文档。 这些文档包含关键信息,这些信息对于及时做出决策至关重要,以保持最高水平的客户满意度、更快的客户入职速度和更低的客户流失率。 在大多数情况下,需要手动处理文档以提取信息和洞察力,这既费时又容易出错、成本高昂且难以扩展。 目前,用于处理和从这些文档中提取信息的自动化程度有限。 使用 AWS 人工智能 (AI) 服务的智能文档处理 (IDP) 有助于从不同类型和格式的文档中自动快速、准确地提取信息,而无需机器学习 (ML) 技能。 以高精度更快地提取信息有助于按时做出高质量的业务决策,同时降低总体成本。

尽管 IDP 工作流中的阶段可能会有所不同并受用例和业务需求的影响,但下图显示了通常属于 IDP 工作流的阶段。 处理诸如税务表格、索赔、医疗记录、新客户表格、发票、法律合同等文件只是 IDP 的几个用例。

在这个由两部分组成的系列中,我们将讨论如何使用 AWS AI 服务大规模自动化和智能处理文档。 在这篇文章中,我们将讨论 IDP 工作流程的前三个阶段。 在 部分2,我们讨论剩余的工作流程阶段。

解决方案概述

以下架构图显示了 IDP 工作流的各个阶段。 它从数据捕获阶段开始,以安全地存储和聚合不同的文件格式(PDF、JPEG、PNG、TIFF)和文档布局。 下一个阶段是分类,您可以在其中对文档(例如合同、索赔表、发票或收据)进行分类,然后进行文档提取。 在提取阶段,您可以从文档中提取有意义的业务信息。 这些提取的数据通常用于通过数据分析收集见解,或发送到下游系统,例如数据库或事务系统。 下一个阶段是丰富,其中可以通过编辑受保护的健康信息 (PHI) 或个人身份信息 (PII) 数据、自定义业务术语提取等来丰富文档。 最后,在审查和验证阶段,您可以包括人工进行文档审查,以确保结果准确。

使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。

就本文而言,我们考虑了一组示例文档,例如银行对账单、发票和商店收据。 文档示例以及示例代码可以在我们的 GitHub存储库. 在以下部分中,我们将向您介绍这些代码示例以及实际的实际应用。 我们演示了如何利用 ML 功能 亚马逊Textract, 亚马逊领悟亚马逊增强AI (Amazon A2I) 处理文档并验证从中提取的数据。

Amazon Textract 是一项 ML 服务,可自动从扫描的文档中提取文本、笔迹和数据。 它超越了简单的光学字符识别 (OCR) 来识别、理解和从表单和表格中提取数据。 Amazon Textract 使用 ML 读取和处理任何类型的文档,无需手动操作即可准确提取文本、手写内容、表格和其他数据。

Amazon Comprehend 是一种自然语言处理 (NLP) 服务,它使用 ML 来提取有关文档内容的见解。 Amazon Comprehend 可以识别文档中的关键元素,包括对语言、人物和地点的引用,并将它们分类到相关主题或集群中。 它可以执行情感分析,使用单个文档或批量检测来实时确定文档的情感。 例如,它可以分析博客文章上的评论,以了解您的读者是否喜欢该文章。 Amazon Comprehend 还在实时和异步批处理作业中检测文本文档中的地址、银行帐号和电话号码等 PII。 它还可以在异步批处理作业中编辑 PII 实体。

Amazon A2I 是一项 ML 服务,可让您轻松构建人工审核所需的工作流程。 Amazon A2I 为所有开发人员带来人工审查,消除了与构建人工审查系统或管理大量人工审查人员相关的无差别繁重工作,无论它是否在 AWS 上运行。 Amazon A2I 将两者与 亚马逊Textract亚马逊领悟 让您能够在智能文档处理工作流程中引入人工审核步骤。

数据采集​​阶段

您可以将文档存储在高度可扩展且持久的存储中,例如 亚马逊简单存储服务 (亚马逊 S3)。 Amazon S3 是一种对象存储服务,可提供行业领先的可扩展性、数据可用性、安全性和性能。 Amazon S3 专为 11 个 9 的持久性而设计,可为全球数百万客户存储数据。 文档可以有各种格式和布局,并且可以来自不同的渠道,如门户网站或电子邮件附件。

分类阶段

在上一步中,我们收集了各种类型和格式的文档。 在这一步中,我们需要对文档进行分类,然后才能进行进一步的提取。 为此,我们使用 Amazon Comprehend 自定义分类. 文档分类是一个两步过程。 首先,您训练 Amazon Comprehend 自定义分类器以识别您感兴趣的类。 接下来,您使用 自定义分类器实时端点 并将未标记的文档发送到实时端点进行分类。

下图表示典型的文档分类工作流程。

分类阶段

要训​​练分类器,请确定您感兴趣的类,并为每个类提供示例文档作为训练材料。 根据您指定的选项,Amazon Comprehend 会创建一个自定义 ML 模型,并根据您提供的文档对其进行训练。 此自定义模型(分类器)检查您提交的每个文档。 它返回最能代表内容的特定类(如果您使用多类模式)或适用于它的类集(如果您使用多标签模式)。

准备训练数据

第一步是从 Amazon Comprehend 自定义分类器所需的文档中提取文本。 为了提取 Amazon S3 中所有文档的原始文本信息,我们使用 Amazon Textract detect_document_text() API。 我们还根据用于训练自定义 Amazon Comprehend 分类器的文档类型标记数据。

为简化起见,已对以下代码进行了精简。 完整代码请参考 GitHub 样例代码 textract_extract_text()。 功能 call_textract() 是一个调用 分析文件 API 内部,传递给方法的参数抽象了 API 运行提取任务所需的一些配置。

def textract_extract_text(document, bucket=data_bucket):        
    try:
        print(f'Processing document: {document}')
        lines = ""
        row = []
        
        # using amazon-textract-caller
        response = call_textract(input_document=f's3://{bucket}/{document}') 
        # using pretty printer to get all the lines
        lines = get_string(textract_json=response, output_type=[Textract_Pretty_Print.LINES])
        
        label = [name for name in names if(name in document)]  
        row.append(label[0])
        row.append(lines)        
        return row
    except Exception as e:
        print (e)        

训练自定义分类器

在此步骤中,我们使用 Amazon Comprehend 自定义分类来训练我们的模型以对文档进行分类。 我们使用 创建文档分类器 用于创建分类器的 API,该分类器使用我们的标记数据训练自定义模型。 请参阅以下代码:

create_response = comprehend.create_document_classifier(
        InputDataConfig={
            'DataFormat': 'COMPREHEND_CSV',
            'S3Uri': f's3://{data_bucket}/{key}'
        },
        DataAccessRoleArn=role,
        DocumentClassifierName=document_classifier_name,
        VersionName=document_classifier_version,
        LanguageCode='en',
        Mode='MULTI_CLASS'
    )

部署实时端点

要使用 Amazon Comprehend 自定义分类器,我们使用 CreateEndpoint API:

endpoint_response = comprehend.create_endpoint(
        EndpointName=ep_name,
        ModelArn=model_arn,
        DesiredInferenceUnits=1,    
        DataAccessRoleArn=role
    )
    ENDPOINT_ARN=endpoint_response['EndpointArn']
print(f'Endpoint created with ARN: {ENDPOINT_ARN}')  

使用实时端点对文档进行分类

创建 Amazon Comprehend 终端节点后,我们可以使用实时终端节点对文档进行分类。 我们使用 comprehend.classify_document() 以提取的文档文本和推理端点作为输入参数的函数:

response = comprehend.classify_document(
      Text= document,
      EndpointArn=ENDPOINT_ARN
      )

Amazon Comprehend 返回所有文档类别,其置信度得分与键值对数组(名称得分)中的每个类别相关联。 我们选择置信度得分最高的文档类。 以下屏幕截图是示例响应。

使用实时端点对文档进行分类

我们建议仔细阅读详细的文档分类示例代码 GitHub上.

萃取阶段

Amazon Textract 允许您使用 Amazon Textract 提取文本和结构化数据信息 检测文档文本分析文件 API,分别。 这些 API 使用 JSON 数据进行响应,其中包含 WORDS、LINES、FORMS、TABLES、几何或边界框信息、关系等。 两个都 DetectDocumentTextAnalyzeDocument 是同步操作。 要异步分析文档,请使用 开始文档文本检测.

结构化数据提取

您可以从文档中提取结构化数据(例如表格),同时保留检测到的项目之间的数据结构和关系。 您可以使用 分析文件 API与 FeatureType as TABLE 检测文档中的所有表格。 下图说明了这个过程。

结构化数据提取

请参见以下代码:

response = textract.analyze_document(
    Document={
        'S3Object': {
            'Bucket': s3BucketName,
            'Name': documentName
        }
    },
    FeatureTypes=["TABLES"])

我们运行 analyze_document() 方法与 FeatureType as TABLES 在员工历史文档上,并获得以下结果中的表格提取。

分析用于表格提取的文档 API 响应

半结构化数据提取

您可以从文档中提取半结构化数据,例如表单或键值对,同时保留检测到的项目之间的数据结构和关系。 您可以使用 分析文件 API与 FeatureType as FORMS 检测文档中的所有表单。 下图说明了这个过程。

半结构化数据提取

请参见以下代码:

response = textract.analyze_document(
    Document={
        'S3Object': {
            'Bucket': s3BucketName,
            'Name': documentName
        }
    },
    FeatureTypes=["FORMS"])

在这里,我们运行 analyze_document() 方法与 FeatureType as FORMS 在员工申请文件上,并获取结果中的表格提取。

使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。

非结构化数据提取

Amazon Textract 是具有行业领先的 OCR 准确性的密集文本提取的最佳选择。 您可以使用 检测文档文本 用于检测文本行和组成文本行的单词的 API,如下图所示。

非结构化数据提取

请参见以下代码:

response = textract.detect_document_text(Document={'Bytes': imageBytes})

# Print detected text
for item in response["Blocks"]:
	if item["BlockType"] == "LINE":
 		print (item["Text"])

现在我们运行 detect_document_text() 方法对样本图像进行提取,并在结果中获取原始文本提取。

使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。

发票和收据

Amazon Textract 提供专业支持以大规模处理发票和收据。 这 分析费用 API 可以从几乎任何发票或收据的商品或服务明细列表中提取明确标记的数据、隐含的数据和行项目,而无需任何模板或配置。 下图说明了这个过程。

发票和收据提取

请参见以下代码:

response = textract.analyze_expense(
    Document={
        'S3Object': {
            'Bucket': s3BucketName,
            'Name': documentName
        }
    })

Amazon Textract 可以在收据上找到供应商名称,即使它仅显示在页面上的徽标中,而没有称为“供应商”的明确标签。 它还可以查找和提取未使用行项目列标题标记的费用项目、数量和价格。

分析费用 API 响应

身份证件

亚马逊文摘 分析ID API 可以帮助您自动从身份证明文件中提取信息,例如驾照和护照,而无需模板或配置。 我们可以提取特定信息,例如到期日期和出生日期,以及智能识别和提取隐含信息,例如姓名和地址。 下图说明了这个过程。

身份证件提取

请参见以下代码:

textract_client = boto3.client('textract')
j = call_textract_analyzeid(document_pages=["s3://amazon-textract-public-content/analyzeid/driverlicense.png"],boto3_textract_client=textract_client)

我们可以使用 tabulate 获得漂亮的打印输出:

from tabulate import tabulate

print(tabulate([x[1:3] for x in result]))

使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。

我们建议通过详细的文档提取 样例代码 在 GitHub 上。 有关本文中完整代码示例的更多信息,请参阅 GitHub回购.

结论

在这个由两部分组成的系列文章的第一篇文章中,我们讨论了 IDP 的各个阶段和解决方案架构。 我们还讨论了使用 Amazon Comprehend 自定义分类器进行文档分类。 接下来,我们探讨了使用 Amazon Textract 从非结构化、半结构化、结构化和专用文档类型中提取信息的方法。

In 部分2 在本系列中,我们将继续讨论 Amazon Textract 的提取和查询功能。 我们着眼于如何使用 Amazon Comprehend 预定义实体和自定义实体从包含密集文本的文档中提取关键业务术语,以及如何在您的 IDP 流程中集成 Amazon A2I 人工在环审核。

我们建议查看 亚马逊Textract, 亚马逊领悟亚马逊A2I 文档并遵循提供的指南。 另外,请花点时间查看并了解以下产品的定价 亚马逊Textract, 亚马逊领悟亚马逊A2I.


关于作者

使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。 苏普拉卡什·杜塔 是 Amazon Web Services 的解决方案架构师。 他专注于数字化转型战略、应用程序现代化和迁移、数据分析和机器学习。

使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。索纳利萨胡 在 Amazon Web Services 领导智能文档处理 AI/ML 解决方案架构师团队。 她是一个充满激情的技术爱好者,喜欢与客户合作,利用创新解决复杂的问题。 她的核心关注领域是用于智能文档处理的人工智能和机器学习。

使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。安扬·比斯瓦斯 是一名高级 AI 服务解决方案架构师,专注于 AI/ML 和数据分析。 Anjan 是全球 AI 服务团队的一员,与客户合作,帮助他们了解和开发解决 AI 和 ML 业务问题的解决方案。 Anjan 拥有超过 14 年与全球供应链、制造和零售组织合作的经验,并积极帮助客户开始使用 AWS AI 服务并进行扩展。

使用 AWS AI 服务进行智能文档处理:第 1 部分 PlatoBlockchain 数据智能。 垂直搜索。 哎。钦马伊兰 是 Amazon Web Services 的 AI/ML 专家解决方案架构师。 她对应用数学和机器学习充满热情。 她专注于为 AWS 客户设计智能文档处理解决方案。 工作之余,她喜欢萨尔萨舞和巴哈塔舞。

时间戳记:

更多来自 AWS机器学习