基于 Amazon Bedrock 与 Anthropic Claude 3 智能文档处理方案:从扫描件提取到数据入库全流程实践

文章目录

    • 基于 Amazon Bedrock 与 Anthropic Claude 3 智能文档处理方案:从扫描件提取到数据入库全流程实践
      • 方案架构
      • 前提准备:亚马逊云科技注册流程
        • Step.1 登录官网
        • Step.2 选择账户计划
        • Step.3 填写联系人信息
        • Step.4 绑定信息
        • Step.5 电话验证
        • Step.6 售后支持
      • 智能文档处理流程
        • 1.创建 S3 存储桶
        • 2.创建 SQS 队列
        • 3.创建 Lambda 服务调用 Amazon Bedrock 模型
        • 4.创建 S3 事件通知
        • 5.创建 DynamoDB 表
        • 6.创建 Lambda 服务以便将记录插入 DynamoDB 表
        • 7.配置 Lambda 服务 SQS 触发器
        • 8.测试解决方案
      • 总结

新用户可获得高达 200 美元的服务抵扣金

亚马逊云科技新用户可以免费使用亚马逊云科技免费套餐(Amazon Free Tier)。注册即可获得 100 美元的服务抵扣金,在探索关键亚马逊云科技服务时可以再额外获得最多 100 美元的服务抵扣金。使用免费计划试用亚马逊云科技服务,最长可达 6 个月,无需支付任何费用,除非您选择付费计划。付费计划允许您扩展运营并获得超过 150 项亚马逊云科技服务的访问权限。

在这里插入图片描述

本教程将详细演示如何借助 Amazon Bedrock 平台上的 Anthropic Claude 3 Sonnet 模型,构建一套完整的智能文档处理解决方案,具体流程包括从扫描文档中精准提取关键数据,并将提取后的数据高效插入数据库,呈现全流程的实操指南。

方案架构

在这里插入图片描述

基于亚马逊云科技服务的文档处理数据提取流程:扫描文档上传至 S3,触发 S3 事件通知,调用 Claude 3 模型的 Lambda 函数通过 Amazon Bedrock 获取带提取数据的 JSON 响应,响应发至 SQS 队列,再触发解析消息并将数据以键值对插入 DynamoDB 的 Lambda 函数,最终提取数据存入 DynamoDB ,实现从文档上传到数据落库的自动化处理

自动化闭环:S3 上传触发全流程,从模型调用、消息传递到数据落库,无需人工介入,高效流转

生态协同力:串联 S3、Bedrock、SQS、Lambda、DynamoDB ,各服务分工协作,构建完整数据处理链路

智能 + 适配:Claude 3 精准提取数据,支持多语言自动翻译;Lambda 可灵活调整逻辑,适配多样场景

前提准备:亚马逊云科技注册流程

Step.1 登录官网

登录亚马逊云科技官网,填写邮箱和账户名称完成验证(注册亚马逊云科技填写 root 邮箱、账户名,验证邮件地址,查收邮件填验证码验证,验证通过后设 root 密码并确认)

在这里插入图片描述

Step.2 选择账户计划

选择账户计划,两种计划,按需选"选择免费计划 / 选择付费计划"继续流程

  • 免费(6 个月,适合学习实验,含$200抵扣金、限精选服务,超限额或到期可升级付费,否则关停)
  • 付费(适配生产,同享$200 抵扣金,可体验全部服务,抵扣金覆盖广,用完按即用即付计费)

在这里插入图片描述

Step.3 填写联系人信息

填写联系人信息(选择使用场景,填联系人全名、电话,选择所在国家地区,完善地址、邮政编码,勾选同意客户协议,点击继续 进入下一步)

在这里插入图片描述

Step.4 绑定信息

绑定相关信息,选择国家地区,点击"Send code"收验证码填写,勾选同意协议后,点击"验证并继续"进入下一步

在这里插入图片描述

Step.5 电话验证

电话验证填写真实手机号,选择验证方式,完成安全检查,若选语音,网页同步显 4 位数字码,接来电后输入信息,再填收到的验证信息,遇问题超 10 分钟收不到可返回重试。

在这里插入图片描述

Step.6 售后支持

售后支持:免费计划自动获基本支持,付费计划需选支持计划(各计划都含客户服务,可访问文档白皮书,按需选后点 “完成注册”,若需企业级支持可了解付费升级选项,确认选好即可完成整个注册流程 )

在这里插入图片描述

智能文档处理流程

1.创建 S3 存储桶

访问亚马逊云科技控制台,搜索"S3"创建存储桶,命名格式为 bedrock-claude3-idp-随机字符,其他设置保持默认。创建完成后,在存储桶内依次创建 images 文件夹和 birth_certificates 子文件夹

在这里插入图片描述

2.创建 SQS 队列

创建一个标准队列类型的队列,输入队列名称,其他设置均保留默认值

在这里插入图片描述

3.创建 Lambda 服务调用 Amazon Bedrock 模型

Lambda 控制台创建名为 invoke_bedrock_claude3 的服务,运行时选 Python 3.12,其他默认,下载 invoke_bedrock_claude3.py 完整代码,替换 lambda_function.py 内容,将 {SQS URL} 替换为实际 SQS 队列 URL 后点击部署

Lambda 服务应执行以下操作:

s3 = boto3.client('s3')
sqs = boto3.client('sqs')
bedrock = boto3.client('bedrock-runtime', region_name='us-east-1')
QUEUE_URL = {SQS URL}
MODEL_ID = "anthropic.claude-3-sonnet-20240229-v1:0"

调用 get_object 方法,从 S3 存储桶中获取图像,再转换为 base64 数据:

image_data = s3.get_object(Bucket=bucket_name, Key=object_key)['Body'].read()
base64_image = base64.b64encode(image_data).decode('utf-8')

特定 JSON 格式输出的提示词:

prompt = """
This image shows a birth certificate application form. 
Please precisely copy all the relevant information from the form.
Leave the field blank if there is no information in corresponding field.
If the image is not a birth certificate application form, simply return an empty JSON object. 
If the application form is not filled, leave the fees attributes blank. 
Translate any non-English text to English. 
Organize and return the extracted data in a JSON format with the following keys:
{"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 格式图像数据

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"Error sending message to SQS: {e.response['Error']['Code']}: {e.response['Error']['Message']}")

修改 Lambda 服务的 IAM 角色以授予所需权限:在 Lambda 控制台打开该服务,进入 配置-权限,选择对应 IAM 角色

在这里插入图片描述

新选项卡打开该角色后,权限策略点击添加权限-创建内联策略-切换到 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:::{S3 Bucket Name}/*"}, {"Effect": "Allow","Action": "sqs:SendMessage","Resource": "arn:aws:sqs:us-east-1:{AWS Account ID}:bedrock-idp-extracted-data"}]
}

在这里插入图片描述

该策略授予调用 Amazon Bedrock 基础模型、检索指定 S3 存储桶对象、向指定 SQS 队列发送消息的权限,另需将 Lambda 服务超时时间从默认 3 秒修改为 2 分钟

4.创建 S3 事件通知

创建 S3 事件通知步骤:S3 控制台打开目标存储桶,进入 属性-事件通知-新建通知

命名:bedrock-claude3-idp-event-notification

前缀: images/birth_certificates/

事件类型:对象创建-PUT

目标选 Lambda 服务:invoke_bedrock_claude3

5.创建 DynamoDB 表

将提取的数据存储在 DynamoDB 中,需要创建一个表, DynamoDB 控制台中,创建一个名为 birth_certificates 的表,将 Id 作为分区键,其他设置均保留默认值

6.创建 Lambda 服务以便将记录插入 DynamoDB 表

Lambda 控制台创建名为 insert_into_dynamodb 的服务,运行时选 Python 3.12,其他默认。下载 insert_into_dynamodb.py 代码替换 lambda_function.py 内容后点击部署,该服务负责从含 Anthropic Claude 3 Sonnet 模型响应的 SQS 队列中获取消息

data = json.loads(event['Records'][0]['body'])['content'][0]['text']
event_id = event['Records'][0]['messageId']
data = json.loads(data)

创建表示 DynamoDB 及其表的对象:

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('birth_certificates')

从 JSON 数据中获取键对象:

applicant_details = data.get('applicantDetails', {})mailing_address = data.get('mailingAddress', {})relation_to_applicant = data.get('relationToApplicant', [])birth_certificate_details = data.get('BirthCertificateDetails', {})fees = data.get('fees', {})

调用 put_item() 方法,将提取的数据插入 DynamoDB 表:

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', '')

修改 Lambda 服务的 IAM 角色,授予所需的权限。操作与之前修改 invoke_bedrock_claude3 Lambda 服务权限的步骤一致,需要输入以下 JSON 信息作为内联策略:

{"Version": "2012-10-17","Statement": [{"Sid": "VisualEditor0","Effect": "Allow","Action": "dynamodb:PutItem","Resource": "arn:aws:dynamodb:us-east-1::{AWS Account ID}:table/birth_certificates"},{"Sid": "VisualEditor1","Effect": "Allow","Action": ["sqs:DeleteMessage","sqs:ReceiveMessage","sqs:GetQueueAttributes"],"Resource": "arn:aws:sqs:us-east-1::{AWS Account ID}:bedrock-idp-extracted-data"}]
}

输入策略名称,点击创建策略

在这里插入图片描述

该策略将授予以下权限:

  • DynamoDB 表中插入记录
  • 读取和删除 SQS 队列中的消息
7.配置 Lambda 服务 SQS 触发器

为 Lambda 服务创建触发器:SQS 控制台打开 bedrock-idp-extracted-data 队列,进入 Lambda 触发器选项卡,点击配置 Lambda 服务触发器,选择 insert_into_dynamodb 服务并保存

在这里插入图片描述

8.测试解决方案

完成资源、权限和代码配置后即可测试:向 S3 的 birth_certificates 文件夹上传两张扫描图像,再到 DynamoDB 控制台查看 birth_certificates 表,配置正确的话,数秒内会出现两个项目,截图如下

在这里插入图片描述

在这里插入图片描述

总结

本教程围绕利用 Amazon Bedrock 与 Anthropic Claude 3 Sonnet 模型构建智能文档处理方案,依次创建 S3 存储桶、SQS 队列、DynamoDB 表等资源,开发两个 Lambda 函数并配置权限,通过 S3 事件通知、SQS 队列串联流程,形成"文档上传→模型提取→数据存储"自动化闭环,依托多亚马逊云科技服务协同,实现文档数据精准提取与结构化存储,为企业文档智能化处理提供可落地实操模板

全流程自动化:文档上传 S3 触发处理到模型提取数据、消息队列传递,最终存入数据库,无需人工干预,大幅提升处理效率

智能精准处理:借助 Anthropic Claude 3 Sonnet 模型,精准提取文档数据多语言自动翻译,适配不同语言场景

灵活可扩展:基于亚马逊云科技生态服务构建,各组件可按需调整,轻松适配不同文档类型和业务需求

以上就是本文的全部内容啦。最后提醒一下各位工友,如果后续不再使用相关服务,别忘了在控制台关闭,避免超出免费额度产生费用~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91721.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91721.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91721.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出设计模式——创建型模式之单例模式 Singleton

文章目录“天上天下,唯我独尊”——单例模式单例模式简介单例模式结构饿汉式懒汉式客户端示例运行结果单例模式总结构建型模式 Creational Patterns 小结 Summary代码仓库“天上天下,唯我独尊”——单例模式 你能在电脑上调出两个Windows任务管理器吗&a…

静电释放检测漏报率↓85%!陌讯多模态融合算法在电子厂ESD防护实战解析

​摘要​​ 基于边缘计算的静电释放(ESD)视觉检测方案,通过多模态融合技术显著提升复杂场景鲁棒性。实测显示:在电子元件装配线上,ESD事件检测mAP0.5达89.1%,较基线模型提升28.3%。一、行业痛点:ESD检测的隐形危机根据…

RAL-2025 | “藏宝图”驱动的具身导航!HAM-Nav:基于手绘地图引导的机器人导航

作者:Aaron Hao Tan, Angus Fung, Haitong Wang, Goldie Nejat单位:多伦多大学机械与工业工程系论文标题:Mobile Robot Navigation Using Hand-Drawn Maps: A Vision Language Model Approach出版信息:IEEE ROBOTICS ANDAUTOMATI…

Vue.js 与后端技术结合开发指南

Vue.js 作为现代化的前端框架,可以与多种后端技术完美结合,构建全栈应用。下面我将详细介绍 Vue 可以与哪些后端技术结合开发,并提供可视化示例。Vue 可结合的后端技术概览主流组合方案对比后端技术适合场景优点缺点学习曲线Node.js全栈JavaS…

逻辑回归在银行贷款审批中的应用:参数选择与实践

目录 一、数据背景与预处理 1.数据前五行 2.数据预处理步骤 二、逻辑回归的正则化参数选择 1.交叉验证选择最优C 2.为什么选择召回率作为评估指标? 三、参数选择的核心结论 四、后续优化方向 在银行贷款审批场景中,准确判断贷款人是否符合贷款条…

数据结构前篇 - 深入解析数据结构之复杂度

目录一、数据结构前言1.1 数据结构1.2 算法二、算法效率2.1 复杂度的概念三、时间复杂度3.1 大O的渐进表示法3.2 时间复杂度计算示例3.2.1 示例13.2.2 示例23.2.3 示例33.2.4 示例43.2.5 示例53.2.6 示例63.2.7 示例7四、空间复杂度4.1 空间复杂度计算示例4.1.1 示例14.1.2 示例…

Master Prompt:AI时代的万能协作引擎

1. Master Prompt:为什么它正在重塑AI协作范式大模型落地的最大痛点不是技术本身,而是人机协作的断裂。当企业采购了昂贵的AI系统,却发现输出内容反复偏离预期,团队成员抱怨“AI总听不懂我要什么”,这种场景每天在无数…

《Kubernetes部署篇:基于Kylin V10+ARM架构CPU使用containerd部署K8S 1.33.3容器板集群(一主多从)》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:企业级K8s集群运维实战 一、架构图 如下图所示: 二、环境信息 基于x86_64+aarch64架构使用containerd部署K8S 1.33.3集群资源合集(一主多从) 2、部署规划 主机名 K8S版本 系统版本 CPU架构 内核版…

一次性接收大量上传图片,后端优化方式

文章目录1. 分块接收与流式处理2. 异步处理3. 内存映射与临时文件4. 数据库优化5. 缓存策略6. 压缩与格式优化7. 限流与并发控制8. 分布式存储9. 响应优化10. 监控与错误处理11. 数据库连接池优化1. 分块接收与流式处理 使用流式处理避免将所有图片加载到内存中: …

二分查找(基础)

竞赛中心 - 蓝桥云课 #include <iostream> #include<bits/stdc.h> using namespace std; #define int long long int N; struct NO {int A,B; }a[10001]; bool ok(int V) {for (int i 0; i < N; i){if (a[i].A / V ! a[i].B){return false;}}return true; } …

流式编程学习思路

流式编程学习思路 作为Java初级工程师,想要掌握流式编程并向高级工程师进阶,需要从基础到进阶逐步掌握,结合实战场景深化理解。以下是为你量身定制的学习清单和思路: 一、基础阶段:吃透 Java Stream 核心API 1. 掌握 Stream 的基本概念 什么是 Stream:理解它与集合(Co…

13-14linux三剑客grep,sed,awk

目录 三剑客支持扩展正则写法 grep命令 sed命令 sed指定行查找&#xff1a; sed模糊过滤文件内容 sed之删除&#xff1a; sed之替换&#xff1a; sed追加插入替换&#xff1a; sed后向引用&#xff1a; awk命令 awk按照行查找 awk模糊过滤文件内容 awk取列 awk指…

损失函数和调度器相关类代码回顾理解 |nn.CrossEntropyLoss\CosineAnnealingLR

目录 nn.CrossEntropyLoss CosineAnnealingLR nn.CrossEntropyLoss loss_func nn.CrossEntropyLoss(reduction"sum") 定义nn.CrossEntropyLoss交叉熵损失函数&#xff0c;reduction参数设置为"sum"&#xff0c;表示将所有样本的损失相加。reduction 参…

中国不同类型竹林分布数据

中国竹林分布的主要特点简介&#xff1a;总体分布格局&#xff1a;核心区域&#xff1a; 主要分布在长江流域及以南的广大亚热带和热带地区。北界&#xff1a; 大致以黄河流域为北界&#xff0c;但天然成片竹林在秦岭-淮河一线以南才比较普遍。人工引种或特殊小环境下&#xff…

Sqlserver备份恢复指南-完整备份恢复

博主会用简单清晰的方式&#xff0c;带你系统学习使用T-SQL命令行的方式 给SQL Server 做备份与恢复。我们按照从零开始、逐步深入的路线来讲解&#xff01; 完整备份恢复-差异增量备份恢复-事务日志备份恢复 &#x1f538; SQL Server 备份类型&#xff1a;类型说明完整备份&a…

AI 调酒师上岗!接管酒吧吧台

7月29日&#xff0c;马老师的 HHB 音乐酒吧在阿里巴巴西溪园区正式开业&#xff0c;开业这天迎来了一位神秘嘉宾“AI 调酒师”&#xff01; 这位 AI 调酒师不仅能根据你的MBTI、今日情绪、星座运势、江湖花名等为你特调一杯鸡尾酒&#xff0c;还能为这杯酒配上故事和诗文。 点…

【C++进阶】一文吃透静态绑定、动态绑定与多态底层机制(含虚函数、vptr、thunk、RTTI)

【C进阶】一文吃透静态绑定、动态绑定与多态底层机制&#xff08;含虚函数、vptr、thunk、RTTI&#xff09;作者&#xff1a;你的C教练 日期&#xff1a;2025-08-01目录 静态绑定 vs 动态绑定非虚函数的三大坑多态的四要素虚析构函数为什么必须写&#xff1f;探秘 vptr/vftable…

VUE基础知识2

1.计算属性&#xff1a;使用计算属性来描述依赖响应式状态的复杂逻辑。关键字computed:{}//计算属性&#xff0c;使用的时候和函数方法不一样&#xff0c;不需要加括号。简单来说就是模板方法的复杂逻辑放到了计算属性中去。2.计算属性缓存VS方法&#xff1a;计算属性值会基于其…

在PyCharm中将现有Gitee项目重新上传为全新项目

如果你想将当前本地的Gitee项目重新上传为一个全新的Gitee项目&#xff08;保留本地代码但断开与原仓库的关联&#xff09;&#xff0c;可以按照以下步骤操作&#xff1a; 删除旧的Git远程仓库关联 打开PyCharm&#xff0c;进入你的项目 点击顶部菜单 Git > Manage Remotes …

设计模式1:创建型模式

设计模式1&#xff1a;创建型模式 设计模式2&#xff1a;结构型模式&#xff08;编写中&#xff09; 设计模式3&#xff1a;行为型模式&#xff08;编写中&#xff09; 前言 设计模式是软件开发中经过验证的可复用解决方案&#xff0c;它们源自实践、提炼于经验&#xff0c;并…