Der OCR-Dienst (Optical Character Recognition) von Vertex AI auf Google Distributed Cloud (GDC) Air-Gapped erkennt Text in PDF- und TIFF-Dateien mit den folgenden beiden API-Methoden:
BatchAnnotateFiles
: Text mit Inline-Anfragen erkennen.AsyncBatchAnnotateFiles
: Text mit Offline- (asynchronen) Anfragen erkennen
Auf dieser Seite wird beschrieben, wie Sie mit der OCR API in Distributed Cloud Text in Dateien erkennen.
Hinweise
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 mit Inline-Anfragen erkennen
Mit der Methode BatchAnnotateFiles
wird Text aus einer Batch-Datei mit PDF- oder TIFF-Dateien erkannt.
Sie senden die Datei, aus 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. In der folgenden Tabelle finden Sie eine Beschreibung der Felder im Anfragetext, die Sie angeben müssen, wenn Sie die API-Methode BatchAnnotateFiles
für Ihre Anfragen zur Texterkennung verwenden:
Felder im Anfragetext | Feldbeschreibung |
---|---|
content |
Die Dateien mit dem zu erkennenden Text. Sie stellen die Base64-Darstellung (ASCII-String) des Inhalts Ihrer Binärdatei bereit. |
mime_type |
Der Quelldateityp. Sie müssen einen der folgenden Werte festlegen:
|
type |
Die Art der Texterkennung, die Sie für die Datei benötigen. Geben Sie eines der beiden Annotations-Features an:
|
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. Bei Sprachen, die auf dem lateinischen Alphabet basieren, müssen Sie das Feld language_hints nicht festlegen.Wenn Sie die Sprache des Texts in der Datei kennen, können Sie durch Festlegen eines Hinweises die Ergebnisse verbessern. |
pages |
Optional. Die Anzahl der Seiten 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. Andernfalls können Sie über ein Python-Skript mit der vortrainierten OCR-API interagieren, um Text aus PDF- oder TIFF-Dateien zu erkennen.
Die folgenden Beispiele zeigen, wie Sie mit OCR Text in einer Datei erkennen:
REST
So erkennen Sie Text in Dateien mit der REST API-Methode:
Speichern Sie die folgende
request.json
-Datei für den 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 sindTEXT_DETECTION
oderDOCUMENT_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. Ein leerer Wert wird vom System als automatische Spracherkennung interpretiert.
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:
TOKEN
: Das Authentifizierungstoken, das Sie erhalten haben.PROJECT_ID
: Ihre Projekt-ID.ENDPOINT
: Der OCR-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere Informationen
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:
TOKEN
: Das Authentifizierungstoken, das Sie erhalten haben.ENDPOINT
: Der OCR-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere Informationen
Python
So verwenden Sie den OCR-Dienst über ein Python-Skript, um Text in einer Datei zu erkennen:
Installieren Sie die aktuelle Version der OCR-Clientbibliothek.
Erforderliche Umgebungsvariablen in einem Python-Skript festlegen
Fügen Sie dem von Ihnen 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 InformationenBASE64_ENCODED_FILE
: die Base64-Darstellung (ASCII-String) des Dateiinhalts. 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 sindTEXT_DETECTION
oderDOCUMENT_TEXT_DETECTION
.PROJECT_ID
: Ihre Projekt-ID.
Speichern Sie das Python-Skript.
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 Offlinanfragen erkennen
Mit der Methode AsyncBatchAnnotateFiles
wird Text aus einem Batch von PDF- oder TIFF-Dateien erkannt. Dazu wird eine (asynchrone) Offlineanfrage ausgeführt. Die Dateien können mehrere Seiten und mehrere Bilder pro Seite enthalten. Die Quelldateien müssen sich in einem Speicher-Bucket Ihres Distributed Cloud-Projekts befinden. Der erkannte Text wird im JSON-Format in einem Speicher-Bucket gespeichert.
Der OCR-Dienst initiiert die Offlineverarbeitung und gibt die ID des Vorgangs mit langer Ausführungszeit zurück, mit dem die Texterkennung für die Datei durchgeführt wird. Mit der zurückgegebenen ID können Sie den Status der Offlineverarbeitung verfolgen. Wenn zu viele Vorgänge laufen, wird die Offlineverarbeitung möglicherweise nicht sofort gestartet.
Sie müssen Werte für die Felder im JSON-Text Ihrer API-Anfrage angeben. In der folgenden Tabelle finden Sie eine Beschreibung der Felder im Anfragetext, die Sie angeben müssen, wenn Sie die API-Methode AsyncBatchAnnotateFiles
für Ihre Anfragen zur Texterkennung verwenden:
Felder im Anfragetext | Feldbeschreibung |
---|---|
s3_source.uri |
Der URI-Pfad zu einer gültigen Quelldatei (PDF oder TIFF) in einem Speicher-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 Quelldateityp. Sie müssen einen der folgenden Werte festlegen:
|
type |
Die Art der Texterkennung, die Sie für die Datei benötigen. Geben Sie eines der beiden Annotations-Features an:
|
s3_destination.uri |
Der URI-Pfad zu einem Speicher-Bucket Ihres Distributed Cloud-Projekts, in dem Ausgabedateien gespeichert werden sollen. An diesem Speicherort sollen die Erkennungsergebnisse gespeichert werden. Der anfragende Nutzer oder das Dienstkonto muss Schreibberechtigung für den Bucket haben. |
Quelldatei in einem Speicher-Bucket speichern
Bevor Sie eine Anfrage senden, muss das OCR-Dienstkonto Leseberechtigungen für Ihren Eingabe-Bucket und Schreibberechtigungen für Ihren Ausgabe-Bucket haben.
Die Eingabe- und Ausgabebuckets können sich unterscheiden und in verschiedenen Projektnamespaces befinden. Wir empfehlen, dieselben Ein- und Ausgabebuckets zu verwenden, um Fehler zu vermeiden, z. B. wenn die Ergebnisse in falschen Buckets gespeichert werden.
So speichern Sie die Datei, aus der Sie Text erkennen möchten, in einem Speicher-Bucket:
- gcloud CLI für Objektspeicher konfigurieren
Erstellen Sie einen Storage-Bucket in Ihrem Projekt-Namespace. Verwenden Sie eine
Standard
-Speicherklasse.Sie können den Storage-Bucket erstellen, indem Sie eine
Bucket
-Ressource im Projekt-Namespace 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
Gewähren Sie dem Dienstkonto (
g-vai-ocr-sie-sa
), das vom OCR-Dienst verwendet wird, die Berechtigungenread
undwrite
für den Bucket.So erstellen Sie die Rolle und die Rollenbindung mit benutzerdefinierten Ressourcen:
Erstellen Sie die Rolle, indem Sie eine
Role
-Ressource im Projekt-Namespace 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
Erstellen Sie die Rollenbindung, indem Sie eine
RoleBinding
-Ressource im Projekt-Namespace 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
Laden Sie die Datei in den erstellten Storage-Bucket hoch. Weitere Informationen finden Sie unter Speicherobjekte in Projekten hoch- und herunterladen.
Offline-API-Anfrage stellen
Stellen Sie eine Anfrage an die vortrainierte OCR-API mit der REST API-Methode. Andernfalls können Sie über ein Python-Skript mit der vortrainierten OCR-API interagieren, um Text aus PDF- oder TIFF-Dateien zu erkennen.
Die folgenden Beispiele zeigen, wie Sie mit OCR Text in einer Datei erkennen:
REST
So erkennen Sie Text in Dateien mit der REST API-Methode:
Speichern Sie die folgende
request.json
-Datei für den Anfragetext:cat <<- EOF > request.json { "parent": PROJECT_ID, "requests":[ { "input_config": { "s3_source": { "uri": "SOURCE_FILE" }, "mime_type": "application/pdf" }, "features": [ { "type": "FEATURE_TYPE" } ], "output_config": { "s3_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 Speicher-Bucket Ihres Distributed Cloud-Projekts.FEATURE_TYPE
: Der Typ der Texterkennung, die Sie für die Datei benötigen. Zulässige Werte sindTEXT_DETECTION
oderDOCUMENT_TEXT_DETECTION
.DESTINATION_BUCKET
: Der URI-Pfad zu einem Speicher-Bucket Ihres Distributed Cloud-Projekts, in dem Ausgabedateien gespeichert werden sollen.
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:
TOKEN
: Das Authentifizierungstoken, das Sie erhalten haben.PROJECT_ID
: Ihre Projekt-ID.ENDPOINT
: Der OCR-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere Informationen
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:
TOKEN
: Das Authentifizierungstoken, das Sie erhalten haben.ENDPOINT
: Der OCR-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere Informationen
Python
So verwenden Sie den OCR-Dienst über ein Python-Skript, um Text in einer Datei zu erkennen:
Installieren Sie die aktuelle Version der OCR-Clientbibliothek.
Erforderliche Umgebungsvariablen in einem Python-Skript festlegen
Fügen Sie dem von Ihnen 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 = {"s3_source":{"uri":SOURCE_FILE},"mime_type": "application/pdf"} output_config = {"s3_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 InformationenFEATURE_TYPE
: Der Typ der Texterkennung, die Sie für die Datei benötigen. Zulässige Werte sindTEXT_DETECTION
oderDOCUMENT_TEXT_DETECTION
.SOURCE_FILE
: Der URI-Pfad zu einer gültigen Quelldatei (PDF oder TIFF) in einem Speicher-Bucket Ihres Distributed Cloud-Projekts.DESTINATION_BUCKET
: Der URI-Pfad zu einem Speicher-Bucket Ihres Distributed Cloud-Projekts, in dem Ausgabedateien gespeichert werden sollen.PROJECT_ID
: Ihre Projekt-ID.
Speichern Sie das Python-Skript.
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 AsyncBatchAnnotateFiles
-Methode zurückgegeben wurde, um den Status des Vorgangs zu prüfen.
Status des Vorgangs abrufen
Die Methode get
gibt den letzten Status eines Vorgangs mit langer Ausführungszeit zurück, z. B. die Offlineanfrage für die Texterkennung. Mit dieser Methode können Sie den Status des Vorgangs prüfen, wie im folgenden Beispiel gezeigt:
curl -X GET "http://ENDPOINT/v1/OPERATION_NAME"
Ersetzen Sie OPERATION_NAME
durch den Vorgangsnamen, der von der Methode AsyncBatchAnnotateFiles
zurückgegeben wurde, als Sie die Offlineanfrage gestellt haben.
Vorgänge auflisten
Die Methode list
gibt eine Liste der Vorgänge zurück, die einem angegebenen Filter in der Anfrage entsprechen. Die Methode kann Vorgänge aus einem bestimmten Projekt zurückgeben. Geben Sie zum Aufrufen der List-Methode Ihre Projekt-ID und den OCR-Endpunkt an, wie im folgenden Beispiel:
curl -X GET "http://ENDPOINT/v1/PROJECT_ID?page_size=10"