使用 Amazon Bedrock 和 Anthropic Claude 的智能文档处理 机器学习博
使用 Amazon Bedrock 和 Anthropic Claude 进行智能文档处理
关键要点
使用 Amazon Bedrock 和 Anthropic Claude 进行智能文档处理的重点
本文将介绍如何利用 Amazon Bedrock 和 Anthropic Claude 3 Sonnet 模型来开发智能文档处理解决方案。通过生成性人工智能增强的文档处理技术组合,企业能够改善其文档处理流程,提高自动化程度,降低成本,并提升决策效率。本文还详述了解决方案的架构、步骤和所需的 AWS 服务,帮助读者在实际应用中更好地理解和实施该技术。
生成性人工智能AI不仅可以促进创新、内容创造和提升客户服务,还能简化操作流程,提高各个领域的生产力。为了充分利用这项变革性技术,Amazon Bedrock 提供了一项完全管理的服务,这项服务整合了来自主要 AI 公司的高效基础模型FMs,如 AI21 Labs、Anthropic、Cohere、Meta、Stability AI、Mistral AI 和 Amazon。通过单一 API 获取这些先进模型并支持重视安全性、隐私权和负责任的人工智能的生成性 AI 应用开发,Amazon Bedrock 提供了创新的新途径,并改善整体产品和服务。
企业客户可以利用生成性 AI 强化的智能文档处理IDP来释放显著价值。通过将生成性 AI 功能融入 IDP 解决方案,组织能够彻底改变其文档处理工作流程,实现卓越的自动化和可靠性。这一组合能够实现先进的文档理解、高效的结构化数据提取、文档自动分类以及从非结构化文本中无缝检索信息。通过这些功能,组织能够实现可扩展、高效且高价值的文档处理,推动业务转型和竞争力,提高生产力,降低成本并增强决策能力。
在本文中,我们将展示如何在 Amazon Bedrock 上使用 Anthropic Claude 3 Sonnet 开发 IDP 解决方案。我们将演示如何从扫描的文件中提取数据并将其插入到数据库中。
Anthropic Claude 3 Sonnet 模型经过速度和效率的最佳化,特别适合智能任务,尤其是企业工作负载。它还具备先进的视觉能力,展现出对各种视觉格式的理解能力,包括照片、图表、图形和技术图表。虽然我们使用 Anthropic Claude 3 Sonnet 模型来演示该解决方案,但如果您的用例需要,您也可以使用 Haiku 和 Opus 模型。
解决方案概述
该解决方案利用 Amazon Bedrock 和强大的 Anthropic Claude 3 Sonnet 模型来启用 IDP 功能。架构由多个与 Amazon Bedrock 无缝集成的 AWS 服务组成,实现从扫描文件中高效、准确地提取数据。
以下图示展示了解决方案架构。
解决方案包括以下步骤:
整个过程由扫描的文档上传并存储在 Amazon S3 存储桶中开始,这会在对象上传时触发 S3 事件通知。该事件触发一个 AWS Lambda 函数,该函数负责调用 Amazon Bedrock 上的 Anthropic Claude 3 Sonnet 模型。配备先进多模态能力的 Anthropic Claude 3 Sonnet 模型处理扫描文档,并以结构化的 JSON 格式提取相关数据。从 Anthropic Claude 3 模型提取的数据发送到 Amazon SQS 队列中。Amazon SQS 作为缓冲区,使各组件能在不直接耦合的情况下可靠地发送和接收消息,提供系统的可扩展性和容错能力。另一个 Lambda 函数消费 SQS 队列中的消息,解析 JSON 数据,并将提取的键值对存储到 Amazon DynamoDB 表中,以便检索和进一步处理。这一无伺服器架构充分利用了 AWS 服务的可扩展性和成本效益,同时借助 Anthropic Claude 3 Sonnet 的前沿智能。通过将 AWS 的强大基础架构与 Anthropic 的基础模型相结合,该解决方案使组织能够简化其文档处理工作流程,提取有价值的见解,提升整体运行效率。
该解决方案使用以下服务和功能:
Amazon Bedrock 是一个完全管理的服务,提供大型语言模型LLMs的访问,使开发人员能够构建和部署自订 AI 应用程序。Anthropic Claude 3 系列 提供多种适应不同需求的模型。提供三个选择Opus、Sonnet 和 Haiku您可以选择最适合智能性、速度和成本之间的平衡。这些模型在理解复杂的企业内容方面表现出色,包括图表、图形、技术图表和报告。Amazon DynamoDB 是一种完全管理的无伺服器 NoSQL 数据库服务。AWS Lambda 是一项无伺服器计算服务,允许您运行代码,而无需配置或管理伺服器。Amazon SQS 是一项完全管理的消息队列服务。Amazon S3 是一项高可扩展性、耐用性和安全性的对象存储服务。在本解决方案中,我们使用 Amazon Bedrock 内的生成性 AI 能力来高效提取数据。撰写本文时,Anthropic Claude 3 Sonnet 仅接受图像作为输入。支持的文件类型为 GIF、JPEG、PNG 和 WebP。您可以选择在扫描过程中保存图像或将 PDF 转换为图像。

您还可以通过实施人机协作和模型评估功能来增强此解决方案。本文的目的是展示如何使用 Amazon Bedrock 构建 IDP 解决方案,但要将其用作生产级解决方案,还需考虑其他因素,例如测试边缘场景、更好的异常处理、尝试其他提示技术、模型微调、模型评估、吞吐量要求、需支持的并发请求数量,以及仔细考虑成本和延迟的影响。
前置条件
在进行此解决方案之前,需要具备以下前置条件。本文采用的 AWS 区域为 useast1。有关可用区域的详细资讯,请参见 Amazon Bedrock 端点和配额。
一个具有 AWS 帐户 和 AWS 身份和访问管理 (IAM) 使用者的 AWS 帐户,此使用者拥有 DynamoDB、Lambda、Amazon Bedrock、Amazon S3、Amazon SQS 和 IAM 的权限。存取 Amazon Bedrock 中的 Anthropic Claude 3 Sonnet 模型的权限。请参见 管理模型访问 获取指导。用例和数据集
在我们的例子中,看看一个负责发放出生证明的州政府机构。该机构可以通过多种方式接收出生证明申请,例如在线申请、在实体地点完成的表单以及邮寄的完成的纸质申请。如今,大多数机构花费大量时间和资源来手动提取申请详细信息。该过程始于扫描申请表,手动提取详细信息,然后将其输入到最终将数据存储到数据库中的应用程序中。这一过程耗时、低效且不具可扩展性,且容易出错。此外,如果申请表是以其他语言如西班牙语填写的,则会增加复杂性。
在这次演示中,我们使用了出生证明申请表的扫描样本图像。这些表格不包含任何真实的个人数据。提供两个示例:一份是以英文手写填写的,另一份是以西班牙语印刷填写的。请将这些图像保存为 jpeg 文件到您的计算机中,然后稍后测试此解决方案需要它们。
englishhandwrittenjpegspanishprintedjpeg创建 S3 存储桶
在 Amazon S3 控制台中,创建一个具有唯一名称的新存储桶例如,bedrockclaude3idp{随机字符使其全局唯一},并保持其他设置为默认。在存储桶中创建一个名为 images 的文件夹,以及一个名为 birthcertificates 的子文件夹。
创建 SQS 队列
在 Amazon SQS 控制台中,创建一个类型为 Standard 的队列,提供名称例如,bedrockidpextracteddata,并保留其他设置为默认。
创建 Lambda 函数以调用 Amazon Bedrock 模型
在 Lambda 控制台中,创建一个函数例如,invokebedrockclaude3,选择 Python 312 作为运行时,并保持剩余设置为默认。稍后,您将配置此函数在每次有新图像上传到 S3 存储桶时触发。您可以从 invokebedrockclaude3py 下载整个 Lambda 函数代码。用下载的文件中的代码替换 lambdafunctionpy 文件的内容。请确保将 {SQS URL} 替换为您之前创建的 SQS 队列的 URL,然后选择 部署。
Lambda 函数应执行以下操作:
pythons3 = boto3client(s3)sqs = boto3client(sqs)bedrock = boto3client(bedrockruntime regionname=useast1)QUEUEURL = {SQS URL}MODELID = anthropicclaude3sonnet20240229v10
飞鱼加速器永久免费版以下代码使用 getobject 方法从 S3 存储桶中获取图像,并将其转换为 base64 数据:
pythonimagedata = s3getobject(Bucket=bucketname Key=objectkey)[Body]read()base64image = base64b64encode(imagedata)decode(utf8
提示工程技术 是释放生成性 AI 应用潜力的关键因素。制作良好结构的提示可以确保 AI 系统的输出准确、相关,且与您的目标对齐,同时降低潜在风险。
将 Anthropic Claude 3 模型集成到 Amazon Bedrock IDP 解决方案中,您可以利用模型强大的视觉理解能力,轻松提取文档中的数据。只需将图像或文档作为输入,Anthropic Claude 3 就能理解其内容,无缝提取所需的信息并以人可读的格式呈现。所有 Anthropic Claude 3 模型都能理解非英语语言,如西班牙语、日语和法语。针对特定用例,我们演示如何通过提供适当的提示指令来将西班牙语申请表翻译成英文。
不过,像 Anthropic Claude 3 这样的 LLM 可能会在回应格式上表现出变异性。为了实现一致、结构化的输出,您可以调整提示以指示模型以特定格式返回提取的数据,如带有预定义键的 JSON。这种方法加强了模型输出与后续应用程序的互操作性,并简化数据处理工作流程。
以下是具有特定 JSON 输出格式的提示:
pythonprompt = 这张图像显示的是出生证明申请表。请精确复制表格中的所有相关信息。如对应字段没有信息,请将该字段留空。如果该图像不是出生证明申请表,则只需返回一个空的 JSON 对象。如果申请表未填写,则保持费用属性为空。将任何非英文文本翻译成英文。以以下键,即小括号组织并返回提取的数据:{ applicantDetails{ applicantName dayPhoneNumber address city state zipCode email } mailingAddress{ mailingAddressApplicantName mailingAddress mailingAddressCity mailingAddressState mailingAddressZipCode } relationToApplicant[] purposeOfRequest
BirthCertificateDetails{ nameOnBirthCertificate dateOfBirth sex cityOfBirth countyOfBirth mothersMaidenName fathersName mothersPlaceOfBirth fathersPlaceOfBirth parentsMarriedAtBirth numberOfChildrenBornInSCToMother diffNameAtBirth}fees{ searchFee eachAdditionalCopy expediteFee totalFees }}
通过 Amazon Bedrock API 调用 Anthropic Claude 3 Sonnet 模型。将提示和 base64 图像数据作为参数传入:
pythondef invokeclaude3multimodal(prompt base64imagedata) requestbody = { anthropicversion bedrock20230531 maxtokens 2048 messages [ { role user content [ { type text text prompt } { type image source { type base64 mediatype image/png data base64imagedata } } ] } ] }
try response = bedrockinvokemodel(modelId=MODELID body=jsondumps(requestbody)) return jsonloads(response[body]read())except bedrockexceptionsClientError as err print(f无法调用 Claude 3 Sonnet。原因是 {errresponse[Error][Code]} {errresponse[Error