本文介绍如何利用 Amazon Bedrock 平台上经过优化的 Anthropic Claude 3 Sonnet 模型构建一套高效的智能文档处理(IDP)解决方案。通过本教程,您将了解如何从扫描文档中提取数据,并将结构化信息存入数据库,从而实现生成式 AI 与无服务器架构的深度融合。
文章概要
- 难度:初级(100)
- 预计时长:20 分钟
- 最新更新:近期
生成式 AI 正在推动各行各业的创新与效率提升。Amazon Bedrock 作为一项完全托管服务,集成了先进的 AI 模型,为开发者提供安全、隐私及负责任的 AI 解决方案。本文将展示如何通过整合 Amazon Bedrock 与 Anthropic Claude 3 的多模态能力,构建出适用于企业的智能文档处理(IDP)解决方案,同时借助 AWS Lambda、Amazon S3、Amazon SQS 与 Amazon DynamoDB 实现无服务器架构,提升业务自动化和数据提取处理效率。
技术背景
本方案依托于以下核心技术与服务:
- Amazon Bedrock:调用先进的大语言模型,实现文本与图像的双模态数据处理。
- Anthropic Claude 3 Sonnet:经过速度与效率优化的多模态模型,特别适合企业级的智能任务。
- 生成式 AI:利用 AI 模型实现内容生成、数据提取及自动化处理。
- 无服务器架构:通过 AWS Lambda、Amazon S3、Amazon SQS 和 Amazon DynamoDB 搭建灵活、可扩展的系统。
这些关键词——Amazon Bedrock、Anthropic Claude 3、IDP 解决方案、智能文档处理、生成式 AI、无服务器架构——均是本文的核心内容。
解决方案架构概览
该智能文档处理流程主要分为以下几大步骤:
-
文档上传
将扫描文档上传至 Amazon S3 存储桶中(例如:存储路径images/birth_certificates/
),上传事件触发后自动通知后续处理模块。 -
Lambda 服务调用
上传事件激活 AWS Lambda 服务,该服务调用 Amazon Bedrock 上的 Anthropic Claude 3 模型,针对扫描文档进行数据提取,生成结构化 JSON 数据。 -
数据传输与解析
提取到的数据通过消息传递发送至 Amazon SQS 队列,另一 Lambda 服务从队列中接收消息并解析 JSON 数据,随后将数据写入 Amazon DynamoDB 表中存储备用。
下图展示了整体解决方案的架构示意:
详细步骤解析
1. 上传扫描文档
- 将扫描的文档上传到 Amazon S3 存储桶中的指定目录。
- 上传动作将触发 S3 事件通知,自动激活 Lambda 服务进行后续处理。
2. 调用 Lambda 服务进行数据提取
Lambda 服务 invoke_bedrock_claude3
的主要功能包括:
- 图像读取与编码
python
image_data = s3.get_object(Bucket=bucket_name, Key=object_key)[‘Body’].read()
base64_image = base64.b64encode(image_data).decode(‘utf-8’)
- 调用 Anthropic Claude 3 多模态模型
python
def invoke_claude_3_multimodal(prompt, base64_image_data):
request_body = {
“anthropic_version”: “bedrock-2023-05-31”,
“max_tokens”: 2048,
“messages”: [
{
“role”: “user”,
“content”: [
{
“type”: “text”,
“text”: prompt,
},
{
“type”: “image”,
“source”: {
“type”: “base64”,
“media_type”: “image/png”,
“data”: base64_image_data,
},
},
],
}
],
}
try:
response = bedrock.invoke_model(modelId=MODEL_ID, body=json.dumps(request_body))
return json.loads(response['body'].read())
except bedrock.exceptions.ClientError as err:
print(f"调用模型失败,错误:{err.response['Error']['Code']}:{err.response['Error']['Message']}")
raise
- 消息发送到 SQS 队列
python
def send_message_to_sqs(message_body):
try:
sqs.send_message(QueueUrl=QUEUE_URL, MessageBody=json.dumps(message_body))
except sqs.exceptions.ClientError as e:
print(f”发送消息至 SQS 队列错误:{e.response[‘Error’][‘Code’]}:{e.response[‘Error’][‘Message’]}”)
3. 数据解析与存储到 DynamoDB
在另一 Lambda 服务 insert_into_dynamodb
中,流程如下:
- 从 SQS 队列中获取包含 Anthropic Claude 3 响应的消息。
- 将 JSON 数据解析为各个字段,构建 DynamoDB 表对象:
python
dynamodb = boto3.resource(‘dynamodb’)
table = dynamodb.Table(‘birth_certificates’)
- 使用
put_item
方法存储数据记录:
python
table.put_item(Item={
‘Id’: event_id,
‘applicantName’: applicant_details.get(‘applicantName’, ”),
‘dayPhoneNumber’: applicant_details.get(‘dayPhoneNumber’, ”),
‘address’: applicant_details.get(‘address’, ”),
‘city’: applicant_details.get(‘city’, ”),
‘state’: applicant_details.get(‘state’, ”),
‘zipCode’: applicant_details.get(‘zipCode’, ”),
’email’: applicant_details.get(’email’, ”),
‘mailingAddressApplicantName’: mailing_address.get(‘mailingAddressApplicantName’, ”),
‘mailingAddress’: mailing_address.get(‘mailingAddress’, ”),
‘mailingAddressCity’: mailing_address.get(‘mailingAddressCity’, ”),
‘mailingAddressState’: mailing_address.get(‘mailingAddressState’, ”),
‘mailingAddressZipCode’: mailing_address.get(‘mailingAddressZipCode’, ”),
‘relationToApplicant’: ‘, ‘.join(relation_to_applicant),
‘purposeOfRequest’: data.get(‘purposeOfRequest’, ”),
‘nameOnBirthCertificate’: birth_certificate_details.get(‘nameOnBirthCertificate’, ”),
‘dateOfBirth’: birth_certificate_details.get(‘dateOfBirth’, ”),
‘sex’: birth_certificate_details.get(‘sex’, ”),
‘cityOfBirth’: birth_certificate_details.get(‘cityOfBirth’, ”),
‘countyOfBirth’: birth_certificate_details.get(‘countyOfBirth’, ”),
‘mothersMaidenName’: birth_certificate_details.get(‘mothersMaidenName’, ”),
‘fathersName’: birth_certificate_details.get(‘fathersName’, ”),
‘mothersPlaceOfBirth’: birth_certificate_details.get(‘mothersPlaceOfBirth’, ”),
‘fathersPlaceOfBirth’: birth_certificate_details.get(‘fathersPlaceOfBirth’, ”),
‘parentsMarriedAtBirth’: birth_certificate_details.get(‘parentsMarriedAtBirth’, ”),
‘numberOfChildrenBornInSCToMother’: birth_certificate_details.get(‘numberOfChildrenBornInSCToMother’, ”),
‘diffNameAtBirth’: birth_certificate_details.get(‘diffNameAtBirth’, ”),
‘searchFee’: fees.get(‘searchFee’, ”),
‘eachAdditionalCopy’: fees.get(‘eachAdditionalCopy’, ”),
‘expediteFee’: fees.get(‘expediteFee’, ”),
‘totalFees’: fees.get(‘totalFees’, ”)
})
4. 配置与安全策略
为确保各组件间能安全、稳定地工作,需要完成以下配置:
- SQS 队列:在 SQS 控制台中创建标准队列(例如:
bedrock-idp-extracted-data
)。 - Lambda 服务权限:为
invoke_bedrock_claude3
与insert_into_dynamodb
配置必要权限,允许访问 Amazon S3、Amazon DynamoDB 和 Amazon SQS。 - IAM 内联策略:分别为调用 Amazon Bedrock 模型、读取 S3 对象、发送 SQS 消息和写入 DynamoDB 表配置详细策略。以下为部分示例:
json
{
“Version”: “2012-10-17”,
“Statement”: [{
“Effect”: “Allow”,
“Action”: “bedrock:InvokeModel”,
“Resource”: “arn:aws:bedrock:us-east-1::foundation-model/”
}, {
“Effect”: “Allow”,
“Action”: “s3:GetObject”,
“Resource”: “arn:aws:s3:::your-s3-bucket-name/”
}, {
“Effect”: “Allow”,
“Action”: “sqs:SendMessage”,
“Resource”: “arn:aws:sqs:us-east-1:your-aws-account-id:bedrock-idp-extracted-data”
}]
}
以及用于 DynamoDB 写入的策略:
json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “AllowDynamoDBPutItem”,
“Effect”: “Allow”,
“Action”: “dynamodb:PutItem”,
“Resource”: “arn:aws:dynamodb:us-east-1:your-aws-account-id:table/birth_certificates”
},
{
“Sid”: “AllowSQSActions”,
“Effect”: “Allow”,
“Action”: [
“sqs:DeleteMessage”,
“sqs:ReceiveMessage”,
“sqs:GetQueueAttributes”
],
“Resource”: “arn:aws:sqs:us-east-1:your-aws-account-id:bedrock-idp-extracted-data”
}
]
}
5. 配置触发器与事件
- S3 事件通知:在 S3 控制台中配置事件通知,指定
images/birth_certificates/
前缀和对象创建(Put)事件,目标为 Lambda 服务invoke_bedrock_claude3
。 - Lambda 触发器:为
insert_into_dynamodb
配置 SQS 触发器,确保能及时消费 SQS 队列中传递的消息。
应用场景与优势
智能文档处理解决方案适用于众多行业场景,如:
- 政府与公共服务:加速处理出生证明、申请表等文档,提升数据处理速度。
- 医疗行业:自动提取整理患者病历、保险理赔资料,确保数据准确性。
- 金融与银行业:简化贷款申请、税表和金融票据的处理流程,降低人工成本。
- 物流与供应链:高效提取发票、采购订单等信息,增强整体供应链可见性。
- 零售与电子商务:实现个性化订单处理和快速数据响应,优化客户体验。
借助生成式 AI 与无服务器架构,该方案帮助企业实现数据提取自动化、业务流程优化和成本降低,进一步提升整体运营效率与决策能力。
总结
本文详细介绍了如何基于 Amazon Bedrock 平台和 Anthropic Claude 3 Sonnet 模型构建智能文档处理(IDP)解决方案。从文档上传、事件驱动的数据提取,到数据解析和存储,各环节均采用 AWS 服务打造无服务器架构,有效实现了生成式 AI 与多模态能力的深度融合。实践证明,该方案不仅提高了业务自动化水平,更为各行业的数据处理和决策提供了全新思路。
希望本篇教程能为您在构建企业级智能文档处理系统时提供有价值的参考和启发!