Dataset erstellen

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 Labeln der importierten Dokumente finden Sie unter Dokumente labeln.

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 den Tab Trainieren in der Google Cloud Konsole.

Optionen für den Dataset-Speicher

Sie haben zwei Möglichkeiten, Ihr Dataset zu speichern:

  • Von Google verwaltet
  • Benutzerdefinierter Speicherort für Cloud Storage

Sofern Sie keine besonderen Anforderungen haben (z. B. um Dokumente in einer Reihe von CMEK-fähigen Ordnern zu speichern), empfehlen wir die einfachere von Google verwaltete Speicheroption. Nach dem Erstellen kann die Speicheroption für das Dataset 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 das Dataset unbrauchbar machen und zum Verlust führen. Bei der Option „Von Google verwalteter Speicherplatz“ besteht dieses Risiko nicht.

So stellen Sie Ihren Speicherort bereit:

  1. Erweiterte Optionen beim Erstellen eines neuen Prozessors anzeigen

    create-dataset-1

  2. Behalten Sie die Standardoption für die Radiogruppe Von Google verwaltet bei.

    create-dataset-2

  3. Wählen Sie Erstellen aus.

    create-dataset-3

  4. Prüfen Sie, ob das Dataset erfolgreich erstellt wurde und der Dataset-Speicherort Von Google verwalteter Speicherort ist.

    create-dataset-4

Option für benutzerdefinierten Speicher

  1. Aktivieren oder deaktivieren Sie die erweiterten Optionen.

    create-dataset-1

  2. Wählen Sie Ich gebe einen eigenen Speicherort an aus.

    create-dataset-5

  3. Wählen Sie im Eingabefeld einen Cloud Storage-Ordner aus.

    create-dataset-6

  4. Wählen Sie Erstellen aus.

    create-dataset-7

Dataset API-Vorgänge

In diesem Beispiel wird gezeigt, wie Sie mit der Methode 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 die RPC updateDataset verwenden, um die Einstellungen festzulegen. Mit Document AI können Sie die Dataset-Dokumente in einem von Ihnen bereitgestellten Cloud Storage-Bucket speichern oder automatisch von Google verwalten 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

Folgen Sie der Anleitung, 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/dataset

JSON-Anfrage:

  {
      "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 ein von Google verwaltetes 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/dataset

JSON-Anfrage:

  {
      "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-Bucket in einem anderen Google Cloud -Projekt befindet, müssen Sie Zugriff gewähren, damit Document AI Dateien von diesem Speicherort lesen darf. Sie müssen dem Hauptdienst-Agent von Document AI, service-{project-id}@gcp-sa-prod-dai-core.iam.gserviceaccount.com, die Rolle Storage-Objekt-Betrachter zuweisen. Weitere Informationen finden Sie unter Dienst-Agents.

create-dataset-8

Wählen Sie dann eine der folgenden Zuweisungsoptionen aus:

  • Training: Dem Trainings-Dataset zuweisen.
  • Test: Dem Testset zuweisen.
  • Automatische Aufteilung: Dokumente werden zufällig in Trainings- und Test-Datasets aufgeteilt.
  • Nicht zugewiesen: Wird nicht für Training oder Tests verwendet. Sie können sie später manuell zuweisen.

Sie können die Zuweisungen später jederzeit ändern.

Wenn Sie Importieren auswählen, werden alle unterstützten Dateitypen sowie JSON-Dateien Document in das Dataset importiert. Bei JSON-Dateien Document importiert Document AI das Dokument und konvertiert die entities in Label-Instanzen.

Document AI ändert den Importordner nicht und liest nicht aus dem Ordner, nachdem der Import abgeschlossen ist.

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 Version Ihres Prozessors haben, können Sie im Dialogfeld Dokumente importieren das Kästchen Mit automatischem Labeling importieren anklicken. Die Dokumente werden beim Importieren automatisch mit dem vorherigen Prozessor gelabelt. Sie können keine Trainings oder Up-Trainings für automatisch mit Labels versehene Dokumente durchführen oder sie im Testset verwenden, ohne sie als „Mit Label versehen“ zu markieren. Nachdem Sie automatisch gelabelte Dokumente importiert haben, müssen Sie sie manuell überprüfen und korrigieren. Wählen Sie dann Speichern aus, um die Korrekturen zu speichern und das Dokument als gelabelt zu kennzeichnen. Anschließend können Sie die Dokumente entsprechend zuweisen. Weitere Informationen finden Sie unter Automatisches Labeling.

RPC zum Importieren von Dokumenten

In diesem Beispiel wird gezeigt, wie Sie die Methode dataset.importDocuments verwenden, um Dokumente in das Dataset zu 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

So fügen Sie dem Trainings- oder Test-Dataset Dokumente hinzu:

HTTP-Methode

POST https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/importDocuments

JSON-Anfrage:

  {
      "batch_documents_import_configs": {
          "dataset_split": DATASET_TYPE
          "batch_input_config": {
          "gcs_prefix": {
              "gcs_uri_prefix": GCS_URI
          }
          }
      }
  }

Trainings- und Test-Dataset

So teilen Sie die Dokumente automatisch in Trainings- und Test-Datasets auf:

HTTP-Methode

POST https://LOCATION-documentai.googleapis.com/v1beta3/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset/importDocuments

JSON-Anfrage:

  {
      "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 die Methode dataset.batchDeleteDocuments verwenden, um Dokumente aus dem Dataset zu 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/batchDeleteDocuments

JSON-Anfrage:

  {
  "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 Testset zuweisen

Wählen Sie unter Datenaufteilung Dokumente aus und weisen Sie sie dem Trainings-Dataset, dem Test-Dataset oder „Nicht zugewiesen“ zu.

create-dataset-9

Best Practices für Testsets

Die Qualität Ihres Test-Datasets bestimmt die Qualität Ihrer Auswertung.

Das Testset sollte zu Beginn des Entwicklungszyklus für den Prozessor erstellt und gesperrt werden, damit Sie die Qualität des Prozessors im Laufe der Zeit nachvollziehen können.

Wir empfehlen mindestens 100 Dokumente pro Dokumenttyp für den Testsatz. Es ist wichtig, dass das Testset repräsentativ für die Arten von Dokumenten ist, die Kunden für das entwickelte Modell verwenden.

Die Testgruppe sollte in Bezug auf die Häufigkeit repräsentativ für den Produktionstraffic sein. Wenn Sie beispielsweise W2-Formulare verarbeiten und 70% für das Jahr 2020 und 30% für das Jahr 2019 erwartet werden, sollten etwa 70% des Testsets aus W2-Dokumenten für 2020 bestehen. Eine solche Zusammensetzung des Testsatzes sorgt dafür, dass jeder Dokumentuntertyp bei der Bewertung der Prozessorleistung angemessen berücksichtigt wird. Wenn Sie Namen von Personen aus internationalen Formularen extrahieren, muss Ihr Testset Formulare aus allen Zielländern enthalten.

Best Practices für den Trainingssatz

Dokumente, die bereits im Test-Dataset enthalten sind, sollten nicht im Trainings-Dataset enthalten sein.

Im Gegensatz zum Testset muss das finale Trainingsset nicht so streng repräsentativ für die Kundennutzung in Bezug auf Dokumentvielfalt oder ‑häufigkeit sein. Einige Labels sind schwieriger zu trainieren als andere. Daher kann es sein, dass Sie eine bessere Leistung erzielen, wenn Sie das Trainings-Dataset auf diese Labels ausrichten.

Anfangs gibt es keine gute Möglichkeit, herauszufinden, welche Labels schwierig sind. Beginnen Sie mit einem kleinen, zufällig ausgewählten ersten Trainings-Dataset, das auf dieselbe Weise erstellt wird wie das Test-Dataset. Dieser erste Trainingssatz sollte etwa 10% der Gesamtzahl der Dokumente enthalten, die Sie annotieren 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.

Im schema des Prozessors werden die Labels wie Name und Adresse definiert, die aus Ihren Dokumenten extrahiert werden sollen.

Wählen Sie Schema bearbeiten aus und erstellen, bearbeiten, aktivieren und deaktivieren Sie Labels nach Bedarf.

Klicken Sie abschließend auf Speichern.

create-dataset-10

Hinweise zur Verwaltung von Schemalabels:

  • Nachdem ein Schemalabel erstellt wurde, kann sein Name nicht mehr bearbeitet werden.

  • Ein Schemalabel kann nur bearbeitet oder gelöscht werden, wenn keine trainierten Prozessorversionen vorhanden sind. Nur Datentyp und Häufigkeitstyp können bearbeitet werden.

  • Das Deaktivieren eines Labels hat auch keine Auswirkungen auf die Vorhersage. Wenn Sie eine Verarbeitungsanfrage senden, werden mit der Prozessorversion alle Labels extrahiert, die zum Zeitpunkt des Trainings aktiv waren.

Datenschema abrufen

In diesem Beispiel wird gezeigt, wie Sie das Dataset verwenden und mit 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/datasetSchema

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"

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. In diesem Beispiel sehen Sie einen Befehl zum Aktualisieren des Dataset-Schemas, sodass es nur 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/datasetSchema

JSON-Anfrage:

  {
      "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"

Label-Attribute auswählen

Datentyp

  • Plain text: Ein Stringwert.
  • Number: eine Zahl (Ganzzahl oder Gleitkommazahl).
  • Money: Ein Geldwert. Lassen Sie das Währungssymbol bei der Beschriftung weg.
  • Currency: ein Währungssymbol.
  • Datetime: Ein Datums- oder Zeitwert.
    • Wenn die Entität extrahiert wird, wird sie in das Textformat ISO 8601 normalisiert.
  • Address: eine Standortadresse.
    • Wenn die Entität extrahiert wird, wird sie normalisiert und mit EKG angereichert.
  • Checkbox: Ein boolescher Wert (true oder false).

Vorkommen

Wählen Sie REQUIRED aus, wenn eine Entität immer in Dokumenten eines bestimmten Typs vorkommen soll. Wählen Sie OPTIONAL aus, wenn es keine solche Erwartung gibt.

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 Einheit mehrere Werte haben soll.

Übergeordnete und untergeordnete Labels

Mit Über- und Unterordnungslabels (auch als tabellarische Einheiten bezeichnet) werden Daten in einer Tabelle gekennzeichnet. Die folgende Tabelle enthält 3 Zeilen und 4 Spalten.

create-dataset-11

Sie können solche Tabellen mit Labels für übergeordnete und untergeordnete Elemente definieren. In diesem Beispiel definiert das übergeordnete Label line-item eine Zeile der Tabelle.

Übergeordnetes Label erstellen

  1. Wählen Sie auf der Seite Schema bearbeiten die Option Label erstellen aus.

  2. Klicken Sie das Kästchen Das ist ein übergeordnetes Label an und geben Sie die anderen Informationen ein. Das übergeordnete Label muss entweder optional_multiple oder require_multiple enthalten, damit es wiederholt werden kann, um alle Zeilen in der Tabelle zu erfassen.

  3. Klicken Sie auf Speichern.

create-dataset-12

Das übergeordnete Label wird auf der Seite Schema bearbeiten angezeigt. Daneben befindet sich die Option Untergeordnetes Label hinzufügen.

Unterlabel erstellen

  1. Wählen Sie auf der Seite Schema bearbeiten neben dem übergeordneten Label die Option Untergeordnetes Label hinzufügen aus.

  2. Geben Sie die Informationen für das untergeordnete Label ein.

  3. Klicken Sie auf Speichern.

Wiederholen Sie den 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.

create-dataset-13

Untergeordnete Labels sind eine Vorschaufunktion und werden nur für Tabellen unterstützt. Die Schachtelungstiefe ist auf 1 begrenzt. Untergeordnete Entitäten können also keine weiteren untergeordneten Entitäten enthalten.

Schema-Labels aus Dokumenten mit Labels erstellen

Schemalabels automatisch erstellen, indem Sie vorab mit Labels versehene Document-JSON-Dateien importieren.

Während der Document-Import läuft, werden neu hinzugefügte Schemalabels dem Schema-Editor hinzugefügt. Wählen Sie „Schema bearbeiten“ aus, um den Datentyp und den Häufigkeitstyp neuer Schemalabels zu prüfen oder zu ändern. Wählen Sie nach der Bestätigung Schemalabels aus und klicken Sie auf Aktivieren.

Beispieldatensätze

Um den Einstieg in Document AI Workbench zu erleichtern, werden Datasets in einem öffentlichen Cloud Storage-Bucket bereitgestellt, der vorab gelabelte und nicht gelabelte Document-JSON-Beispieldateien verschiedener Dokumenttypen enthält.

Sie können je nach Dokumenttyp für das Nachtrainieren oder für 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/