Offline-Dateiannotation im Batch

Mit der Vision API lassen sich sämtliche Vision API-Features in PDF- und TIFF-Dateien erkennen, die in Cloud Storage gespeichert sind.

Die Feature-Erkennung in PDF/TIFF-Dokumenten muss mit der Funktion files:asyncBatchAnnotate angefordert werden. Diese Funktion führt eine (asynchrone) Offline-Anfrage aus und gibt mithilfe der operations-Ressourcen den Status an.

Die Ausgabedaten aus einer PDF/TIFF-Anfrage werden in eine JSON-Datei geschrieben, die im angegebenen Cloud Storage-Bucket erstellt wurde.

Beschränkungen

Die Vision API akzeptiert PDF/TIFF-Dateien mit maximal 2.000 Seiten. Größere Dateien führen zu einem Fehler.

Authentifizierung

API-Schlüssel werden bei files:asyncBatchAnnotate-Anfragen nicht unterstützt. Weitere Informationen dazu, wie Sie sich mit einem Dienstkonto authentifizieren, finden Sie unter Dienstkonto verwenden.

Das für die Authentifizierung verwendete Konto muss Zugriff auf den Cloud Storage-Bucket haben, den Sie für die Ausgabe (roles/editor oder roles/storage.objectCreator oder höher) festgelegt haben.

Sie können einen API-Schlüssel verwenden, um den Status des Vorgangs abzufragen. Eine Anleitung dazu finden Sie unter API-Schlüssel verwenden.

Funktionserkennungsanfragen

Derzeit ist die PDF/TIFF-Dokumenterkennung nur für Dateien verfügbar, die in Cloud Storage-Buckets gespeichert sind. JSON-Antwortdateien werden ebenso in einem Cloud Storage-Bucket gespeichert.

Befehlszeile

Senden Sie eine POST-Anfrage und geben Sie den entsprechenden Anfragetext an, um eine Texterkennung in PDF/TIFF-Dokumenten auszuführen:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://vision.googleapis.com/v1/files:asyncBatchAnnotate -d "{
  'requests':[
    {
      'inputConfig': {
        'gcsSource': {
          'uri': 'gs://your-source-bucket-name/folder/multi-page-file.pdf'
        },
        'mimeType': 'application/pdf'
      },
      'features': [
        {
          'type': 'DOCUMENT_TEXT_DETECTION'
        }
      ],
      'outputConfig': {
        'gcsDestination': {
          'uri': 'gs://your-bucket-name/folder/'
        },
        'batchSize': 1
      }
    }
  ]
}"

Dabei gilt:

  • inputConfig ersetzt das Feld image, das in anderen Vision API-Anfragen verwendet wird. Es enthält zwei untergeordnete Felder:

    • gcsSource.uri ist der Cloud Storage-URI der PDF- oder TIFF-Datei (zugänglich für den Nutzer oder das Dienstkonto, von dem die Anfrage stammt)
    • mimeType ist einer der akzeptierten Dateitypen: application/pdf oder image/tiff
  • outputConfig gibt Ausgabedetails an. Es enthält zwei untergeordnete Felder:

    • gcsDestination.uri ist ein gültiger Cloud Storage-URI. Der Nutzer oder das Dienstkonto, von dem die Anfrage gesendet wird, muss Schreibrechte für den Bucket haben. Der Dateiname ist output-x-to-y, wobei x und y für die Anzahl der PDF/TIFF-Seiten stehen, die in dieser Ausgabedatei enthalten sind. Wenn die Datei vorhanden ist, wird ihr Inhalt überschrieben.
    • batchSize gibt an, wie viele Ausgabeseiten in jeder JSON-Ausgabedatei enthalten sein sollen.

Antwort

Eine erfolgreiche asyncBatchAnnotate-Anfrage gibt als Antwort ein einzelnes Namensfeld zurück:

{
  "name": "projects/usable-auth-library/operations/1efec2285bd442df"
}

Dieser Name stellt einen Vorgang mit langer Ausführungszeit mit einer verknüpften ID dar (z. B. 1efec2285bd442df), die mit der v1.operations API abgefragt werden kann.

Sie können die Antwort mit den Vision-Anmerkungen abrufen. Dazu senden Sie eine GET-Anfrage an den Endpunkt v1.operations und übergeben in der URL die Vorgangs-ID:

curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://vision.googleapis.com/v1/operations/1efec2285bd442df

Wenn der Vorgang läuft:

{
  "name": "operations/1efec2285bd442df",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata",
    "state": "RUNNING",
    "createTime": "2019-05-15T21:10:08.401917049Z",
    "updateTime": "2019-05-15T21:10:33.700763554Z"
  }
}

Sobald der Vorgang abgeschlossen ist, wird der state als DONE angezeigt und Ihre Ergebnisse werden in die von Ihnen angegebene Cloud Storage-Datei geschrieben:

{
  "name": "operations/1efec2285bd442df",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata",
    "state": "DONE",
    "createTime": "2019-05-15T20:56:30.622473785Z",
    "updateTime": "2019-05-15T20:56:41.666379749Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.AsyncBatchAnnotateFilesResponse",
    "responses": [
      {
        "outputConfig": {
          "gcsDestination": {
            "uri": "gs://your-bucket-name/folder/"
          },
          "batchSize": 1
        }
      }
    ]
  }
}

Die JSON-Datei in Ihrer Ausgabedatei ähnelt der Anfrage zur Dokumenttexterkennung für ein Bild, wobei das Feld context hinzugefügt wird. Dieses Feld gibt den Speicherort der angegebenen PDF- oder TIFF-Datei und die Anzahl der Seiten in der Datei an:

output-1-to-1.json

Go

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Go-Einrichtungsanleitung in der Vision-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Go-Referenzdokumentation zur Vision API.

Richten Sie zur Authentifizierung bei Vision die Standardanmeldedaten für Anwendungen (ADC) ein. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.


// detectAsyncDocumentURI performs Optical Character Recognition (OCR) on a
// PDF file stored in GCS.
func detectAsyncDocumentURI(w io.Writer, gcsSourceURI, gcsDestinationURI string