不带S3对象的R(paws)中的Texextract

elcex8rz  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(83)

当使用R中paws包中的textract时,start_document_analysis调用需要DocumentLocation中S3Object的路径。

textract$start_document_analysis(
    DocumentLocation = list(
      S3Object = list(Bucket = bucket, Name = file)
    )
  )

可以在没有S3Object的情况下使用DocumentLocation吗?我宁愿只提供本地PDF的路径。

xurqigkl

xurqigkl1#

start_document_analysis API只支持提供s3对象作为输入,而不支持像analyze_document api那样提供base64编码的字符串(另请参阅https://docs.aws.amazon.com/cli/latest/reference/textract/start-document-analysis.html上的CLI文档)
因此,不幸的是,您必须使用S3作为(临时)存储数据的地方。当然,你可以写自己的逻辑来做到这一点:)。伟大的教程,可以在https://www.gormanalysis.com/blog/connecting-to-aws-s3-with-r/找到,因为你已经设置了凭证等。例如,您可以跳过许多步骤并从步骤3开始。

dgtucam1

dgtucam12#

paws还支持同步功能:https://www.paws-r-sdk.com/docs/textract/
例如https://www.paws-r-sdk.com/docs/textract_detect_document_text/,但要小心,因为示例并不总是完美的。在这种情况下,他们说它接受一个论点:Document [required] The input document as base64-encoded bytes or an Amazon S3 object.沿着以下示例:

svc$detect_document_text(
  Document = list(
    Bytes = raw,
    S3Object = list(
      Bucket = "string",
      Name = "string",
      Version = "string"
    )
  )
)

但是,向Bytes提供base64字符串将抛出错误:

# Error: `In file(what, "rb") : cannot open file ...`
result = textract$detect_document_text(
  Document = list(Bytes = knitr::image_uri('image.png')))

相反,您可以提供文件路径:

result = textract$detect_document_text(Document = list(Bytes='image.png'))

在这种情况下,请尝试使用analyze_document

相关问题