J'ai essayé d'extraire du texte d'une image avec AWS Textract
Générer une clé d'accès avec IAM à partir de la console AWS
Entrez la clé d'accès et la clé d'accès secrète obtenues lors de la génération de la clé d'accès. Pour le nom de la région par défaut, spécifiez ap-south-1 (Asia Pacific Mumbai) où Textract peut être utilisé. Le format de sortie est json.
$ aws configure
AWS Access Key ID [None]: XXXX
AWS Secret Access Key [None]: XXXX
Default region name [None]: ap-south-1
Default output format [None]: json
Quatre. Ouvrez l'invite anaconda et créez un environnement Python 3.6.
$ conda create -n py36 python=3.6
$ conda activate py36
Cinq. Installez la bibliothèque
$ pip install boto3
$ pip install opencv-python
import boto3
import cv2
import os.path
def process_text_analysis(image):
client = boto3.client('textract')
image_data = cv2.imencode(".png ", image)[1].tostring()
response = client.analyze_document(Document={'Bytes': image_data}, FeatureTypes=["TABLES", "FORMS"])
blocks = response['Blocks']
return blocks
def draw_blocks(image, blocks):
height, width = image.shape[:2]
draw = image.copy()
for block in blocks:
if block['BlockType'] == "WORD":
vertices = [(int(width * block['Geometry']['Polygon'][i]['X']), int(height * block['Geometry']['Polygon'][i]['Y'])) for i in range(len(block['Geometry']['Polygon']))]
cv2.putText(draw, block['Text'], vertices[0], cv2.FONT_HERSHEY_PLAIN, 1, (255, 255, 255), 1, cv2.LINE_AA)
cv2.rectangle(draw, vertices[0], vertices[2], (0, 255, 0))
return draw
filename = "338px-Atomist_quote_from_Democritus.png "
image = cv2.imread(filename, cv2.IMREAD_COLOR)
blocks = process_text_analysis(image)
print("Blocks detected: " + str(len(blocks)))
draw = draw_blocks(image, blocks)
cv2.imshow("draw", draw)
cv2.waitKey(0)
input | output |
---|---|
Je vous remercie pour votre travail acharné.
Recommended Posts