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

如何在Android项目中集成AWS Textract?已尝试添加AWS SDK

在Android项目中集成AWS Textract的步骤

1. 确认AWS SDK依赖配置

既然你已添加AWS SDK,需确保包含Textract相关依赖。在Module级别的build.gradle文件中检查以下依赖(版本可替换为最新稳定版):

implementation 'com.amazonaws:aws-android-sdk-core:2.74.0'
implementation 'com.amazonaws:aws-android-sdk-textract:2.74.0'
implementation 'com.amazonaws:aws-android-sdk-auth-core:2.74.0'
implementation 'com.amazonaws:aws-android-sdk-auth-userpools:2.74.0'

2. 配置AWS身份凭证(推荐用Cognito身份池)

在项目的res/raw目录下创建awsconfiguration.json文件,填入你的Cognito身份池信息和Textract服务区域:

{
  "CredentialsProvider": {
    "CognitoIdentity": {
      "Default": {
        "PoolId": "YOUR_COGNITO_POOL_ID",
        "Region": "YOUR_AWS_REGION"
      }
    }
  },
  "Textract": {
    "Default": {
      "Region": "YOUR_AWS_REGION"
    }
  }
}

注意:禁止硬编码AWS Access Key和Secret Key,Cognito身份池是Android端的安全凭证方案。

3. 初始化Textract客户端

在代码中(如Activity、ViewModel)初始化Textract异步客户端:

import com.amazonaws.AmazonServiceException;
import com.amazonaws.mobile.client.AWSMobileClient;
import com.amazonaws.regions.Region;
import com.amazonaws.services.textract.AmazonTextractAsyncClient;
import android.util.Log;

// 初始化AWSMobileClient(建议在Application类中完成)
AWSMobileClient.getInstance().initialize(getApplicationContext(), result -> {
    // 初始化Textract客户端
    AmazonTextractAsyncClient textractClient = new AmazonTextractAsyncClient(
        AWSMobileClient.getInstance().getCredentialsProvider()
    );
    textractClient.setRegion(Region.getRegion("YOUR_AWS_REGION"));
    // 保存客户端供后续使用
}, e -> Log.e("AWSMobileClient", "初始化失败: " + e.getMessage()));

4. 调用Textract识别文本

以识别本地图片为例,将图片转为字节数组后调用DetectDocumentText API:

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import com.amazonaws.services.textract.model.DetectDocumentTextRequest;
import com.amazonaws.services.textract.model.DetectDocumentTextResult;
import com.amazonaws.services.textract.model.Document;
import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
import android.util.Log;

// 将本地图片转为字节数组
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] imageBytes = stream.toByteArray();

// 创建识别请求
DetectDocumentTextRequest request = new DetectDocumentTextRequest()
    .withDocument(new Document().withBytes(ByteBuffer.wrap(imageBytes)));

// 异步调用API
textractClient.detectDocumentTextAsync(request, new AsyncHandler<>() {
    @Override
    public void onSuccess(DetectDocumentTextRequest request, DetectDocumentTextResult result) {
        // 处理识别结果
        result.getBlocks().forEach(block -> {
            if ("LINE".equals(block.getBlockType())) {
                Log.d("TextractResult", "识别文本: " + block.getText());
            }
        });
    }

    @Override
    public void onError(Exception e) {
        if (e instanceof AmazonServiceException) {
            AmazonServiceException ase = (AmazonServiceException) e;
            Log.e("TextractError", "服务错误: " + ase.getErrorMessage() + " 错误码: " + ase.getErrorCode());
        } else {
            Log.e("TextractError", "请求失败: " + e.getMessage());
        }
    }
});

关键注意事项

  • 权限配置:在AndroidManifest.xml中添加网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    
    若读取本地图片,需根据Android版本处理READ_EXTERNAL_STORAGE或READ_MEDIA_IMAGES动态权限。
  • 区域一致性:Cognito身份池、Textract服务的区域必须完全一致(如us-east-1、ap-southeast-1)。
  • 避免主线程阻塞:务必使用异步客户端调用API,防止应用出现ANR。

参考资源

  • AWS官方Android SDK文档中关于Textract的集成说明
  • AWS Samples提供的Android端Textract示例代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:40:49