首页 > 解决方案 > 不使用 Amazon S3 的 Amazon Textract

问题描述

我想使用 Amazon Textract 从 PDF 中提取信息(如如何将 Amazon Textract 与 PDF 文件一起使用)。所有答案和 AWS 文档都要求输入是 Amazon S3 对象。

我可以在不将 PDF 上传到 Amazon S3 的情况下使用 Textract,而只是在 REST 调用中提供它们吗?(我必须在本地存储 PDF)。

标签: amazon-web-servicesapiamazon-textract

解决方案


我将在考虑 Java API 的情况下回答这个问题。简短的回答是肯定的。

如果您查看给定操作的此TextractAsyncClient Javadoc:

https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/textract/TextractAsyncClient.html#analyzeDocument-software.amazon.awssdk.services.textract.model.AnalyzeDocumentRequest-

它指出:

"异步操作的文档也可以是 PDF 格式"

这意味着 - 您可以引用 PDF 文档并像这样创建一个AnalyzeDocumentRequest 对象(无需从 Amazon S3 存储桶中提取)。:

public static void analyzeDoc(TextractClient textractClient, String sourceDoc) {

        try {
            InputStream sourceStream = new FileInputStream(new File(sourceDoc));
            SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream);

            // Get the input Document object as bytes
            Document myDoc = Document.builder()
                    .bytes(sourceBytes)
                    .build();

            List<FeatureType> featureTypes = new ArrayList<FeatureType>();
            featureTypes.add(FeatureType.FORMS);
            featureTypes.add(FeatureType.TABLES);

            AnalyzeDocumentRequest analyzeDocumentRequest = AnalyzeDocumentRequest.builder()
                    .featureTypes(featureTypes)
                    .document(myDoc)
                    .build();

// Use the TextractAsyncClient to perform an operation like analyzeDocument

...
}

推荐阅读