Select your cookie preferences

We use essential cookies and similar tools that are necessary to provide our site and services. We use performance cookies to collect anonymous statistics, so we can understand how customers use our site and make improvements. Essential cookies cannot be deactivated, but you can choose “Customize” or “Decline” to decline performance cookies.

If you agree, AWS and approved third parties will also use cookies to provide useful site features, remember your preferences, and display relevant content, including relevant advertising. To accept or decline all non-essential cookies, choose “Accept” or “Decline.” To make more detailed choices, choose “Customize.”

如何智能的解决海量文档处理

Amazon Simple Storage Service (S3)
Amazon Lambda
Amazon Bedrock
2024-11-18
0
0
企业常常需要**处理海量文档**,而从非结构化数据源中提取洞察是一项繁琐耗时、易出错的手工任务。但**智能文档处理(Intelligent Document Processing,简称 IDP)技术**正在彻底改变这一现状。 **本文将演示如何用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows 构建 IDP 工作流,帮您自动从海量文档中提取并处理数据**。通过这项**全托管服务**,您能够在可视化构建器中使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 与其他服务,实现迅速根据业务需求调整工作流程,并扩展文档处理能力,以适应不断变化的业务场景。 ### **解决方案概述** 为了实现可扩展性和成本效益,该方案使用了**[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)技术和托管服务**。除 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows 外,还使用了以下服务: * **[Amazon Textract](https://aws.amazon.com/cn/textract/?trk=cndc-detail)**:自动提取打印文本、手写体和数据。 * **[Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail)**:可存储从任何地方检索数据的对象。 * **[Amazon SNS](https://aws.amazon.com/cn/sns/?trk=cndc-detail)**:一种高度可用、持久、安全和全面管理的发布和订阅消息传递服务,用于解耦微服务、分布式系统和[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序。 * **Amazon Lambda**:一种计算服务,可根据数据变化、应用程序状态变化或用户操作等触发因素运行代码。由于 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 和 [Amazon SNS](https://aws.amazon.com/cn/sns/?trk=cndc-detail) 等服务可以直接触发 Amazon Lambda 函数,因此您可以构建各种实时[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)数据处理系统。 * **[Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail)**:一种[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)、NoSQL、完全托管的数据库,其性能可达到个位数毫秒级。 ### **解决方案架构** 解决方案包含以下步骤: 1. 用户将需要分析的 PDF 上传到 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail)。 2. [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 上传会触发 Amazon Lambda 函数的执行。 3. 该函数调用 [Amazon Textract](https://aws.amazon.com/cn/textract/?trk=cndc-detail) 以批处理模式从 PDF 中提取文本。 4. 工作完成后,[Amazon Textract](https://aws.amazon.com/cn/textract/?trk=cndc-detail) 会发送 SNS 通知。 5. Amazon Lambda 函数读取 [Amazon Textract](https://aws.amazon.com/cn/textract/?trk=cndc-detail) 的响应,并调用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows 对文档进行分类。 6. 分类结果存储在 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 中,并发送到目标 Amazon Lambda 函数。 7. 目标 Amazon Lambda 函数调用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows,根据提供的文档类别提取和分析数据。 8. 提取和分析的结果存储在 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 中。 此工作流程如下图所示。 ![image.png](https://dev-media.amazoncloud.cn/3afe4d1287ef42d68e23746c6a52cfec_image.png "image.png") 下文将深入探讨**如何使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows 构建 IDP 工作流。** ### **准备条件** 要完成本文章中描述的工作,请确保在本地环境中完成以下准备条件: * 具有访问控制台和执行 Amazon Command Line Interface(Amazon CLI)命令的足够权限的亚马逊云科技账户。 * 安装并配置 Amazon CLI。 * 安装 Amazon Serverless Application Model Command Line Interface(Amazon SAM CLI)。 * 访问支持 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows 的亚马逊云科技区域。 * 要获得 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 大模型上 Anthropic Claude 3 Sonnet 的模型访问权限,请按照 Access [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) foundation models(访问 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 基础模型)中的说明进行操作。 ### **实施时间** | 完成时间 | 60分钟 | | --- | --- | | 清理时间 | 20分钟 | ### **部署解决方案** 要部署解决方案,请按照以下步骤操作: 1.复制 GitHub 仓库。 2.从项目根目录运行以下命令,使用 shell 脚本构建和部署解决方案: ``` chmod +x deploy.sh./deploy.sh ``` 3.这将在您的亚马逊云科技账户中触发 Amazon CloudFormation 模板。 ### **测试解决方案** 模板部署成功后,请按照以下步骤测试解决方案: 1.在 Amazon CloudFormation 控制台上,选择已部署的堆栈。 2.选择“资源”选项卡。 3.找到标有 “SourceS3Bucket” 和 “DestinationS3Bucket” 的资源,如下图所示。选择链接,在新标签页中打开 “SourceS3Bucket”。 ![image.png](https://dev-media.amazoncloud.cn/307e74afdb954d42a01da08de5f64760_image.png "image.png") 4.选择上传,然后添加文件夹; 5.在 “sample_files” 下选择 “customer123” 文件夹,然后选择上传。 或者,也可以使用以下 Amazon CLI 命令从项目根目录上传文件夹: ``` amazon web services s3 sync ./sample_files/customer123 s3://[SourceS3Bucket_NAME]/customer123 ``` 几分钟后,上传的文件将得到处理。要查看结果,请按以下步骤操作: 1.打开 “DestinationS3Bucket”。 2.在 “customer123” 下,你应该能看到一个处理作业文件的文件夹。使用控制台或以下 Amazon CLI 命令下载并查看本地文件。 ``` amazon web services s3 sync s3://[DestinationS3Bucket_NAME]/customer123 ./result_files/customer123 ``` 在 “customer123” 文件夹中,你会看到几个子文件夹,如下所示: ``` customer123 └── [Long Textract Job ID] ├── classify_response.txt   ├── input_doc.txt   └── FOR_REVIEW     ├── pages_0.txt   └── report.txt └── [Long Textract Job ID]   ├── classify_response.txt   ├── input_doc.txt   └── URLA_1003       ├── pages_0.json   ├── pages_0.txt     └── report.txt └── [Long Textract Job ID]   ├── classify_response.txt ├── input_doc.txt   └── BANK_STATEMENT     ├── pages_0.json     ├── pages_0.txt     └── report.txt └── [Long Textract Job ID]   ├── classify_response.txt     ├── input_doc.txt   └── DRIVERS_LICENSE     ├── pages_0.json     ├── pages_0.txt       └── report.txt ``` ### **工作原理** 文档文本提取后,会连同类别列表一起发送到分类提示流程,如下图所示: ![image.png](https://dev-media.amazoncloud.cn/a52c700db6914a79b75c660764514206_image.png "image.png") Amazon Lambda 函数通过使用 API 来识别描述中包含类定义的现有提示流,从而生成类列表。通过这种方法,我们可以添加支持新文档类的新提示流,从而将解决方案扩展到新的文档类型,如下图所示: ![image.png](https://dev-media.amazoncloud.cn/5065bfd3ce4e4daebb0d1f22707b176e_image.png "image.png") 对于每种文档类型,您都可以实施适合该文档类型的提取和分析流程。下图显示了 “URLA\_1003” 流程中的一个示例流程。在这种情况下,使用一个提示符将文本转换为标准化的 .json 格式,然后使用第二个提示符分析该 .json 文档,以生成一份报告提交给处理代理。 ![image.png](https://dev-media.amazoncloud.cn/cb42b765ab47408ab5dd1e407674c161_image.png "image.png") ### **使用 Amazon Bedrock Prompt Flows 扩展解决方案** 想要在不更改底层代码的情况下适应新的用例,请按照以下步骤使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows。 #### **创建新提示** 从下载的文件中查找名为 “FOR_REVIEW” 的文件夹。该文件夹包含经过处理但不适合现有类别的文档。打开 report.txt,查看建议的文档类别和建议的 .json 模板。 1.在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的导航窗格中,打开提示管理并选择创建提示,如下图所示: ![image.png](https://dev-media.amazoncloud.cn/bdd714ad4285404585a8de3c18213d2f_image.png "image.png") 2.将新提示命名为 IDP_PAYSTUB_JSON,然后选择创建。 3.在提示框中输入以下文本。将此处的 COPY YOUR JSON 替换为 .txt 文件中的 .json 模板。 ``` Analyze the provided paystub <PAYSTUB> {{doc_text}} </PAYSTUB> Provide a structured JSON object containing the following information: [COPY YOUR JSON HERE] ``` 下图演示了这一步骤。 ![image.png](https://dev-media.amazoncloud.cn/8d17806cbc1f4a04b20a210dfc9dd8d7_image.png "image.png") 4.选择“选择模型”,然后选择 “Anthropic Claude 3 Sonnet”。 5.选择保存草稿,保存更改。 6.要测试您的提示,请打开 “FOR_REVIEW” 文件夹中的 “pages_\[n].txt”,并将内容复制到 “doc_text” 输入框中。选择运行,模型应返回响应。 下图演示了这一步骤。 ![image.png](https://dev-media.amazoncloud.cn/93ebf583a11a49f28506c4850e1dade0_image.png "image.png") 7.对结果满意后,选择创建版本。请注意版本号,因为在下一节中会用到它。 #### **创建提示流程** 现在,我们将使用上一节创建的提示创建一个提示流程。 1.在导航菜单中选择提示流,然后选择创建提示流,如下图所示: ![image.png](https://dev-media.amazoncloud.cn/bf98e77c6c8c40ae8aa3404fc7b6b770_image.png "image.png") 2.将新流量命名为 IDP_PAYSTUB。 3.选择创建并使用新服务角色,然后选择保存。 接下来,使用以下步骤创建流程。完成后,流程应与下面的截图相似。 ![image.png](https://dev-media.amazoncloud.cn/eb5f519273c441acb9cd8884a81dba54_image.png "image.png") 1.配置流量输入节点: * 选择流量输入节点,然后选择配置。 * 选择对象作为类型。这意味着流程调用将期望接收一个JSON对象。 2.添加 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 检索节点: * 在 Prompt 流程构建器导航窗格中,选择节点选项卡。 * 在中心窗格中将 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 检索节点拖入流程中。 * 在“提示”流程生成器窗格中,选择“配置”选项卡。 * 输入 get_doc_text 作为节点名称。 * 展开输入,将 objectKey 的输入表达式设置为 $.data.doc_text_s3key。 * 从 Flow 输入节点的输出拖动连接到该节点的 objectKey 输入。 3.添加提示节点: * 在中心窗格中将“提示”节点拖到流程中。 * 在 “Prompt 流程创建器”窗格中,选择“配置”选项卡。 * 输入 map_too_json 作为节点名称。 * 从“提示管理”中选择“使用提示”。 * 从下拉菜单中选择 IDP_PAYSTUB_JSON。 * 选择你之前注意到的版本。 * 从 get_doc_text 节点的输出到该节点的 doc_text 输入拖动一个连接。 4.添加 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 存储节点: * 在 Prompt 流程生成器导航窗格中,选择节点选项卡。 * 在中心窗格中将 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 存储节点拖入流程。 * 在“提示”流程生成器窗格中,选择“配置”选项卡。 * 输入 save_json 作为节点名称。 * 展开输入,将 objectKey 的输入表达式设置为 $.data.JSON_s3key。 * 从 Flow 输入节点的输出拖动连接到此节点的 objectKey 输入。 * 从 map_too_json 节点的输出到此节点的内容输入拖动一个连接。 5.配置流量输入节点: * 从 save_json 节点的输出到此节点的输入拖动一个连接。 6.选择“保存”保存流程。您的流程现在应该可以进行测试了: * 要测试流程,请在右侧的测试提示流程窗格中输入以下 .json 对象。选择运行,流程将返回一个模型响应。 * 对结果满意后,选择保存并退出。 ``` { "doc_text_s3key": "[PATH TO YOUR TEXT FILE IN S3].txt", "JSON_s3key": "[PATH TO YOUR TEXT FILE IN S3].json" } ``` 要获取文件路径,请按以下步骤操作: 1. 导航至 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 中的 FOR_REVIEW,选择 pages_\[n].txt 文件。 2. 选择“属性”选项卡。 3. 选择键值左侧的复制图标,复制键路径,如下截图所示。请确保如前所述,在第二行输入中将 .txt 替换为 .json。 ![image.png](https://dev-media.amazoncloud.cn/7cc7ddf7d2cc4653859750de486111d6_image.png "image.png") #### **发布版本和别名** 1. 在流程管理屏幕上,选择发布版本。顶部会出现成功提示。 2. 在屏幕顶部,选择创建别名。 3. 为别名输入 latest。 4. 选择使用现有版本来关联此别名。从下拉菜单中选择刚刚发布的版本。 5. 选择创建别名,顶部会出现成功提示。 6. 获取要在下面步骤中使用的 FlowId 和 AliasId: * 选择刚刚创建的别名。 * 从 ARN 中复制 FlowId 和 AliasId。 ![image.png](https://dev-media.amazoncloud.cn/f1ed392612de4a1fab716b511f9a0ceb_image.png "image.png") #### **将新类添加到 Amazon DynamoDB** 1.打开亚马逊云科技管理控制台并导航到 [Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail) 服务。 2.选择表 document-processing-bedrock-prompt-flow-IDP_CLASS_LIST。 3.选择“操作”,然后选择“创建项目”。 4.选择 JSON 视图以输入项目数据。 5.将以下 JSON 粘贴到编辑器中: ``` {   "class_name": {     "S": "PAYSTUB"   },   "expected_inputs": {     "S": "Should contain Gross Pay, Net Pay, Pay Date "   }, "flow_alias_id": {     "S": "[Your flow Alias ID]"   },   "flow_id": {     "S": "[Your flow ID]"   },   "flow_name": {     "S": "[The name of your flow]" } } ``` 6.查看 JSON,确保所有细节正确无误。 7.选择“创建项目”,将新类添加到 [Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail) 表中。 #### **重复上传测试文件进行测试** 使用控制台重复将 customer123 文件夹中的 paystub.jpg 文件上传到 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail)。或者在命令行中输入以下命令: ``` amazon web services s3 cp ./sample_files/customer123/paystub.jpeg s3://[INPUT_BUCKET_NAME]/customer123/ ``` 几分钟后,检查输出位置中的报告,即可看到您已成功添加了对新文档类型的支持。 ### **清理** 使用这些步骤删除您创建的资源,以避免您的亚马逊云科技账户产生费用: 1.清空 SourceS3Bucket 和 DestinationS3Bucket 桶,包括所有版本。 2.使用以下 shell 脚本从您的帐户中删除 Amazon CloudFormation 堆栈和测试资源: ``` chmod +x cleanup.sh ./cleanup.sh ``` 3.返回“使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 提示流扩展解决方案”部分并执行以下步骤: * **在创建提示流部分**:选择您创建的流程 idp_paystub,然后选择删除;按照说明永久删除流程。 * **在“创建新提示”部分**:选择您创建的提示 paystub_json,然后选择删除;按照说明永久删除提示。 ### **总结** **该解决方案演示了如何使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows 来部署和扩展可扩展的低代码 IDP 工作流**。利用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Prompt Flows 的灵活性,企业可以快速实施和调整其文档处理工作流,以满足不断变化的业务需求。借助其低代码特性,业务用户和开发人员无需大量编程知识即可创建、修改和扩展 IDP 工作流,显著减少了部署新文档处理功能或调整现有功能所需的时间和资源。 采用这种集成的 IDP 解决方案,各个领域的企业能够迅速**推进数字化转型、提升业务运营效率、增强从文档流程中提取关键信息的能力**。 您可阅读以下资源进一步探索和了解技术信息: > **[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 提示工程指南** > > https\://docs.aws.amazon.com/bedrock/latest/userguide/prompt-engineering-guidelines.html?trk=cndc-detail > > **使用[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)实施高级提示工程** > > https\://aws.amazon.com/cn/blogs/machine-learning/implementing-advanced-prompt-engineering-with-amazon-bedrock/?trk=cndc-detail > > **使用亚马逊云科技人工智能服务进行智能文档处理**\ > > https\://catalog.workshops.aws/intelligent-document-processing/en-US?trk=cndc-detail ![image.png](https://dev-media.amazoncloud.cn/287326892a6e40f7bc5824d02b59ff93_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/6b82d0dac10e42a5aa40a6a1f5f41031_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/59944b3bcc9b458e9be897caabddba1f_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/d90d3335e401489ca6685b7ab043908a_image.png "image.png")

企业常常需要处理海量文档,而从非结构化数据源中提取洞察是一项繁琐耗时、易出错的手工任务。但智能文档处理(Intelligent Document Processing,简称 IDP)技术正在彻底改变这一现状。

本文将演示如何用 Amazon Bedrock Prompt Flows 构建 IDP 工作流,帮您自动从海量文档中提取并处理数据。通过这项全托管服务,您能够在可视化构建器中使用 Amazon Bedrock 与其他服务,实现迅速根据业务需求调整工作流程,并扩展文档处理能力,以适应不断变化的业务场景。

解决方案概述

为了实现可扩展性和成本效益,该方案使用了**无服务器技术和托管服务**。除 Amazon Bedrock Prompt Flows 外,还使用了以下服务:

  • Amazon Textract:自动提取打印文本、手写体和数据。

  • Amazon S3:可存储从任何地方检索数据的对象。

  • Amazon SNS:一种高度可用、持久、安全和全面管理的发布和订阅消息传递服务,用于解耦微服务、分布式系统和无服务器应用程序。

  • Amazon Lambda:一种计算服务,可根据数据变化、应用程序状态变化或用户操作等触发因素运行代码。由于 Amazon S3Amazon SNS 等服务可以直接触发 Amazon Lambda 函数,因此您可以构建各种实时无服务器数据处理系统。

  • Amazon DynamoDB:一种无服务器、NoSQL、完全托管的数据库,其性能可达到个位数毫秒级。

解决方案架构

解决方案包含以下步骤:

  1. 用户将需要分析的 PDF 上传到 Amazon S3

  2. Amazon S3 上传会触发 Amazon Lambda 函数的执行。

  3. 该函数调用 Amazon Textract 以批处理模式从 PDF 中提取文本。

  4. 工作完成后,Amazon Textract 会发送 SNS 通知。

  5. Amazon Lambda 函数读取 Amazon Textract 的响应,并调用 Amazon Bedrock Prompt Flows 对文档进行分类。

  6. 分类结果存储在 Amazon S3 中,并发送到目标 Amazon Lambda 函数。

  7. 目标 Amazon Lambda 函数调用 Amazon Bedrock Prompt Flows,根据提供的文档类别提取和分析数据。

  8. 提取和分析的结果存储在 Amazon S3 中。

此工作流程如下图所示。

image.png

下文将深入探讨如何使用 Amazon Bedrock Prompt Flows 构建 IDP 工作流。

准备条件

要完成本文章中描述的工作,请确保在本地环境中完成以下准备条件:

  • 具有访问控制台和执行 Amazon Command Line Interface(Amazon CLI)命令的足够权限的亚马逊云科技账户。

  • 安装并配置 Amazon CLI。

  • 安装 Amazon Serverless Application Model Command Line Interface(Amazon SAM CLI)。

  • 访问支持 Amazon Bedrock Prompt Flows 的亚马逊云科技区域。

  • 要获得 Amazon Bedrock 大模型上 Anthropic Claude 3 Sonnet 的模型访问权限,请按照 Access Amazon Bedrock foundation models(访问 Amazon Bedrock 基础模型)中的说明进行操作。

实施时间

完成时间60分钟
清理时间20分钟

部署解决方案

要部署解决方案,请按照以下步骤操作:

1.复制 GitHub 仓库。

2.从项目根目录运行以下命令,使用 shell 脚本构建和部署解决方案:

chmod +x deploy.sh./deploy.sh

3.这将在您的亚马逊云科技账户中触发 Amazon CloudFormation 模板。

测试解决方案

模板部署成功后,请按照以下步骤测试解决方案:

1.在 Amazon CloudFormation 控制台上,选择已部署的堆栈。

2.选择“资源”选项卡。

3.找到标有 “SourceS3Bucket” 和 “DestinationS3Bucket” 的资源,如下图所示。选择链接,在新标签页中打开 “SourceS3Bucket”。

image.png

4.选择上传,然后添加文件夹;

5.在 “sample_files” 下选择 “customer123” 文件夹,然后选择上传。

或者,也可以使用以下 Amazon CLI 命令从项目根目录上传文件夹:

amazon web services s3 sync ./sample_files/customer123 s3://[SourceS3Bucket_NAME]/customer123

几分钟后,上传的文件将得到处理。要查看结果,请按以下步骤操作:

1.打开 “DestinationS3Bucket”。

2.在 “customer123” 下,你应该能看到一个处理作业文件的文件夹。使用控制台或以下 Amazon CLI 命令下载并查看本地文件。

amazon web services s3 sync s3://[DestinationS3Bucket_NAME]/customer123 ./result_files/customer123

在 “customer123” 文件夹中,你会看到几个子文件夹,如下所示:

customer123
└── [Long Textract Job ID]
    ├── classify_response.txt  
    ├── input_doc.txt  
    └── FOR_REVIEW    
        ├── pages_0.txt   
        └── report.txt
└── [Long Textract Job ID]   
    ├── classify_response.txt  
    ├── input_doc.txt   
    └── URLA_1003      
        ├── pages_0.json   
        ├── pages_0.txt     
        └── report.txt
└── [Long Textract Job ID]   
    ├── classify_response.txt 
    ├── input_doc.txt   
    └── BANK_STATEMENT     
        ├── pages_0.json    
        ├── pages_0.txt    
        └── report.txt
└── [Long Textract Job ID]   
    ├── classify_response.txt    
    ├── input_doc.txt   
    └── DRIVERS_LICENSE    
        ├── pages_0.json     
        ├── pages_0.txt      
        └── report.txt

工作原理

文档文本提取后,会连同类别列表一起发送到分类提示流程,如下图所示:

image.png

Amazon Lambda 函数通过使用 API 来识别描述中包含类定义的现有提示流,从而生成类列表。通过这种方法,我们可以添加支持新文档类的新提示流,从而将解决方案扩展到新的文档类型,如下图所示:

image.png

对于每种文档类型,您都可以实施适合该文档类型的提取和分析流程。下图显示了 “URLA_1003” 流程中的一个示例流程。在这种情况下,使用一个提示符将文本转换为标准化的 .json 格式,然后使用第二个提示符分析该 .json 文档,以生成一份报告提交给处理代理。

image.png

使用 Amazon Bedrock Prompt Flows 扩展解决方案

想要在不更改底层代码的情况下适应新的用例,请按照以下步骤使用 Amazon Bedrock Prompt Flows。

创建新提示

从下载的文件中查找名为 “FOR_REVIEW” 的文件夹。该文件夹包含经过处理但不适合现有类别的文档。打开 report.txt,查看建议的文档类别和建议的 .json 模板。

1.在 Amazon Bedrock 的导航窗格中,打开提示管理并选择创建提示,如下图所示:

image.png

2.将新提示命名为 IDP_PAYSTUB_JSON,然后选择创建。

3.在提示框中输入以下文本。将此处的 COPY YOUR JSON 替换为 .txt 文件中的 .json 模板。

Analyze the provided paystub
<PAYSTUB>
{{doc_text}}
</PAYSTUB>

Provide a structured JSON object containing the following information:

[COPY YOUR JSON HERE]

下图演示了这一步骤。

image.png

4.选择“选择模型”,然后选择 “Anthropic Claude 3 Sonnet”。

5.选择保存草稿,保存更改。

6.要测试您的提示,请打开 “FOR_REVIEW” 文件夹中的 “pages_[n].txt”,并将内容复制到 “doc_text” 输入框中。选择运行,模型应返回响应。

下图演示了这一步骤。

image.png

7.对结果满意后,选择创建版本。请注意版本号,因为在下一节中会用到它。

创建提示流程

现在,我们将使用上一节创建的提示创建一个提示流程。

1.在导航菜单中选择提示流,然后选择创建提示流,如下图所示:

image.png

2.将新流量命名为 IDP_PAYSTUB。

3.选择创建并使用新服务角色,然后选择保存。

接下来,使用以下步骤创建流程。完成后,流程应与下面的截图相似。

image.png

1.配置流量输入节点:

  • 选择流量输入节点,然后选择配置。
  • 选择对象作为类型。这意味着流程调用将期望接收一个JSON对象。

2.添加 Amazon S3 检索节点:

  • 在 Prompt 流程构建器导航窗格中,选择节点选项卡。
  • 在中心窗格中将 Amazon S3 检索节点拖入流程中。
  • 在“提示”流程生成器窗格中,选择“配置”选项卡。
  • 输入 get_doc_text 作为节点名称。
  • 展开输入,将 objectKey 的输入表达式设置为 $.data.doc_text_s3key。
  • 从 Flow 输入节点的输出拖动连接到该节点的 objectKey 输入。

3.添加提示节点:

  • 在中心窗格中将“提示”节点拖到流程中。
  • 在 “Prompt 流程创建器”窗格中,选择“配置”选项卡。
  • 输入 map_too_json 作为节点名称。
  • 从“提示管理”中选择“使用提示”。
  • 从下拉菜单中选择 IDP_PAYSTUB_JSON。
  • 选择你之前注意到的版本。
  • 从 get_doc_text 节点的输出到该节点的 doc_text 输入拖动一个连接。

4.添加 Amazon S3 存储节点:

  • 在 Prompt 流程生成器导航窗格中,选择节点选项卡。
  • 在中心窗格中将 Amazon S3 存储节点拖入流程。
  • 在“提示”流程生成器窗格中,选择“配置”选项卡。
  • 输入 save_json 作为节点名称。
  • 展开输入,将 objectKey 的输入表达式设置为 $.data.JSON_s3key。
  • 从 Flow 输入节点的输出拖动连接到此节点的 objectKey 输入。
  • 从 map_too_json 节点的输出到此节点的内容输入拖动一个连接。

5.配置流量输入节点:

  • 从 save_json 节点的输出到此节点的输入拖动一个连接。

6.选择“保存”保存流程。您的流程现在应该可以进行测试了:

  • 要测试流程,请在右侧的测试提示流程窗格中输入以下 .json 对象。选择运行,流程将返回一个模型响应。
  • 对结果满意后,选择保存并退出。
{
"doc_text_s3key": "[PATH TO YOUR TEXT FILE IN S3].txt",
"JSON_s3key": "[PATH TO YOUR TEXT FILE IN S3].json"
}

要获取文件路径,请按以下步骤操作:

  1. 导航至 Amazon S3 中的 FOR_REVIEW,选择 pages_[n].txt 文件。

  2. 选择“属性”选项卡。

  3. 选择键值左侧的复制图标,复制键路径,如下截图所示。请确保如前所述,在第二行输入中将 .txt 替换为 .json。

image.png

发布版本和别名

  1. 在流程管理屏幕上,选择发布版本。顶部会出现成功提示。

  2. 在屏幕顶部,选择创建别名。

  3. 为别名输入 latest。

  4. 选择使用现有版本来关联此别名。从下拉菜单中选择刚刚发布的版本。

  5. 选择创建别名,顶部会出现成功提示。

  6. 获取要在下面步骤中使用的 FlowId 和 AliasId:

  • 选择刚刚创建的别名。

  • 从 ARN 中复制 FlowId 和 AliasId。

image.png

将新类添加到 Amazon DynamoDB

1.打开亚马逊云科技管理控制台并导航到 Amazon DynamoDB 服务。

2.选择表 document-processing-bedrock-prompt-flow-IDP_CLASS_LIST。

3.选择“操作”,然后选择“创建项目”。

4.选择 JSON 视图以输入项目数据。

5.将以下 JSON 粘贴到编辑器中:

{   
   "class_name": {    
       "S": "PAYSTUB"  
   },  
   "expected_inputs": {     
       "S": "Should contain Gross Pay, Net Pay, Pay Date "   
   }, 
   "flow_alias_id": {     
       "S": "[Your flow Alias ID]"   
   },  
   "flow_id": {     
       "S": "[Your flow ID]"   
   },   
   "flow_name": {    
       "S": "[The name of your flow]" 
   }
}

6.查看 JSON,确保所有细节正确无误。

7.选择“创建项目”,将新类添加到 Amazon DynamoDB 表中。

重复上传测试文件进行测试

使用控制台重复将 customer123 文件夹中的 paystub.jpg 文件上传到 Amazon S3。或者在命令行中输入以下命令:

amazon web services s3 cp ./sample_files/customer123/paystub.jpeg s3://[INPUT_BUCKET_NAME]/customer123/

几分钟后,检查输出位置中的报告,即可看到您已成功添加了对新文档类型的支持。

清理

使用这些步骤删除您创建的资源,以避免您的亚马逊云科技账户产生费用:

1.清空 SourceS3Bucket 和 DestinationS3Bucket 桶,包括所有版本。

2.使用以下 shell 脚本从您的帐户中删除 Amazon CloudFormation 堆栈和测试资源:

chmod +x cleanup.sh
./cleanup.sh

3.返回“使用 Amazon Bedrock 提示流扩展解决方案”部分并执行以下步骤:

  • 在创建提示流部分:选择您创建的流程 idp_paystub,然后选择删除;按照说明永久删除流程。

  • 在“创建新提示”部分:选择您创建的提示 paystub_json,然后选择删除;按照说明永久删除提示。

总结

该解决方案演示了如何使用 Amazon Bedrock Prompt Flows 来部署和扩展可扩展的低代码 IDP 工作流。利用 Amazon Bedrock Prompt Flows 的灵活性,企业可以快速实施和调整其文档处理工作流,以满足不断变化的业务需求。借助其低代码特性,业务用户和开发人员无需大量编程知识即可创建、修改和扩展 IDP 工作流,显著减少了部署新文档处理功能或调整现有功能所需的时间和资源。

采用这种集成的 IDP 解决方案,各个领域的企业能够迅速推进数字化转型、提升业务运营效率、增强从文档流程中提取关键信息的能力

您可阅读以下资源进一步探索和了解技术信息:

Amazon Bedrock 提示工程指南

https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-engineering-guidelines.html?trk=cndc-detail

使用Amazon Bedrock实施高级提示工程

https://aws.amazon.com/cn/blogs/machine-learning/implementing-advanced-prompt-engineering-with-amazon-bedrock/?trk=cndc-detail

使用亚马逊云科技人工智能服务进行智能文档处理\

https://catalog.workshops.aws/intelligent-document-processing/en-US?trk=cndc-detail

image.png

image.png

image.png

image.png

目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭