Text in Dateien erkennen

Der OCR-Dienst (Optical Character Recognition, optische Zeichenerkennung) von Vertex AI auf Google Distributed Cloud (GDC) Air-Gapped erkennt Text in PDF- und TIFF-Dateien mit den folgenden beiden API-Methoden:

Auf dieser Seite erfahren Sie, wie Sie mit der OCR API auf Distributed Cloud Text in Dateien erkennen.

Hinweis

Bevor Sie die OCR API verwenden können, benötigen Sie ein Projekt, in dem die OCR API aktiviert ist, und 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 mit Inline-Anfragen erkennen

Die Methode BatchAnnotateFiles erkennt Text aus einem Batch von PDF- oder TIFF-Dateien. Sie senden die Datei, aus der Sie Text erkennen möchten, direkt als Inhalt in der API-Anfrage. Das System gibt den erkannten Text in der API-Antwort im JSON-Format 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 des Anfragetexts, die Sie angeben müssen, wenn Sie die API-Methode BatchAnnotateFiles für Ihre Anfragen zur Texterkennung verwenden:

Felder des Anfragetexts Beschreibung des Felds
content Die Dateien mit dem zu erkennenden Text. Sie geben die Base64-Darstellung (ASCII-String) des Inhalts Ihrer Binärdatei an.
mime_type Der Typ der Quelldatei. Sie müssen einen der folgenden Werte festlegen:
  • application/pdf für PDF-Dateien
  • image/tiff für TIFF-Dateien
type Der Typ der Texterkennung, die Sie für die Datei benötigen.

Geben Sie eines der beiden Anmerkungsfeatures an:
  • TEXT_DETECTION erkennt und extrahiert Text aus einer beliebigen Datei. Die JSON-Antwort enthält den extrahierten String, einzelne Wörter und deren Begrenzungsrahmen.
  • DOCUMENT_TEXT_DETECTION extrahiert auch Text aus einer Datei, aber der Dienst optimiert die Antwort für dichten Text und Dokumente. Die JSON-Datei enthält Informationen zu Seite, Block, Absatz, Wort und Worttrennung.
Weitere Informationen zu diesen Anmerkungsfeatures finden Sie unter OCR-Features.
language_hints Optional. Liste der Sprachen, die für die Texterkennung verwendet werden sollen.

Ein leerer Wert für dieses Feld wird vom System als automatische Spracherkennung interpretiert.

Sie müssen das Feld language_hints nicht für Sprachen festlegen, die auf dem lateinischen Alphabet basieren.

Wenn Sie die Sprache des Texts in der Datei kennen, können Sie durch das Festlegen eines Hinweises die Ergebnisse verbessern.
pages Optional. Die Anzahl der Seiten aus der Datei, die für die Texterkennung verarbeitet werden sollen.

Sie können maximal fünf Seiten angeben. Wenn Sie die Anzahl der Seiten nicht angeben, verarbeitet der Dienst die ersten fünf Seiten der Datei.

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

Inline-API-Anfrage stellen

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

In den folgenden Beispielen wird gezeigt, wie Sie mit OCR Text in einer Datei erkennen:

REST

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

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

    cat <<- EOF > request.json
    {
      "requests": [
        {
          "input_config": {
            "content": BASE64_ENCODED_FILE,
            "mime_type": "application/pdf"
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "image_context": {
            "language_hints": [
              "LANGUAGE_HINT_1",
              "LANGUAGE_HINT_2",
              ...
            ]
          },
          "pages": []
        }
      ]
    }
    EOF
    

    Ersetzen Sie Folgendes:

    • BASE64_ENCODED_FILE: die Base64-Darstellung (ASCII-String) des Inhalts Ihrer Binärdatei. Dieser String beginnt mit Zeichen, die /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q== ähneln.
    • FEATURE_TYPE: der Typ der Texterkennung, die Sie für die Datei benötigen. Zulässige Werte sind TEXT_DETECTION oder DOCUMENT_TEXT_DETECTION.
    • LANGUAGE_HINT: die BCP 47-Sprachtags, die als Sprachhinweise für die Texterkennung verwendet werden sollen, z. B. en-t-i0-handwrit. Dieses Feld ist optional und ein leerer Wert wird vom System als automatische Spracherkennung interpretiert.
  2. Rufen Sie einen Authentifizierungstoken ab.

  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/files: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/files:annotate" | Select-Object -Expand Content
    

    Ersetzen Sie Folgendes:

Python

So verwenden Sie den OCR-Dienst über ein Python-Skript, um Text in einer Datei zu erkennen:

  1. Installieren Sie die neueste 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 erstellten Python-Skript 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)
        print("Got token: ")
        print(creds.token)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def vision_func(creds):
      vc = vision_client(creds)
      input_config = {"content": "BASE64_ENCODED_FILE"}
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      # Each requests element corresponds to a single file. To annotate more
      # files, create a request element for each file and add it to
      # the array of requests
      req = {"input_config": input_config, "features": features}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      resp = vc.annotate_file(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.
    • BASE64_ENCODED_FILE: die Base64-Darstellung (ASCII-String) des Inhalts Ihrer Datei. Dieser String beginnt mit Zeichen, die /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q== ähneln.
    • FEATURE_TYPE: der Typ der Texterkennung, die Sie für die Datei benötigen. Zulässige Werte sind TEXT_DETECTION oder DOCUMENT_TEXT_DETECTION.
    • PROJECT_ID: Ihre Projekt-ID.
  5. Speichern Sie das Python-Skript.

  6. Führen Sie das Python-Skript aus, um Text in der Datei zu erkennen:

    python SCRIPT_NAME
    

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

Text mit Offline-Anfragen erkennen

Die Methode AsyncBatchAnnotateFiles erkennt Text aus einem Batch von PDF- oder TIFF-Dateien, indem sie eine Offline-Anfrage (asynchron) ausführt. Die Dateien können mehrere Seiten und mehrere Bilder pro Seite enthalten. Die Quelldateien müssen sich in einem Storage-Bucket Ihres Distributed Cloud-Projekts befinden. Das System speichert den erkannten Text im JSON-Format in einem Storage-Bucket.

Der OCR-Dienst initiiert die Offline-Verarbeitung und gibt die ID des Vorgangs mit langer Ausführungszeit zurück, der die Texterkennung in der Datei ausführt. Mit der zurückgegebenen ID können Sie den Status der Offline-Verarbeitung verfolgen. Wenn zu viele Vorgänge ausgeführt werden, wird die Offline-Verarbeitung möglicherweise nicht sofort gestartet.

Sie müssen Werte für die Felder im JSON-Text Ihrer API-Anfrage angeben. Die folgende Tabelle enthält eine Beschreibung der Felder des Anfragetexts, die Sie angeben müssen, wenn Sie die API-Methode AsyncBatchAnnotateFiles für Ihre Anfragen zur Texterkennung verwenden:

Felder des Anfragetexts Beschreibung des Felds
gcs_source.uri Der URI-Pfad zu einer gültigen Quelldatei (PDF oder TIFF) in einem Storage-Bucket Ihres Distributed Cloud-Projekts.

Diese Datei enthält den Text, den Sie erkennen möchten.

Der anfragende Nutzer oder das anfragende Dienstkonto muss mindestens Leseberechtigungen für die Datei haben.
mime_type Der Typ der Quelldatei. Sie müssen einen der folgenden Werte festlegen:
  • application/pdf für PDF-Dateien
  • image/tiff für TIFF-Dateien
type Der Typ der Texterkennung, die Sie für die Datei benötigen.

Geben Sie eines der beiden Anmerkungsfeatures an:
  • TEXT_DETECTION erkennt und extrahiert Text aus einer beliebigen Datei. Die JSON-Antwort enthält den extrahierten String, einzelne Wörter und deren Begrenzungsrahmen.
  • DOCUMENT_TEXT_DETECTION extrahiert auch Text aus einer Datei, aber der Dienst optimiert die Antwort für dichten Text und Dokumente. Die JSON-Datei enthält Informationen zu Seite, Block, Absatz, Wort und Worttrennung.
Weitere Informationen zu diesen Anmerkungsfeatures finden Sie unter OCR-Features.
gcs_destination.uri Der URI-Pfad zu einem Storage-Bucket Ihres Distributed Cloud-Projekts, in dem Ausgabedateien gespeichert werden sollen.

An diesem Speicherort sollen die Erkennungsergebnisse gespeichert werden.

Der anfragende Nutzer oder das anfragende Dienstkonto muss Schreibberechtigungen für den Bucket haben.

Quelldatei in einem Storage-Bucket speichern

Bevor Sie eine Anfrage senden, müssen Sie dafür sorgen, dass das OCR-Dienstkonto Leseberechtigungen für Ihren Eingabe-Bucket und Schreibberechtigungen für Ihren Ausgabe-Bucket hat.

Die Eingabe- und Ausgabe-Buckets können sich in verschiedenen Projektnamespaces befinden. Wir empfehlen, dieselben Eingabe- und Ausgabe-Buckets zu verwenden, um Fehler zu vermeiden, z. B. das Speichern der Ergebnisse in falschen Buckets.

So speichern Sie die Datei, aus der Sie Text erkennen möchten, in einem Storage-Bucket:

  1. Konfigurieren Sie das gdcloud CLI für den Objektspeicher.
  2. Erstellen Sie einen Storage-Bucket in Ihrem Projektnamespace. Verwenden Sie die Speicherklasse Standard.

    Sie können den Storage-Bucket erstellen, indem Sie eine Bucket-Ressource im Projektnamespace bereitstellen:

    apiVersion: object.gdc.goog/v1
    kind: Bucket
    metadata:
      name: ocr-async-bucket
      namespace: PROJECT_NAMESPACE
    spec:
      description: bucket for async ocr
      storageClass: Standard
      bucketPolicy:
        lockingPolicy:
          defaultObjectRetentionDays: 90
    
  3. Gewähren Sie dem Dienstkonto (g-vai-ocr-sie-sa), das vom OCR-Dienst verwendet wird, die Berechtigungen read und write für den Bucket.

    So erstellen Sie die Rolle und die Rollenbindung mit benutzerdefinierten Ressourcen:

    1. Erstellen Sie die Rolle, indem Sie eine Role-Ressource im Projektnamespace bereitstellen:

        apiVersion: rbac.authorization.k8s.io/v1
        kind: Role
        metadata:
          name: ocr-async-reader-writer
          namespace: PROJECT_NAMESPACE
        rules:
          -
            apiGroups:
              - object.gdc.goog
            resources:
              - buckets
            verbs:
              - read-object
              - write-object
      
    2. Erstellen Sie die Rollenbindung, indem Sie eine RoleBinding-Ressource im Projektnamespace bereitstellen:

        apiVersion: rbac.authorization.k8s.io/v1
        kind: RoleBinding
      
        metadata:
          name: ocr-async-reader-writer-rolebinding
          namespace: PROJECT_NAMESPACE
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: Role
          name: ocr-async-reader-writer
        subjects:
          -
            kind: ServiceAccount
            name: g-vai-ocr-sie-sa
            namespace: g-vai-ocr-sie
      
  4. Laden Sie die Datei in den erstellten Storage-Bucket hoch. Weitere Informationen finden Sie unter Speicherobjekte in Projekten hochladen und herunterladen.

Offline-API-Anfrage stellen

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

In den folgenden Beispielen wird gezeigt, wie Sie mit OCR Text in einer Datei erkennen:

REST

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

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

    cat <<- EOF > request.json
    {
      "parent": PROJECT_ID,
      "requests":[
        {
          "input_config": {
            "gcs_source": {
              "uri": "SOURCE_FILE"
            },
            "mime_type": "application/pdf"
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "output_config": {
            "gcs_destination": {
              "uri": "DESTINATION_BUCKET"
            }
          }
        }
      ]
    }
    EOF
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • SOURCE_FILE: der URI-Pfad zu einer gültigen Quelldatei (PDF oder TIFF) in einem Storage-Bucket Ihres Distributed Cloud-Projekts.
    • FEATURE_TYPE: der Typ der Texterkennung, die Sie für die Datei benötigen. Zulässige Werte sind TEXT_DETECTION oder DOCUMENT_TEXT_DETECTION.
    • DESTINATION_BUCKET: der URI-Pfad zu einem Storage-Bucket Ihres Distributed Cloud-Projekts, in dem Ausgabedateien gespeichert werden sollen.
  2. Rufen Sie einen Authentifizierungstoken ab.

  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/files:asyncBatchAnnotate
    

    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/files:asyncBatchAnnotate" | Select-Object -Expand Content
    

    Ersetzen Sie Folgendes:

Python

So verwenden Sie den OCR-Dienst über ein Python-Skript, um Text in einer Datei zu erkennen:

  1. Installieren Sie die neueste 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 erstellten Python-Skript 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_func_async(creds):
      vc = vision_client(creds)
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      input_config = {"gcs_source":{"uri":SOURCE_FILE},"mime_type": "application/pdf"}
      output_config = {"gcs_destination": {"uri": DESTINATION_BUKET}}
      req = {"input_config": input_config, "output_config": output_config, "features":features}
      reqs = {"requests":[req],"parent":PROJECT_ID}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      operation = vc.async_batch_annotate_files(request=reqs, metadata=metadata)
      lro = operation.operation
      resp = operation.result()
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
        print("Got token: ")
        print(creds.token)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    if __name__=="__main__":
      creds = main()
      vision_func_async(creds)
    

    Ersetzen Sie Folgendes:

    • ENDPOINT: der OCR-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere Informationen finden Sie unter Dienststatus und Endpunkte.
    • FEATURE_TYPE: der Typ der Texterkennung, die Sie für die Datei benötigen. Zulässige Werte sind TEXT_DETECTION oder DOCUMENT_TEXT_DETECTION.
    • SOURCE_FILE: der URI-Pfad zu einer gültigen Quelldatei (PDF oder TIFF) in einem Storage-Bucket Ihres Distributed Cloud-Projekts.
    • DESTINATION_BUCKET: der URI-Pfad zu einem Storage-Bucket Ihres Distributed Cloud-Projekts, in dem Ausgabedateien gespeichert werden sollen.
    • PROJECT_ID: Ihre Projekt-ID.
  5. Speichern Sie das Python-Skript.

  6. Führen Sie das Python-Skript aus, um Text in der Datei zu erkennen:

    python SCRIPT_NAME
    

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

Sie können den Vorgangsnamen verwenden, der von der Methode AsyncBatchAnnotateFiles zurückgegeben wurde, um den Status des Vorgangs zu prüfen.

Status des Vorgangs abrufen

Die Methode get gibt den aktuellen Status eines Vorgangs mit langer Ausführungszeit zurück, z. B. der Offline-Anfrage zur Texterkennung. Verwenden Sie diese Methode, um den Vorgangsstatus zu prüfen, wie im folgenden Beispiel:

curl -X GET "http://ENDPOINT/v1/OPERATION_NAME"

Ersetzen Sie OPERATION_NAME durch den Vorgangsnamen, der von der AsyncBatchAnnotateFiles Methode zurückgegeben wurde, als Sie die Offline-Anfrage gestellt haben.

Vorgänge auflisten

Die Methode list gibt eine Liste der Vorgänge zurück, die einem bestimmten Filter in der Anfrage entsprechen. Die Methode kann Vorgänge aus einem bestimmten Projekt zurückgeben. Um die Methode „list“ aufzurufen, geben Sie Ihre Projekt-ID und den OCR-Endpunkt an, wie im folgenden Beispiel:

curl -X GET "http://ENDPOINT/v1/PROJECT_ID?page_size=10"