You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否直接通过S3 URL调用Bedrock的Anthropic Claude进行OCR处理?

问题解答

目前AWS Bedrock的官方API(包括调用Anthropic Claude模型的InvokeModel或InvokeModelWithResponseStream)不支持直接指定S3 URL来自动拉取文件进行OCR处理,必须将文件内容转换为字节流或Base64编码后,作为请求体的一部分发送给Bedrock。

替代方案

1. 用AWS Lambda做中间层处理

你可以编写一个Lambda函数,让它负责从S3下载文件、转换格式,再调用Bedrock的Claude模型完成OCR。你只需要向Lambda传入S3存储桶和文件路径即可,不用在本地处理文件。示例代码如下:

import boto3
import json
import base64

s3_client = boto3.client('s3')
bedrock_runtime = boto3.client('bedrock-runtime', region_name='us-east-1')

def lambda_handler(event, context):
    # 从事件中获取S3路径信息
    bucket_name = event['bucket']
    file_key = event['key']
    
    # 从S3读取文件内容
    s3_response = s3_client.get_object(Bucket=bucket_name, Key=file_key)
    file_content = s3_response['Body'].read()
    
    # 根据文件后缀判断媒体类型
    media_type = "application/pdf" if file_key.endswith('.pdf') else \
                 "image/jpeg" if file_key.endswith('.jpg') or file_key.endswith('.jpeg') else \
                 "image/png"
    
    # 构造Claude的请求体(以Claude 3为例)
    request_body = {
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 2048,
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "image" if media_type.startswith('image/') else "document",
                        "source": {
                            "type": "base64",
                            "media_type": media_type,
                            "data": base64.b64encode(file_content).decode('utf-8')
                        }
                    },
                    {
                        "type": "text",
                        "text": "请提取这份文档/图片中的所有文本内容"
                    }
                ]
            }
        ]
    }
    
    # 调用Bedrock的Claude模型
    bedrock_response = bedrock_runtime.invoke_model(
        modelId="anthropic.claude-3-sonnet-20240229-v1:0",
        body=json.dumps(request_body),
        contentType="application/json",
        accept="application/json"
    )
    
    # 解析返回结果
    result = json.loads(bedrock_response['Body'].read())
    return {"extracted_text": result['content'][0]['text']}

2. 利用Bedrock知识库(适用于需反复处理或结合问答的场景)

如果你需要对S3中的文件进行OCR并用于后续的问答检索,可以创建一个Bedrock知识库并关联你的S3存储桶。Bedrock会自动对存储桶中的PDF、图片等文件进行OCR提取文本并建立索引,之后你可以通过RetrieveAndGenerate API获取文件中的文本内容或进行问答交互。不过这种方式更适合长期存储的文档管理,而非单次OCR处理。

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:52:37