Extraction de texte avec AWS Textract (Python3.6)

introduction

J'ai essayé d'extraire du texte d'une image avec AWS Textract

Environnement de développement

introduction

    1. Installez awscli AWSCLIV2. Reportez-vous à Installation, mise à jour et désinstallation de l'AWS CLI version 2 sous Windows. Installer msi
  1. Générer une clé d'accès avec IAM à partir de la console AWS image.png

    1. Définissez awscli à l'invite de commande

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
    1. Ajoutez la stratégie "AmazonTextractFullAccess" depuis Ajouter des autorisations IAM image.png

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
  1. Exécutons le code ci-dessous
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
338px-Atomist_quote_from_Democritus.png awsocr.png

Je vous remercie pour votre travail acharné.

Recommended Posts

Extraction de texte avec AWS Textract (Python3.6)
Extraction de texte avec l'API GCP Cloud Vision (Python3.6)
Extraction de texte (API de lecture) avec l'API Azure Computer Vision (Python3.6)
Text mining avec Python ① Analyse morphologique
Activer Python raw_input avec Sublime Text 3
Parlez du texte japonais avec OpenJTalk + python
Notifier HipChat avec AWS Lambda (Python)
[AWS] Utilisation de fichiers ini avec Lambda [Python]
Extraction de mots-clés facile avec TermExtract pour Python
Reconnaissance vocale en anglais avec python [speech to text]
Je veux jouer avec aws avec python
Connectez-vous à s3 avec AWS Lambda Python
Text mining avec Python ② Visualisation avec Word Cloud
Lire des caractères dans des images avec Python OCR
Touchez AWS avec Serverless Framework et Python
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Créer un environnement de construction python3 avec Sublime Text3
LINE BOT avec Python + AWS Lambda + API Gateway
Traitement d'image à partir de zéro avec python (4) Extraction de contour
Application sans serveur avec AWS SAM! (APIGATEWAY + Lambda (Python))
Gérez bien AWS avec la bibliothèque Python Boto
Premiers pas avec AWS IoT facilement en Python
Communication série avec Python
Texte de cluster en Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Communication de socket avec Python
Analyse de données avec python 2
Text mining avec Python ① Analyse morphologique (re: version Linux)
Essayez de gratter avec Python.
Pages HTML dynamiques créées avec AWS Lambda et Python
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1