Für Training, Aufbautraining oder Bewertung einer Prozessorversion ist ein Dataset aus Dokumenten mit Labels erforderlich.
Auf dieser Seite wird beschrieben, wie Sie ein Dataset erstellen, Dokumente importieren und ein Schema definieren. Informationen zum Hinzufügen von Labels zu den importierten Dokumenten finden Sie unter Dokumenten Labels hinzufügen.
Auf dieser Seite wird davon ausgegangen, dass Sie bereits einen Prozessor erstellt haben, der Training, Aufbautraining oder Bewertung unterstützt. Wenn Ihr Prozessor unterstützt wird, sehen Sie in der Google Cloud Konsole den Tab Trainieren.
Optionen für den Dataset-Speicher
Sie haben zwei Optionen zum Speichern Ihres Datasets:
- Von Google verwaltet
- Benutzerdefinierter Cloud Storage-Speicherort
Sofern Sie keine besonderen Anforderungen haben (z. B. zum Aufbewahren von Dokumenten in einer Reihe von CMEK-fähigen Ordnern), empfehlen wir die einfachere von Google verwaltete Speicheroption. Nach dem Erstellen kann die Option für den Dataset-Speicher für den Prozessor nicht mehr geändert werden.
Der Ordner oder Unterordner für einen benutzerdefinierten Cloud Storage-Speicherort muss leer sein und darf nur gelesen werden. Manuelle Änderungen am Inhalt können dazu führen, dass das Dataset unbrauchbar wird und verloren geht. Bei der von Google verwalteten Speicheroption besteht dieses Risiko nicht.
Führen Sie die folgenden Schritte aus, um Ihren Speicherort bereitzustellen.
Von Google verwalteter Speicher (empfohlen)
Erweiterte Optionen beim Erstellen eines neuen Prozessors anzeigen.

Behalten Sie die Standardoption der Optionsgruppe für den von Google verwalteten Speicher bei.

Wählen Sie Erstellen aus.

Bestätigen Sie, dass das Dataset erfolgreich erstellt wurde und der Dataset-Speicherort Von Google verwalteter Speicherort ist.

Benutzerdefinierte Speicheroption
Erweiterte Optionen aktivieren oder deaktivieren.

Wählen Sie Ich gebe meinen eigenen Speicherort an aus.

Wählen Sie in der Eingabekomponente einen Cloud Storage-Ordner aus.

Wählen Sie Erstellen aus.

Dataset-API-Vorgänge
In diesem Beispiel wird gezeigt, wie Sie mit der
processors.updateDataset
ein Dataset erstellen. Eine Dataset-Ressource ist eine Singleton-Ressource in einem Prozessor. Das bedeutet, dass es keinen RPC zum Erstellen von Ressourcen gibt. Stattdessen können Sie den RPC updateDataset verwenden, um die Einstellungen festzulegen. Document AI bietet die Möglichkeit, die Dataset-Dokumente in einem von Ihnen bereitgestellten Cloud Storage-Bucket zu speichern oder sie automatisch von Google verwalten zu lassen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
LOCATION: Your processor location
PROJECT_ID: Your Google Cloud project ID
PROCESSOR_ID The ID of your custom processor
GCS_URI: Your Cloud Storage URI where dataset documents are stored
Bereitgestellter Bucket
Führen Sie die nächsten Schritte aus, um eine Dataset-Anfrage mit einem von Ihnen bereitgestellten Cloud Storage-Bucket zu erstellen.
HTTP-Methode
PATCH https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/datasetAnfrage (JSON):
{
"name":"projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset"
"gcs_managed_config" {
"gcs_prefix" {
"gcs_uri_prefix": "GCS_URI"
}
}
"spanner_indexing_config" {}
}Von Google verwaltet
Wenn Sie das von Google verwaltete Dataset erstellen möchten, aktualisieren Sie die folgenden Informationen:
HTTP-Methode
PATCH https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/datasetAnfrage (JSON):
{
"name":"projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset"
"unmanaged_dataset_config": {}
"spanner_indexing_config": {}
}Sie können Ihre Anfrage mit „curl“ senden:
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl aus:
CURL
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset"Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
}Dokumente importieren
Ein neu erstelltes Dataset ist leer. Wenn Sie Dokumente hinzufügen möchten, wählen Sie Dokumente importieren aus und wählen Sie einen oder mehrere Cloud Storage-Ordner aus, die die Dokumente enthalten, die Sie Ihrem Dataset hinzufügen möchten.
Wenn sich Ihr Cloud Storage in einem anderen Google Cloud Projekt befindet, müssen Sie Zugriff gewähren, damit Document AI Dateien von diesem Speicherort lesen kann. Insbesondere müssen Sie dem
Dienst-Agenten des Document AI-Kern-Dienstes
service-{project-id}@gcp-sa-prod-dai-core.iam.gserviceaccount.com die Rolle
Storage Object Viewer zuweisen. Weitere
Informationen finden Sie unter
Dienst-Agents.

Wählen Sie dann eine der folgenden Zuweisungsoptionen aus:
- Training: Dem Trainings-Dataset zuweisen
- Test: Dem Test-Dataset zuweisen
- Automatische Aufteilung: Dokumente werden nach dem Zufallsprinzip in Trainings- und Test-Datasets gemischt.
- Nicht zugewiesen: Wird nicht für Training oder Tests verwendet. Sie können die Zuweisung später manuell vornehmen.
Sie können die Zuweisungen jederzeit ändern.
Wenn Sie Importieren auswählen, importiert Document AI alle
unterstützten Dateitypen sowie JSON-
Document-Dateien in das
Dataset. Bei JSON Document
-Dateien importiert Document AI das Dokument und konvertiert seine entities
in Label-Instanzen.
Document AI ändert den Importordner nicht und liest nach Abschluss des Imports nicht aus dem Ordner.
Wählen Sie oben auf der Seite Aktivität aus, um den Bereich Aktivität zu öffnen. Dort werden die Dateien aufgeführt, die erfolgreich importiert wurden, sowie die Dateien, bei denen der Import fehlgeschlagen ist.
Wenn Sie bereits eine vorhandene Version Ihres Prozessors haben, können Sie im Dialogfeld Dokumente importieren das Kästchen Mit automatischem Labeling importieren auswählen. Die Dokumente werden beim Importieren mit dem vorherigen Prozessor automatisch mit Labels versehen. Sie können automatisch mit Labels versehene Dokumente nicht für Trainings- oder Testzwecke verwenden, ohne sie als „Mit Label versehen“ zu markieren. Nachdem Sie automatisch mit Labels versehene Dokumente importiert haben, überprüfen und korrigieren Sie sie manuell. Wählen Sie dann Speichern aus, um die Korrekturen zu speichern und das Dokument als „Mit Label versehen“ zu markieren. Anschließend können Sie die Dokumente nach Bedarf zuweisen. Weitere Informationen zu Auto-labeling.
RPC zum Importieren von Dokumenten
In diesem Beispiel wird gezeigt, wie Sie mit der Methode „dataset.importDocuments“ Dokumente in das Dataset importieren.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
LOCATION: Your processor location
PROJECT_ID: Your Google Cloud project ID
PROCESSOR_ID: The ID of your custom processor
GCS_URI: Your Cloud Storage URI where dataset documents are stored
DATASET_TYPE: The dataset type to which you want to add documents. The value should be either `DATASET_SPLIT_TRAIN` or `DATASET_SPLIT_TEST`.
TRAINING_SPLIT_RATIO: The ratio of documents which you want to autoassign to the training set.
Trainings- oder Test-Dataset
Wenn Sie Dokumente zum Trainings- oder Test-Dataset hinzufügen möchten:
HTTP-Methode
POST https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/importDocumentsAnfrage (JSON):
{
"batch_documents_import_configs": {
"dataset_split": DATASET_TYPE
"batch_input_config": {
"gcs_prefix": {
"gcs_uri_prefix": GCS_URI
}
}
}
}Trainings- und Test-Dataset
Wenn Sie die Dokumente automatisch zwischen dem Trainings- und dem Test-Dataset aufteilen möchten:
HTTP-Methode
POST https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/importDocumentsAnfrage (JSON):
{
"batch_documents_import_configs": {
"auto_split_config": {
"training_split_ratio": TRAINING_SPLIT_RATIO
},
"batch_input_config": {
"gcs_prefix": {
"gcs_uri_prefix": "gs://test_sbindal/pdfs-1-page/"
}
}
}
}Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
CURL
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/importDocuments"Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
}RPC zum Löschen von Dokumenten
In diesem Beispiel wird gezeigt, wie Sie mit der Methode „dataset.batchDeleteDocuments“ Dokumente aus dem Dataset löschen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
LOCATION: Your processor location
PROJECT_ID: Your Google Cloud project ID
PROCESSOR_ID: The ID of your custom processor
DOCUMENT_ID: The document ID blob returned by <code>ImportDocuments</code> request
Dokumente löschen
HTTP-Methode
POST https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/batchDeleteDocumentsAnfrage (JSON):
{
"dataset_documents": {
"individual_document_ids": {
"document_ids": DOCUMENT_ID
}
}
}Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
CURL
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/batchDeleteDocuments"Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
}Dokumente dem Trainings- oder Test-Dataset zuweisen
Wählen Sie unter Datenaufteilung Dokumente aus und weisen Sie sie dem Trainings-Dataset, dem Test-Dataset oder „Nicht zugewiesen“ zu.

Best Practices für das Test-Dataset
Die Qualität Ihres Test-Datasets bestimmt die Qualität Ihrer Bewertung.
Das Test-Dataset sollte zu Beginn des Entwicklungszyklus des Prozessors erstellt und gesperrt werden, damit Sie die Qualität des Prozessors im Zeitverlauf verfolgen können.
Wir empfehlen mindestens 100 Dokumente pro Dokumenttyp für das Test-Dataset. Es ist wichtig, dass das Test-Dataset repräsentativ für die Dokumenttypen ist, die Kunden für das entwickelte Modell verwenden.
Das Test-Dataset sollte in Bezug auf die Häufigkeit repräsentativ für den Produktions-Traffic sein. Wenn Sie beispielsweise W2-Formulare verarbeiten und erwarten, dass 70% auf das Jahr 2020 und 30% auf das Jahr 2019 entfallen, sollten etwa 70% des Test-Datasets aus W2-Formularen aus dem Jahr 2020 bestehen. Eine solche Zusammensetzung des Test-Datasets sorgt dafür, dass jeder Dokumentuntertyp bei der Bewertung der Leistung des Prozessors angemessen berücksichtigt wird. Wenn Sie außerdem Namen von Personen aus internationalen Formularen extrahieren, muss Ihr Test-Dataset Formulare aus allen Zielländern enthalten.
Best Practices für das Trainings-Dataset
Alle Dokumente, die bereits im Test-Dataset enthalten sind, sollten nicht im Trainings-Dataset enthalten sein.
Im Gegensatz zum Test-Datensatz muss das endgültige Trainings-Datensatz in Bezug auf Dokumentvielfalt oder -häufigkeit nicht so streng repräsentativ für die Kundennutzung sein. Einige Labels sind schwieriger zu trainieren als andere. Daher kann es zu einer besseren Leistung führen, wenn Sie das Trainings-Dataset auf diese Labels ausrichten.
Am Anfang gibt es keine gute Möglichkeit, herauszufinden, welche Labels schwierig sind. Beginnen Sie mit einem kleinen, zufällig ausgewählten anfänglichen Trainings-Dataset indem Sie denselben Ansatz wie für das Test-Dataset verwenden. Dieses anfängliche Trainings-Dataset sollte etwa 10% der Gesamtzahl der Dokumente enthalten, die Sie kommentieren möchten. Anschließend können Sie die Qualität des Prozessors iterativ bewerten (nach bestimmten Fehlermustern suchen) und weitere Trainingsdaten hinzufügen.
Prozessorschema definieren
Nachdem Sie ein Dataset erstellt haben, können Sie ein Prozessorschema entweder vor oder nach dem Importieren von Dokumenten definieren.
Das schema des Prozessors definiert die Labels, z. B. Name und Adresse, die aus Ihren Dokumenten extrahiert werden sollen.
Wählen Sie Schema bearbeiten aus und erstellen, bearbeiten, aktivieren und deaktivieren Sie Labels nach Bedarf.
Wählen Sie am Ende Speichern aus.

Hinweise zur Schemalabelverwaltung:
Nachdem ein Schemalabel erstellt wurde, kann der Name des Schemalabels nicht mehr bearbeitet werden.
Ein Schemalabel kann nur bearbeitet oder gelöscht werden, wenn keine trainierten Prozessorversionen vorhanden sind. Nur Datentyp und Vorkommenstyp können bearbeitet werden.
Das Deaktivieren eines Labels hat auch keine Auswirkungen auf die Vorhersage. Wenn Sie eine Verarbeitungsanfrage senden, extrahiert die Prozessorversion alle Labels, die zum Zeitpunkt des Trainings aktiv waren.
Datenschema abrufen
In diesem Beispiel wird gezeigt, wie Sie mit „dataset.
getDatasetSchema
“ das aktuelle Schema abrufen. DatasetSchema ist eine Singleton-Ressource, die automatisch erstellt wird, wenn Sie eine Dataset-Ressource erstellen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
LOCATION: Your processor location
PROJECT_ID: Your Google Cloud project ID
PROCESSOR_ID: The ID of your custom processor
Datenschema abrufen
HTTP-Methode
GET https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/datasetSchemaCURL
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/datasetSchema"Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"name": "projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/datasetSchema",
"documentSchema": {
"entityTypes": [
{
"name": $SCHEMA_NAME,
"baseTypes": [
"document"
],
"properties": [
{
"name": $LABEL_NAME,
"valueType": $VALUE_TYPE,
"occurrenceType": $OCCURRENCE_TYPE,
"propertyMetadata": {}
},
],
"entityTypeMetadata": {}
}
]
}
}Dokumentschema aktualisieren
In diesem Beispiel wird gezeigt, wie Sie mit
dataset.updateDatasetSchema
das aktuelle Schema aktualisieren. Dieses Beispiel zeigt einen Befehl zum Aktualisieren des Dataset-Schemas, sodass es ein Label enthält. Wenn Sie ein neues Label hinzufügen möchten, ohne vorhandene Labels zu löschen oder zu aktualisieren, können Sie zuerst getDatasetSchema aufrufen und entsprechende Änderungen in der Antwort vornehmen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
LOCATION: Your processor location
PROJECT_ID: Your Google Cloud project ID
PROCESSOR_ID: The ID of your custom processor
LABEL_NAME: The label name which you want to add
LABEL_DESCRIPTION: Describe what the label represents
DATA_TYPE: The type of the label. You can specify this as string, number, currency, money, datetime, address, boolean.
OCCURRENCE_TYPE: Describes the number of times this label is expected. Pick an enum value.
Schema aktualisieren
HTTP-Methode
PATCH https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/datasetSchemaAnfrage (JSON):
{
"document_schema": {
"entityTypes": [
{
"name": $SCHEMA_NAME,
"baseTypes": [
"document"
],
"properties": [
{
"name": LABEL_NAME,
"description": LABEL_DESCRIPTION,
"valueType": DATA_TYPE,
"occurrenceType": OCCURRENCE_TYPE,
"propertyMetadata": {}
},
],
"entityTypeMetadata": {}
}
]
}
}Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:
CURL
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/datasetSchema"Labelattribute auswählen
Datentyp
Plain text: Ein Stringwert.Number: Eine Zahl – eine Ganzzahl oder eine Gleitkommazahl.Money: Ein Geldwert. Verwenden Sie beim Labeln kein Währungssymbol.- Wenn die Entität extrahiert wird, wird sie in
google.type.Moneynormalisiert.
- Wenn die Entität extrahiert wird, wird sie in
Currency: Ein Währungssymbol.Datetime: Ein Datums- oder Zeitwert.- Wenn die Entität extrahiert wird, wird sie
in das
ISO 8601Textformat normalisiert.
- Wenn die Entität extrahiert wird, wird sie
in das
Address- Eine Adresse.- Wenn die Entität extrahiert wird, wird sie normalisiert und mit EKG angereichert.
Checkbox: Ein boolescher Wert (trueoderfalse).Signature– eintrueoderfalseboolescher Wert innormalized_value.signature_value, der angibt, ob eine Signatur vorhanden ist. Diederive-Methoden werden unterstützt.mention_text: Ein boolescher Wert (Detectedoder leer"") inhas_signed, der angibt, ob eine Signatur vorhanden ist. Diederive-Methoden werden unterstützt.normalized_value.text: Ein boolescher Wert (Detectedoder leer"") inhas_signed, der angibt, ob eine Signatur vorhanden ist. Diederive-Methoden werden unterstützt.normalized_value.boolean_valueist nicht ausgefüllt.
Methode
- Wenn die Entität
extractedist, sind die FeldertextAnchor,type,mentionText, undpageAnchorausgefüllt. - Wenn die Entität
derivedist, sind die abgeleiteten Werte möglicherweise nicht im Dokumenttext vorhanden. Die FeldertextAnchorundpageAnchor.pageRefs[].bounding_polysind nicht ausgefüllt.
Vorkommen
Wählen Sie REQUIRED aus, wenn eine Entität immer in Dokumenten eines bestimmten Typs vorkommen soll. Wählen Sie OPTIONAL aus, wenn dies nicht der Fall ist.
Wählen Sie ONCE aus, wenn eine Entität einen Wert haben soll, auch wenn derselbe
Wert mehrmals im selben Dokument vorkommt. Wählen Sie MULTIPLE aus, wenn eine Entität mehrere Werte haben soll.
Übergeordnete und untergeordnete Labels
Übergeordnete und untergeordnete Labels (auch als tabellarische Entitäten bezeichnet) werden verwendet, um Daten in einer Tabelle zu labeln. Die folgende Tabelle enthält 3 Zeilen und 4 Spalten.

Sie können solche Tabellen mit übergeordneten und untergeordneten Labels definieren. In diesem Beispiel definiert das übergeordnete Label line-item eine Zeile der Tabelle.
Übergeordnetes Label erstellen
Wählen Sie auf der Seite Schema bearbeiten die Option Label erstellen aus.
Klicken Sie das Kästchen Dies ist ein übergeordnetes Label an und geben Sie die anderen Informationen ein. Das übergeordnete Label muss entweder
optional_multipleoderrequire_multipleals Vorkommen haben, damit es wiederholt werden kann, um alle Zeilen in der Tabelle zu erfassen.Klicken Sie auf Speichern.

Das übergeordnete Label wird auf der Seite Schema bearbeiten angezeigt. Daneben befindet sich die Option Untergeordnetes Label hinzufügen.
Untergeordnetes Label erstellen
Wählen Sie auf der Seite Schema bearbeiten neben dem übergeordneten Label die Option Untergeordnetes Label hinzufügen aus.
Geben Sie die Informationen für das untergeordnete Label ein.
Klicken Sie auf Speichern.
Wiederholen Sie diesen Vorgang für jedes untergeordnete Label, das Sie hinzufügen möchten.
Die untergeordneten Labels werden auf der Seite Schema bearbeiten unter dem übergeordneten Label eingerückt angezeigt.

Übergeordnete und untergeordnete Labels sind eine Vorschaufunktion und werden nur für Tabellen unterstützt. Die Verschachtelungstiefe ist auf 1 begrenzt. Das bedeutet, dass untergeordnete Entitäten keine anderen untergeordneten Entitäten enthalten können.
Schemalabels aus Dokumenten mit Labels erstellen
Erstellen Sie automatisch Schemalabels, indem Sie Document-JSON-Dateien mit Labels importieren.
Während des Document-Imports werden dem Schema-Editor neu hinzugefügte
Schemalabels hinzugefügt. Wählen Sie „Schema bearbeiten“ aus, um den Datentyp und den Vorkommenstyp der neuen Schemalabels zu überprüfen oder zu ändern. Wählen Sie nach der Bestätigung Schemalabels aus und wählen Sie Aktivieren aus.
Beispieldatensätze
Um Ihnen den Einstieg in Document AI Workbench zu erleichtern, werden Datasets in einem
öffentlichen Cloud Storage-Bucket bereitgestellt. Dieser Bucket enthält JSON-Beispieldateien mit und ohne Labels für mehrere Dokumententypen.
Document
Je nach Dokumenttyp können diese für Aufbautraining oder benutzerdefinierte Extraktoren verwendet werden.
gs://cloud-samples-data/documentai/Custom/
gs://cloud-samples-data/documentai/Custom/1040/
gs://cloud-samples-data/documentai/Custom/Invoices/
gs://cloud-samples-data/documentai/Custom/Patents/
gs://cloud-samples-data/documentai/Custom/Procurement-Splitter/
gs://cloud-samples-data/documentai/Custom/W2-redacted/
gs://cloud-samples-data/documentai/Custom/W2/
gs://cloud-samples-data/documentai/Custom/W9/