在使用boto3 for python实现aws textract时。
代码:
import boto3
# Document
documentName = "/home/niranjan/IdeaProjects/amazon-forecast-samples/notebooks/basic/Tutorial/cert.pdf"
# Read document content
with open(documentName, 'rb') as document:
imageBytes = bytearray(document.read())
print(type(imageBytes))
# Amazon Textract client
textract = boto3.client('textract', region_name='us-west-2')
# Call Amazon Textract
response = textract.detect_document_text(Document={'Bytes': imageBytes})
下面是aws的凭证和配置文件
niranjan@niranjan:~$ cat ~/.aws/credentials
[default]
aws_access_key_id=my_access_key_id
aws_secret_access_key=my_secret_access_key
niranjan@niranjan:~$ cat ~/.aws/config
[default]
region=eu-west-1
我得到了一个例外:
---------------------------------------------------------------------------
UnsupportedDocumentException Traceback (most recent call last)
<ipython-input-11-f52c10e3f3db> in <module>
14
15 # Call Amazon Textract
---> 16 response = textract.detect_document_text(Document={'Bytes': imageBytes})
17
18 #print(response)
~/venv/lib/python3.7/site-packages/botocore/client.py in _api_call(self, *args, **kwargs)
314 "%s() only accepts keyword arguments." % py_operation_name)
315 # The "self" in this scope is referring to the BaseClient.
--> 316 return self._make_api_call(operation_name, kwargs)
317
318 _api_call.__name__ = str(py_operation_name)
~/venv/lib/python3.7/site-packages/botocore/client.py in _make_api_call(self, operation_name, api_params)
624 error_code = parsed_response.get("Error", {}).get("Code")
625 error_class = self.exceptions.from_code(error_code)
--> 626 raise error_class(parsed_response, operation_name)
627 else:
628 return parsed_response
UnsupportedDocumentException: An error occurred (UnsupportedDocumentException) when calling the DetectDocumentText operation: Request has unsupported document format
我对AWS textract有点陌生,任何帮助都将不胜感激。
import boto3
import time
def startJob(s3BucketName, objectName):
response = None
client = boto3.client('textract')
response = client.start_document_text_detection(
DocumentLocation={
'S3Object': {
'Bucket': s3BucketName,
'Name': objectName
}
})
return response["JobId"]
def isJobComplete(jobId):
# For production use cases, use SNS based notification
# Details at: https://docs.aws.amazon.com/textract/latest/dg/api-async.html
time.sleep(5)
client = boto3.client('textract')
response = client.get_document_text_detection(JobId=jobId)
status = response["JobStatus"]
print("Job status: {}".format(status))
while(status == "IN_PROGRESS"):
time.sleep(5)
response = client.get_document_text_detection(JobId=jobId)
status = response["JobStatus"]
print("Job status: {}".format(status))
return status
def getJobResults(jobId):
pages = []
client = boto3.client('textract')
response = client.get_document_text_detection(JobId=jobId)
pages.append(response)
print("Resultset page recieved: {}".format(len(pages)))
nextToken = None
if('NextToken' in response):
nextToken = response['NextToken']
while(nextToken):
response = client.get_document_text_detection(JobId=jobId, NextToken=nextToken)
pages.append(response)
print("Resultset page recieved: {}".format(len(pages)))
nextToken = None
if('NextToken' in response):
nextToken = response['NextToken']
return pages
# Document
s3BucketName = "ki-textract-demo-docs"
documentName = "Amazon-Textract-Pdf.pdf"
jobId = startJob(s3BucketName, documentName)
print("Started job with id: {}".format(jobId))
if(isJobComplete(jobId)):
response = getJobResults(jobId)
#print(response)
# Print detected text
for resultPage in response:
for item in resultPage["Blocks"]:
if item["BlockType"] == "LINE":
print ('\033[94m' + item["Text"] + '\033[0m')
请尝试此代码,并参考AWS的此链接以获取解释
由于Textract的DetectDocumentText
API不支持“pdf”类型的文档,发送遇到UnsupportedDocumentFormat异常的pdf文件
。尝试发送图像文件。
如果你仍然想发送pdf文件,那么你必须使用Textract的异步API。例如,StartDocumentAnalysis
API开始分析,GetDocumentAnalysis
获取分析过的文档。
检测输入文档中的文本。亚马逊文本可以检测文本行和组成一行文本的单词。输入文档必须是JPEG或PNG格式的图像。DetectDocumentText返回Block对象数组中检测到的文本。
https://docs.aws.amazon.com/textract/latest/dg/API_DetectDocumentText.html
我使用boto3(aws sdk for python)来分析文档(pdf)以获得表单键:值对。 我使用Analyze Document遵循了AWS的文档,当我运行我的函数时,我得到了错误。 我错过什么了吗?
安装 protoc-gen-doc 简单遵循安装要求即可: https://github.com/estan/protoc-gen-doc 安装完成之后的protoc是2.5.0版本,无法处理proto3的文件。因此我们需要升级替换protoc为v3.0.0版本。 升级protoc 使用预编译版本 下载 请先在 protobuf 的 发布页面 中找到对应版本的 download ,然后下载对应版本
我需要对包含印地语、马拉地语、马拉雅拉姆语等语言文本的图像进行光学字符识别。我在python脚本中使用AWS文本API,但扫描印地语文本文档上的OCR给出了不正确的英语单词的响应。 AWS Textract支持印地语吗? 请指导我。 提前谢谢你。
问题内容: 在Selenium支持的平台上,支持的最高selenium版本是v10。我认为这与当前扩展支持版本10一致,v17是下一个ESF,将于2012年11月20日发布。 Firefox扩展支持 Firefox发布日历 但是, 查看Selenium客户端驱动程序2.25 的发行说明(2012年7月18日)时,它会显示“将Firefox的支持版本更新为17”。 我们应该阅读哪一页?Seleniu
查看Selenium支持的平台支持的最高版本为v 10。我假设这与10是当前的扩展支持版本一致,v17是下一个ESF,将于2012年11月20日发布 Firefox扩展支持 然而,看看Selenium客户端驱动程序2.25(7月18日至12日)的发布说明,它说“将支持的火狐版本更新到17” 我们应该读哪一页?Selenium page支持的平台与2.2.5版本有何关联?
我正在努力为我的Amazon EMR集群启用YARN日志聚合。我正在按照这个配置留档: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-debugging.html#emr-计划调试日志存档 在标题为“使用AWS CLI聚合Amazon S3中的日志”的部分下。 我已经验证了hadoop-conf