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

Amazon Simple Storage Service (S3)
Amazon Lambda
Amazon Bedrock
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")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭