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

SpringBoot调用AWS Textract对接S3桶时Document无builder()方法问题咨询

报错根因

你当前的代码混用了AWS SDK for Java 1.x和AWS SDK for Java 2.x两套不兼容的API:

  • 现有Textract客户端、Document类导入的都是1.x版本的包,1.x版本的com.amazonaws.services.textract.model.Document类没有builder()方法,这个方法是2.x版本才有的
  • 你导入的software.amazon.awssdk.core.SdkBytes是2.x版本的工具类,和1.x代码不兼容

修复方案(推荐,最小改动,兼容现有1.x代码)

你不需要手动从S3下载文件流,1.x版本的Textract原生支持直接传入S3对象路径,修改后的S3集成代码如下:

// 集成S3正确代码
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
        // 和Textract使用相同的凭证和区域
        .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("Access key", "Secretkey")))
        .withRegion(Regions.AP_SOUTH_1)
        .build();

// 直接构造S3对象,不需要手动读取流
S3Object s3Object = new S3Object()
        .withBucket("textract-bucket")
        .withName("image.jpg");
// 1.x版本Document使用withS3Object方法传参
Document document = new Document().withS3Object(s3Object);

// 后续请求构造和原有逻辑一致
AmazonTextract client = clientBuilder.build();
DetectDocumentTextRequest request = new DetectDocumentTextRequest()
        .withDocument(document);

同时需要删除项目中无用的2.x版本导入语句:

// 删掉这行导入
import software.amazon.awssdk.core.SdkBytes;

其他注意事项

  • 不要把AWS凭证硬编码在代码中,生产环境建议使用IAM角色、环境变量或者~/.aws/credentials文件配置
  • 确保你使用的凭证拥有对应S3对象的读取权限,以及Textract服务的调用权限
  • 确保S3桶和Textract服务在同一个区域,避免跨区访问报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:18:03