Text in Bildern erkennen

Der OCR-Dienst (Optical Character Recognition) von Vertex AI in Google Distributed Cloud (GDC) mit Air Gap erkennt Text in Bildern mithilfe der API-Methode BatchAnnotateImages. Der Dienst unterstützt JPEG- und PNG-Dateien für Bilder.

Auf dieser Seite wird beschrieben, wie Sie Bildtext mithilfe der OCR API in Distributed Cloud erkennen.

Hinweis

Wenn Sie Text in Bildern erkennen möchten, wenden Sie sich an Ihren IAM-Projektadministrator, um die Rolle AI OCR Developer (ai-ocr-developer) in Ihrem Projektnamespace anzufordern.

Weitere Informationen zu dieser Rolle finden Sie unter IAM-Berechtigungen vorbereiten.

Für die Verwendung der OCR API benötigen Sie ein Projekt, für das die OCR API aktiviert ist. Außerdem benötigen Sie die entsprechenden Anmeldedaten. Sie können auch Clientbibliotheken installieren, um Aufrufe an die API zu ermöglichen. Weitere Informationen finden Sie unter Projekt zur Zeichenerkennung einrichten.

Text in JPEG- und PNG-Dateien erkennen

Die Methode BatchAnnotateImages erkennt Text aus einem Batch von JPEG- oder PNG-Dateien. Sie senden die Datei, in der Sie Text erkennen möchten, direkt als Inhalt in der API-Anfrage. Das System gibt den erkannten Text im JSON-Format in der API-Antwort zurück.

Sie müssen Werte für die Felder im JSON-Text Ihrer API-Anfrage angeben. Die folgende Tabelle enthält eine Beschreibung der Felder im Anfragetext, die Sie angeben müssen, wenn Sie die API-Methode BatchAnnotateImages für Ihre Texterkennungsanfragen verwenden:

Anfragetextfelder Feldbeschreibung
content Die Bilder mit Text, der erkannt werden soll. Sie stellen die Base64-Darstellung (ASCII-String) Ihrer Binärbilddaten bereit.
type Die Art der Texterkennung, die Sie für das Bild benötigen.

Geben Sie eines der beiden Annotationsfeatures an:
  • TEXT_DETECTION erkennt und extrahiert Text aus beliebigen Bildern. Die JSON-Antwort enthält den extrahierten String, einzelne Wörter und ihre Begrenzungsrahmen.
  • DOCUMENT_TEXT_DETECTION extrahiert ebenfalls Text aus einem Bild, optimiert die Antwort jedoch für Fließtext und Dokumente. Die JSON-Datei enthält Informationen zu Seite, Block, Absatz, Wort und Worttrennung.
Weitere Informationen zu diesen Annotationsfunktionen finden Sie unter Funktionen zur optischen Zeichenerkennung.
language_hints Optional. Liste der Sprachen, die für die Texterkennung verwendet werden sollen.

Das System interpretiert einen leeren Wert für dieses Feld als automatische Spracherkennung.

Bei Sprachen, die auf dem lateinischen Alphabet basieren, ist die Einstellung language_hints nicht erforderlich.

Wenn Sie die Sprache des Textes im Bild kennen, können Sie die Ergebnisse durch Festlegen eines Hinweises verbessern.

Informationen zur vollständigen JSON-Darstellung finden Sie unter AnnotateImageRequest.

API-Anfrage stellen

Stellen Sie eine Anfrage an die vortrainierte OCR API mit der REST API-Methode. Andernfalls können Sie über ein Python-Script mit der vortrainierten OCR API interagieren, um Text aus JPEG- oder PNG-Dateien zu erkennen.

Die folgenden Beispiele zeigen, wie Sie Text in einem Bild mithilfe von OCR erkennen:

REST

So erkennen Sie Text in Bildern mit der REST API-Methode:

  1. Speichern Sie die folgende request.json-Datei für den Anfragetext:

    cat <<- EOF > request.json
    {
      "requests": [
        {
          "image": {
            "content": BASE64_ENCODED_IMAGE
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "image_context": {
            "language_hints": [
              "LANGUAGE_HINT_1",
              "LANGUAGE_HINT_2",
              ...
            ]
          }
        }
      ]
    }
    EOF
    

    Ersetzen Sie Folgendes:

    • BASE64_ENCODED_IMAGE: die Base64-Darstellung (ASCII-String) der Binärbilddaten. Dieser String beginnt mit Zeichen, die in etwa so aussehen: /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: die Art der Texterkennung, die Sie für das Bild benötigen. Zulässige Werte sind TEXT_DETECTION und DOCUMENT_TEXT_DETECTION.
    • LANGUAGE_HINT: die BCP 47-Sprach-Tags, die als Sprachhinweise für die Texterkennung verwendet werden sollen, z. B. en-t-i0-handwrit. Dieses Feld ist optional. Ein leerer Wert wird vom System als automatische Spracherkennung interpretiert.
  2. Authentifizierungstoken abrufen

  3. Stellen Sie die Anfrage:

    curl

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "x-goog-user-project: projects/PROJECT_ID" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      https://ENDPOINT/v1/images:annotate
    

    Ersetzen Sie Folgendes:

    PowerShell

    $headers = @{
      "Authorization" = "Bearer TOKEN"
      "x-goog-user-project" = "projects/PROJECT_ID"
    }
    
    Invoke-WebRequest
      -Method POST
      -Headers $headers
      -ContentType: "application/json; charset=utf-8"
      -InFile request.json
      -Uri "ENDPOINT/v1/images:annotate" | Select-Object -Expand Content
    

    Ersetzen Sie Folgendes:

Python

So verwenden Sie den OCR-Dienst in einem Python-Script, um Text in einem Bild zu erkennen:

  1. Installieren Sie die aktuelle Version der OCR-Clientbibliothek.

  2. Legen Sie die erforderlichen Umgebungsvariablen in einem Python-Skript fest.

  3. Authentifizieren Sie Ihre API-Anfrage.

  4. Fügen Sie dem von Ihnen erstellten Python-Script den folgenden Code hinzu:

    from google.cloud import vision
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience = "https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def vision_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return vision.ImageAnnotatorClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def vision_func(creds):
      vc = vision_client(creds)
      image = {"content": "BASE64_ENCODED_IMAGE"}
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      # Each requests element corresponds to a single image. To annotate more
      # images, create a request element for each image and add it to
      # the array of requests
      req = {"image": image, "features": features}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      resp = vc.annotate_image(req,metadata=metadata)
    
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      vision_func(creds)
    

    Ersetzen Sie Folgendes:

    • ENDPOINT: der OCR-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere Informationen finden Sie unter Dienststatus und Endpunkte ansehen.
    • BASE64_ENCODED_IMAGE: die Base64-Darstellung (ASCII-String) der Binärbilddaten. Dieser String beginnt mit Zeichen, die in etwa so aussehen: /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: die Art der Texterkennung, die Sie für das Bild benötigen. Zulässige Werte sind TEXT_DETECTION und DOCUMENT_TEXT_DETECTION.
    • PROJECT_ID: Ihre Projekt-ID.
  5. Speichern Sie das Python-Skript.

  6. Führen Sie das Python-Skript aus, um Text im Bild zu erkennen:

    python SCRIPT_NAME
    

    Ersetzen Sie SCRIPT_NAME durch den Namen, den Sie Ihrem Python-Skript gegeben haben, z. B. vision.py.