Extraction de texte avec l'API GCP Cloud Vision (Python3.6)

introduction

J'ai essayé d'extraire du texte d'images avec l'API GCP Cloud Vision

Environnement de développement

introduction

Reportez-vous à Détecter le texte dans l'image.

    1. Créez un projet à partir de la Cloud Console.
  1. Assurez-vous que la facturation est activée.
    1. Activez l'API Vision. Quatre. Définissez l'authentification et le fichier JSON sera téléchargé sur votre PC. Cinq. Définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin du fichier JSON.
  2. Ouvrez l'invite anaconda et créez un environnement Python 3.6.
$ conda create -n py36 python=3.6
$ conda activate py36
    1. Installez la bibliothèque
$ pip install numpy
$ pip install pillow
$ pip install opencv-python
$ pip install --upgrade google-cloud-vision
  1. Exécutons le code ci-dessous
from google.cloud import vision
import io
import os
import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image

def detect_text(image):
    """Detects text in the file."""
    client = vision.ImageAnnotatorClient()

    content = cv2.imencode(".png ", image)[1].tostring()
    tmp = vision.Image(content=content)
    response = client.text_detection(image=tmp)
    texts = response.text_annotations
    if response.error.message:
        raise Exception(
            '{}\nFor more info on error messages, check: '
            'https://cloud.google.com/apis/design/errors'.format(
                response.error.message))
    return texts

filename = "338px-Atomist_quote_from_Democritus.png "
root, ext = os.path.splitext(filename)
image = cv2.imread(filename, cv2.IMREAD_COLOR)
texts = detect_text(image)
fontpath ='C:\Windows\Fonts\meiryo.ttc'
font = ImageFont.truetype(fontpath, 10)
image_pil = Image.fromarray(image)
for text in texts:
    print(text.description)
    vertices = [(vertex.x, vertex.y) for vertex in text.bounding_poly.vertices]
    # cv2.putText(image, text.description, vertices[0], cv2.FONT_HERSHEY_PLAIN, 1, (255, 255, 255), 1, cv2.LINE_AA)
    # cv2.rectangle(image, vertices[0], vertices[2], (0, 255, 0))
    draw = ImageDraw.Draw(image_pil)
    w, h = draw.textsize(text.description, font = font)
    draw.text((vertices[0][0], vertices[0][1]-h), text.description, font=font, fill=(255, 255, 255, 0))
    # draw.text(vertices[0], text.description, font=font, fill=(255, 255, 255, 0))
    draw.rectangle((vertices[0], vertices[2]), outline=(0, 255, 0))
image = np.array(image_pil)
cv2.imshow("image", image)
cv2.imwrite(root+"_ocr"+ext, image)
cv2.waitKey(0)
input PIL PIL(Style OpenCV) OpenCV
338px-Atomist_quote_from_Democritus.png 338px-Atomist_quote_from_Democritus_ocr.png 338px-Atomist_quote_from_Democritus_ocr_2.png 338px-Atomist_quote_from_Democritus_ocr_3.png

Avec OpenCV, l'anglais pleine largeur (japonais) est brouillé, j'ai donc utilisé PIL pour afficher le texte. Je vous remercie pour votre travail acharné.

Recommended Posts

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)
Extraction de texte avec AWS Textract (Python3.6)
Flux d'extraction de texte au format PDF avec l'API Cloud Vision
Exemple d'API Google Cloud Vision pour python
Utiliser l'API Google Cloud Vision de Python
[GCP] Exploitez Google Cloud Storage avec Python
Text mining avec Python ② Visualisation avec Word Cloud
Problèmes avec les résultats de sortie avec l'API Cloud Vision de Google
[Blender] Complétez l'API Python de Blender avec un éditeur de texte
Utiliser l'API Trello avec python
Utiliser l'API Twitter avec Python
API Web avec Python + Falcon
Appelez l'API avec python3.
Utiliser l'API subsonique avec python3
API Nifty Cloud facile à utiliser avec botocore et python
[Package cloud] Gérez les packages python avec le package cloud
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
Exécutez XGBoost avec Cloud Dataflow (Python)
Accédez à l'API Etherpad-lite avec Python
Parlez du texte japonais avec OpenJTalk + python
"AttributeError: module'google.cloud.vision 'n'a pas d'attribut" types "" dans l'API Cloud Vision (GCP vision AI)
Jouez avec le cadre gratuit GCP ① ~ Cloud Run, Datastore et API de messagerie LINE ~
Livre de recettes Cloud DevOps, partie 4 - Explorez DevOps DirectMail en Python avec l'API REST
Traduire les sous-titres au format WebVTT de Coursera avec l'API GCP Cloud Translation
Collecter des informations sur Twitter avec Python (API Twitter)
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
Reconnaissance vocale en streaming avec l'API Google Cloud Speech
Python appelant l'API Google Cloud Vision depuis LINE BOT via AWS Lambda
Client API Slack simple réalisé avec Python
Obtenez des données alimentaires avec l'API Amazon (Python)
Obstrué par la mise à jour Python de la console GCP ①
Essayez d'utiliser Python avec Google Cloud Functions
[AWS] [GCP] J'ai essayé de rendre les services cloud faciles à utiliser avec Python
Transcription d'images avec l'API Vision de GCP
Diagnostic Machine Learning x Web App: reconnaissez CAPTCHA avec l'API Cloud Vision
[GCP] Procédure de création d'une application Web avec Cloud Functions (Python + Flask)
[Azure] Hit Custom Vision Service avec Python
[Python] Créez rapidement une API avec Flask
Détectez les caractères japonais à partir d'images à l'aide de l'API Cloud Vision de Google avec Python
API de reconnaissance faciale sans serveur conçue avec Python
[Python] Obtenez des informations sur le package Python avec l'API PyPI
Comment utiliser l'API Cloud Vision de GCP
Lire des caractères dans des images avec Python OCR
Transcrire des fichiers WAV avec l'API Cloud Speech
Gérez les journaux structurés avec GCP Cloud Logging
[Cloud102] # 1 Commençons avec Python (Partie 3 Jupyter Notebook Construction GCP Cloud Shell Edition)
Essayez-le avec JupyterLab en Python japonais Word Cloud.
J'ai essayé "License OCR" avec l'API Google Vision