[PYTHON] Verwendung der Cloud Vision API von GCP

Das Dokument war etwas verwirrend, deshalb werde ich es zusammenfassen.

API-Parameter

  1. Type
  2. maxResults
  3. model

Es gibt zwei Arten von GCP Cloud Vision API TYPE.

  1. Texterkennung "TEXT_DETECTION" (optimiert für spärliche Textbereiche in großen Bildern)
  2. Dokumenttexterkennung "DOCUMENT_TEXT_DETECTION" (geeignet für Text mit hoher Dichte)

Beide OCR-Ausgangsstrukturen sind

TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol

Es ist geworden

Importieren Sie, was Sie brauchen

import base64
import json
from requests import Request, Session
from io import BytesIO
from PIL import Image
import numpy as np

Erwerb des API-Schlüssels

Erkennen von Zeichen aus Python mithilfe der OCR der Google Cloud Vision-API

Verwendung der API

def recognize_image1(input_image):#Schließlich str_encode_Zur Datei wechseln

    #Beim Wechsel vom Pfad zur Basis64
    def pil_image_to_base64(img_path):
        pil_image = Image.open(img_path)
        buffered = BytesIO()
        pil_image.save(buffered, format="PNG")
        str_encode_file = base64.b64encode(buffered.getvalue()).decode("utf-8")
        return str_encode_file

    #Beim Wechsel von Array zu Base64
    def array_to_base64(img_array):
        pil_image = Image.fromarray(np.uint8(img_array))
        buffered = BytesIO()
        pil_image.save(buffered, format="PNG")
        str_encode_file = base64.b64encode(buffered.getvalue()).decode("utf-8")
        return str_encode_file 
    
    def get_fullTextAnnotation(json_data):
        text_dict = json.loads(json_data)
        try:
            text = text_dict["responses"][0]["fullTextAnnotation"]["text"]
            return text
        except:
            print(None)
            return None
        
   


    str_encode_file = pil_image_to_base64(input_image) # input_Wählen Sie diese Option, wenn Sie das Bild auf den Bildpfad setzen möchten
    #str_encode_file = array_to_base64(input_image)# input_Wählen Sie diese Option, wenn Sie das Bild zu einem Array machen möchten
    str_url = "https://vision.googleapis.com/v1/images:annotate?key="
    str_api_key = ""#Geben Sie hier den API-Schlüssel ein
    str_headers = {'Content-Type': 'application/json'}
    str_json_data = {
        'requests': [
            {
                'image': {
                    'content': str_encode_file
                },
                'features': [
                    {
                        'type': "DOCUMENT_TEXT_DETECTION",#Wählen Sie hier den Typ
                        'maxResults': 1
                    }
                ]
            }
        ]
    }

    obj_session = Session()
    obj_request = Request("POST",
                            str_url + str_api_key,
                            data=json.dumps(str_json_data),
                            headers=str_headers
                            )
    obj_prepped = obj_session.prepare_request(obj_request)
    obj_response = obj_session.send(obj_prepped,
                                    verify=True,
                                    timeout=60
                                    )

    if obj_response.status_code == 200:
        text = get_fullTextAnnotation(obj_response.text)
        
        return text
    else:
        return "error"

Referenz

Versionshinweise Feature Vertikalen Text mit Google Cloud Vision erkennen

Recommended Posts

Verwendung der Cloud Vision API von GCP
Verwendung der Google Cloud Translation API
Verwendung der Python-API von OpenPose
Wie benutzt man Bing Search API?
[Python] Verwendung der Typetalk-API
Verwenden Sie die Google Cloud Vision-API von Python
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
So rufen Sie die Cloud-API über GCP-Cloud-Funktionen auf
Verwendung der NHK-Programmführer-API
[Rails] Erkennen radikaler Bilder durch Analysieren von Bildern mithilfe der Cloud Vision API
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
Verwendung von Qt Designer
Verwendung der Suche sortiert
[gensim] Verwendung von Doc2Vec
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
Verwendung des Generators
[Python] Verwendung von Liste 1
Verwendung von FastAPI ③ OpenAPI
Wie benutzt man Python Argparse?
Wie man Pandas Rolling benutzt
[Hinweis] Verwendung von virtualenv
Verwendung von Redispy-Wörterbüchern
Python: Wie man pydub benutzt
[Go] Verwendung von "... (3 Perioden)"
So bedienen Sie GeoIp2 von Django
[Python] Verwendung von input ()
Wie benutzt man den Dekorateur?
[Einführung] Verwendung von open3d
Wie benutzt man Python Lambda?