基于 Amazon Bedrock 與 Anthropic Claude 3 智能文檔處理方案:從掃描件提取到數據入庫全流程實踐

基于 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;并…