Extraction de texte (API de lecture) avec l'API Azure Computer Vision (Python3.6)

introduction

J'ai essayé l'extraction de texte de l'image

Environnement de développement

introduction

    1. Connectez-vous au portail Azure (https://portal.azure.com/)
  1. Créer une ressource pour l'API Computer Vision image.png

    1. Notez la clé et le point final image.png

Quatre. Veuillez installer les bibliothèques requises.

pip install matplotlib
pip install pillow
pip install opencv-python
pip install --upgrade azure-cognitiveservices-vision-computervision 

Cinq. Entrez la clé et le point de terminaison que vous avez notés et exécutez le code suivant!

subscription_key = "<your subscription key>"
endpoint = "<your API endpoint>"

Le point de terminaison semble fonctionner même si vous spécifiez la région.

endpoint = "https://<your region>.api.cognitive.microsoft.com/"

Extraire le texte de l'URL de l'image

[Démarrage rapide: extraire du texte imprimé et manuscrit à l'aide de l'API REST de Computer Vision et de Python](https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision / quickstarts / python-hand-text)

import json
import os
import os.path
import sys
import requests
import time
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from PIL import Image
from io import BytesIO
 import cv2

subscription_key = "<your subscription key>"
endpoint = "<your API endpoint>"
 endpoint = "https://japanwest.api.cognitive.microsoft.com/"
text_recognition_url = endpoint + "vision/v3.1/read/analyze"

image_url = "https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/master/articles/cognitive-services/Computer-vision/Images/readsample.jpg "
headers = {'Ocp-Apim-Subscription-Key': subscription_key}
data = {'url': image_url}
response = requests.post(text_recognition_url, headers=headers, json=data)
response.raise_for_status()

operation_url = response.headers["Operation-Location"]
analysis = {}
poll = True
while (poll):
    response_final = requests.get(response.headers["Operation-Location"], headers=headers)
    analysis = response_final.json()
    
    print(json.dumps(analysis, indent=4))

    time.sleep(1)
    if ("analyzeResult" in analysis):
        poll = False
    if ("status" in analysis and analysis['status'] == 'failed'):
        poll = False

polygons = []
if ("analyzeResult" in analysis):
    polygons = [(line["boundingBox"], line["text"])
                for line in analysis["analyzeResult"]["readResults"][0]["lines"]]

image = Image.open(BytesIO(requests.get(image_url).content))
ax = plt.imshow(image)
for polygon in polygons:
    vertices = [(polygon[0][i], polygon[0][i+1])
                for i in range(0, len(polygon[0]), 2)]
    text = polygon[1]
    patch = Polygon(vertices, closed=True, fill=False, linewidth=2, color='y')
    ax.axes.add_patch(patch)
    plt.text(vertices[0][0], vertices[0][1], text, fontsize=20, va="top")
plt.show()
input output
readsample.jpg Figure_1.png

Extraire le texte de l'image locale

import json
import os
import os.path
import sys
import requests
import time
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from PIL import Image
from io import BytesIO
import cv2

subscription_key = "<your subscription key>"
endpoint = "<your API endpoint>"
 endpoint = "https://japanwest.api.cognitive.microsoft.com/"
text_recognition_url = endpoint + "vision/v3.1/read/analyze"

headers = {'Ocp-Apim-Subscription-Key': subscription_key, 'Content-Type': 'application/octet-stream'}
filename = "readsample.jpg "
root, ext = os.path.splitext(filename)
 image_data = open(filename, "rb").read()
color = cv2.imread(filename, cv2.IMREAD_COLOR)
cv2.namedWindow("color", cv2.WINDOW_NORMAL)
cv2.imshow("color", color)
cv2.waitKey(1)
image_data = cv2.imencode(ext, color)[1].tostring()
response = requests.post(text_recognition_url, headers=headers, data=image_data)
response.raise_for_status()

operation_url = response.headers["Operation-Location"]
analysis = {}
poll = True
while (poll):
    response_final = requests.get(
        response.headers["Operation-Location"], headers=headers)
    analysis = response_final.json()
    
    print(json.dumps(analysis, indent=4))

    time.sleep(1)
    if ("analyzeResult" in analysis):
        poll = False
    if ("status" in analysis and analysis['status'] == 'failed'):
        poll = False

polygons = []
if ("analyzeResult" in analysis):
    polygons = [(line["boundingBox"], line["text"])
                for line in analysis["analyzeResult"]["readResults"][0]["lines"]]

 image = Image.open(BytesIO(image_data))
image = Image.fromarray(color)
ax = plt.imshow(image)
for polygon in polygons:
    vertices = [(polygon[0][i], polygon[0][i+1])
                for i in range(0, len(polygon[0]), 2)]
    text = polygon[1]
    patch = Polygon(vertices, closed=True, fill=False, linewidth=2, color='y')
    ax.axes.add_patch(patch)
    plt.text(vertices[0][0], vertices[0][1], text, fontsize=20, va="top")
plt.show()
input output
readsample.jpg Figure_3.png

Utiliser la bibliothèque cliente de Computer Vision

Démarrage rapide: utilisez la bibliothèque cliente de Computer Vision (https://docs.microsoft.com/ja-jp/azure/cognitive-services/Computer-vision/quickstarts-sdk/client-library?pivots=programming-language -python & tabs = visual-studio)

from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from azure.cognitiveservices.vision.computervision.models import OperationStatusCodes
from azure.cognitiveservices.vision.computervision.models import VisualFeatureTypes
from msrest.authentication import CognitiveServicesCredentials

from array import array
import os
from PIL import Image
import sys
import time
import cv2 
from io import BytesIO

subscription_key = "<your subscription key>"
endpoint = "<your API endpoint>"
 endpoint = "https://japanwest.api.cognitive.microsoft.com/"

computervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))

print("===== Batch Read File - remote =====")
remote_image_handw_text_url = "https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/master/articles/cognitive-services/Computer-vision/Images/readsample.jpg "

recognize_handw_results = computervision_client.read(remote_image_handw_text_url, raw=True)
operation_location_remote = recognize_handw_results.headers["Operation-Location"]
operation_id = operation_location_remote.split("/")[-1]

while True:
    get_handw_text_results = computervision_client.get_read_result(operation_id)
    if get_handw_text_results.status not in ['notStarted', 'running']:
        break
    time.sleep(1)

if get_handw_text_results.status == OperationStatusCodes.succeeded:
    for text_result in get_handw_text_results.analyze_result.read_results:
        for line in text_result.lines:
            print(line.text)
            print(line.bounding_box)
print()
===== Batch Read File - remote =====
The quick brown fox jumps
[38.0, 650.0, 2572.0, 699.0, 2570.0, 854.0, 37.0, 815.0]
over
[184.0, 1053.0, 508.0, 1044.0, 510.0, 1123.0, 184.0, 1128.0]
the lazy dog!
[639.0, 1011.0, 1976.0, 1026.0, 1974.0, 1158.0, 637.0, 1141.0]

Je vous remercie pour votre travail acharné.

Recommended Posts

Extraction de texte (API de lecture) avec l'API Azure Computer Vision (Python3.6)
Extraction de texte avec l'API GCP Cloud Vision (Python3.6)
Extraction de texte avec AWS Textract (Python3.6)
[Azure] Hit Custom Vision Service avec Python
Lire des caractères dans des images avec Python OCR
Capacité récente de reconnaissance d'image - Résultats de recherche de pointe de MS à l'aide de l'API de vision par ordinateur avec Python
Lire csv avec des pandas python
Utiliser l'API Twitter avec Python
API Web avec Python + Falcon
Appelez l'API avec python3.
Utiliser l'API subsonique avec python3
Lire des données json avec python
Flux d'extraction de texte au format PDF avec l'API Cloud Vision
Créer Awaitable avec l'API Python / C
GOTO en Python avec Sublime Text 3
Obtenez des avis avec l'API googlemap de python
Exécutez Rotrics DexArm avec l'API Python
Quine Post avec l'API Qiita (Python)
Text mining avec Python ① Analyse morphologique
Activer Python raw_input avec Sublime Text 3
Accédez à l'API Etherpad-lite avec Python
Extraire le texte du pdf [python] et lire les caractères à haute voix avec Open-Jtalk
Parlez du texte japonais avec OpenJTalk + python
Importation et téléchargement d'images sur le stockage Azure. Avec Python + requêtes + API REST
Charger fbx depuis python avec cinema4d
Collecter des informations sur Twitter avec Python (API Twitter)
Exemple d'API Google Cloud Vision pour python
Extraction de mots-clés facile avec TermExtract pour Python
Reconnaissance vocale en anglais avec python [speech to text]
Créez automatiquement la documentation de l'API Python avec Sphinx
Lire le fichier CSV avec python (Télécharger et analyser le fichier CSV)
Client API Slack simple réalisé avec Python
Obtenez des données alimentaires avec l'API Amazon (Python)
Utilisation de Python et MeCab avec Azure Databricks
[C] [python] Lire avec AquesTalk sous Linux
Lisons le fichier RINEX avec Python ①
Manipulation d'Azure CosmosDB à partir de Python Part.2
Utiliser l'API Google Cloud Vision de Python
Transcription d'images avec l'API Vision de GCP
[Python] Covariance de région: matrice de covariance distribuée et vision par ordinateur
[Python] Lire des images avec OpenCV (pour les débutants)
[Python] Créez rapidement une API avec Flask
Text mining avec Python ② Visualisation avec Word Cloud
[Automation] Lire des documents Word avec Python
[Python] Obtenez des informations sur le package Python avec l'API PyPI
Utiliser Python et MeCab avec Azure Functions
[Automation] Lire le courrier (fichier msg) avec Python
Comment lire un fichier CSV avec Python 2/3
Flask ne peut pas être RESTful avec les applications d'API Azure
[Computer Vision] Géométrie épipolaire apprise avec des chats
Lire les données avec python / netCDF> nc.variables [] / Vérifier la taille des données
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
J'ai essayé "License OCR" avec l'API Google Vision
Extraction de bords avec python + OpenCV (filtre Sobel, filtre laplacien)
Lire JSON avec Python et générer un CSV
[Python] Comment lire des fichiers Excel avec des pandas
Analyse d'images médicales avec Python 1 (Lire une image IRM avec SimpleITK)