Utilisation de Textract pour l'OCR localement
Je souhaite extraire du texte d'images en utilisant Python. (Tessaract lib ne fonctionne pas pour moi car il nécessite une installation).
J'ai trouvé boto3 lib et Textract, mais j'ai du mal à travailler avec. Je suis encore nouveau dans ce domaine. Pouvez-vous me dire ce que je dois faire pour exécuter mon script correctement.
Voici mon code:
import cv2
import boto3
import textract
#img = cv2.imread('slika2.jpg') #this is jpg file
with open('slika2.pdf', 'rb') as document:
img = bytearray(document.read())
textract = boto3.client('textract',region_name='us-west-2')
response = textract.detect_document_text(Document={'Bytes': img}). #gives me error
print(response)
Lorsque j'exécute ce code, j'obtiens:
botocore.exceptions.ClientError: An error occurred (InvalidSignatureException) when calling the DetectDocumentText operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
J'ai également essayé ceci:
# Document
documentName = "slika2.jpg"
# Read document content
with open(documentName, 'rb') as document:
imageBytes = bytearray(document.read())
# Amazon Textract client
textract = boto3.client('textract',region_name='us-west-2')
# Call Amazon Textract
response = textract.detect_document_text(Document={'Bytes': imageBytes}) #ERROR
#print(response)
# Print detected text
for item in response["Blocks"]:
if item["BlockType"] == "LINE":
print ('\033[94m' + item["Text"] + '\033[0m')
Mais j'obtiens cette erreur:
botocore.exceptions.ClientError: An error occurred (InvalidSignatureException) when calling the DetectDocumentText operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
Im noob dans ce domaine, donc toute aide serait bonne. Comment puis-je lire le texte de mon image ou de mon fichier pdf?
J'ai également ajouté ce bloc de code, mais l'erreur persiste Unable to locate credentials.
session = boto3.Session(
aws_access_key_id='xxxxxxxxxxxx',
aws_secret_access_key='yyyyyyyyyyyyyyyyyyyyy'
)
Réponses
Il y a un problème lors de la transmission des informations d'identification à boto3. Vous devez transmettre les informations d'identification lors de la création du client boto3.
import boto3
# boto3 client
client = boto3.client(
'textract',
region_name='us-west-2',
aws_access_key_id='xxxxxxx',
aws_secret_access_key='xxxxxxx'
)
# Read image
with open('slika2.png', 'rb') as document:
img = bytearray(document.read())
# Call Amazon Textract
response = client.detect_document_text(
Document={'Bytes': img}
)
# Print detected text
for item in response["Blocks"]:
if item["BlockType"] == "LINE":
print ('\033[94m' + item["Text"] + '\033[0m')
Notez qu'il n'est pas recommandé de coder en dur les clés AWS dans le code. Veuillez vous référer à la suite de ce document
https://boto3.amazonaws.com/v1/documentation/api/1.9.42/guide/configuration.html