Dataset erstellen
Zum Trainieren, Aktualisieren oder Bewerten einer Prozessorversion ist ein Dataset 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, wird in der Google Cloud Console der Tab Train angezeigt.
Speicheroptionen für Datensätze
Sie haben zwei Möglichkeiten, den Datensatz zu speichern:
- Von Google verwaltet
- Benutzerdefinierter Speicherort in Cloud Storage
Sofern Sie keine speziellen Anforderungen haben (z. B. Dokumente in einer Reihe von CMEK-kompatiblen Ordnern speichern möchten), empfehlen wir die einfachere Option für von Google verwalteten Speicher. Nach dem Erstellen kann die Speicheroption für den Dataset-Prozessor nicht mehr geändert werden.
Der Ordner oder Unterordner für einen benutzerdefinierten Cloud Storage-Speicherort muss leer beginnen und als schreibgeschützt behandelt werden. Manuelle Änderungen am Inhalt können den Datensatz unbrauchbar machen und das Risiko eines Datenverlusts erhöhen. Bei der Option „Von Google verwalteter Speicherplatz“ besteht dieses Risiko nicht.
So stellen Sie Ihren Speicherort bereit:
Von Google verwalteter Speicher (empfohlen)
Erweiterte Optionen beim Erstellen eines neuen Prozessors anzeigen
Lassen Sie die Standardoption „Von Google verwaltet“ ausgewählt.
Wählen Sie Erstellen aus.
Prüfen Sie, ob das Dataset erfolgreich erstellt wurde und sich der Speicherort des Datasets auf einem von Google verwalteten Speicherort befindet.
Benutzerdefinierte Speicheroption
Aktivieren oder deaktivieren Sie die erweiterten Optionen.
Wählen Sie Ich gebe einen 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 Methode processors.updateDataset ein Dataset erstellen. Eine Datensatzressource ist eine Singleton-Ressource in einem Prozessor. Das bedeutet, dass es keine RPC-Erstellungsressource gibt. Stattdessen können Sie die Einstellungen mit dem updateDataset
-RPC festlegen. Mit Document AI haben Sie 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
Von Ihnen bereitgestellter Bucket
Führen Sie die nächsten Schritte aus, um eine Datasetanfrage mit einem von Ihnen angegebenen 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 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/dataset
JSON-Anfrage:
{
"name":"projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/dataset"
"unmanaged_dataset_config": {}
"spanner_indexing_config": {}
}
Sie können Curl verwenden, um Ihre Anfrage zu 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 und einen oder mehrere Cloud Storage-Ordner mit den Dokumenten aus, die Sie dem Datensatz 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 an diesem Speicherort lesen kann. Insbesondere müssen Sie dem Hauptdienst-Agenten von Document AI (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 Optionen für die Aufgabe aus:
- Training: Dem Trainings-Dataset zuweisen.
- Test: Zu Test-Dataset zuweisen.
- Automatische Aufteilung: Die Dokumente im Trainings- und Test-Dataset werden zufällig gemischt.
- 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-Document
-Dateien in den Datensatz importiert. Bei JSON-Dateien vom Typ Document
importiert Document AI das Dokument und konvertiert die entities
in Labelinstanzen.
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, bei denen der Import fehlgeschlagen ist.
Wenn Sie bereits eine Version des Prozessors haben, können Sie im Dialogfeld Dokumente importieren das Kästchen Mit automatischem Labeling importieren anklicken. Die Dokumente werden beim Import automatisch mit dem vorherigen Prozessor getaggt. Sie können keine automatisch mit Labels versehenen Dokumente für das Training oder die Aktualisierung verwenden oder sie im Testsatz verwenden, ohne sie als „Mit Label versehen“ zu markieren. Nachdem Sie automatisch getaggte Dokumente importiert haben, sollten Sie sie manuell überprüfen und korrigieren. Wählen Sie dann Speichern aus, um die Korrekturen zu speichern und das Dokument als beschriftet zu kennzeichnen. Anschließend können Sie die Dokumente entsprechend zuweisen. Weitere Informationen finden Sie unter Automatisches Labeling.
Importieren von Dokumenten – RPC
In diesem Beispiel wird gezeigt, wie Sie mit der Methode dataset.importDocuments Dokumente in den Datensatz 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 das Trainings- und das Test-Dataset 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"
}
Delete documents RPC
In diesem Beispiel wird gezeigt, wie Sie mit der Methode dataset.batchDeleteDocuments Dokumente aus dem Datensatz 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 Test-Dataset zuweisen
Wählen Sie unter Datenaufteilung Dokumente aus und weisen Sie sie entweder dem Trainings- oder dem Test-Dataset zu oder lassen Sie sie unbelegt.
Best Practices für Testsätze
Die Qualität Ihres Test-Datasets bestimmt die Qualität Ihrer Bewertung.
Der Testsatz sollte zu Beginn des Prozessorentwicklungszyklus erstellt und so festgelegt werden, dass Sie die Qualität des Prozessors im Zeitverlauf verfolgen können.
Wir empfehlen für den Testsatz mindestens 100 Dokumente pro Dokumenttyp. Es ist wichtig, dass der Testsatz repräsentativ für die Dokumenttypen ist, die Kunden für das entwickelte Modell verwenden.
Der Testsatz sollte hinsichtlich der Häufigkeit repräsentativ für den Produktionstraffic sein. Wenn Sie beispielsweise W2-Formulare verarbeiten und davon ausgehen, dass 70% auf das Jahr 2020 und 30% auf das Jahr 2019 entfallen, sollten etwa 70% des Testsatzes aus W2-2020-Dokumenten bestehen. Durch eine solche Zusammensetzung des Testsatzes wird sichergestellt, dass jeder Dokumentuntertyp bei der Bewertung der Leistung des Prozessors angemessen berücksichtigt wird. Wenn Sie Namen von Personen aus internationalen Formularen extrahieren, muss Ihr Testsatz auch Formulare aus allen Zielländern enthalten.
Best Practices für den Trainingssatz
Dokumente, die bereits im Testsatz enthalten sind, sollten nicht in den Trainingssatz aufgenommen werden.
Im Gegensatz zum Testsatz muss der finale Trainingssatz nicht so genau repräsentativ für die Nutzung durch den Kunden in Bezug auf Dokumentenvielfalt oder -häufigkeit sein. Einige Labels sind schwieriger zu trainieren als andere. Daher können Sie möglicherweise eine bessere Leistung erzielen, wenn Sie den Trainingssatz auf diese Labels ausrichten.
Am Anfang ist es schwierig zu erkennen, welche Labels schwierig sind. Sie sollten mit einem kleinen, zufällig ausgewählten Anfangstrainingssatz beginnen und dabei den für den Testsatz beschriebenen Ansatz verwenden. Dieses erste Trainingsset 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 (auf bestimmte Fehlermuster achten) 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.
Mit der 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 dann nach Bedarf Labels.
Wählen Sie abschließend Speichern aus.
Hinweise zur Verwaltung von Schemalabels:
Nachdem ein Schemalabel erstellt wurde, kann der Name des Schemalabels nicht mehr bearbeitet werden.
Ein Schemalabel kann nur bearbeitet oder gelöscht werden, wenn es keine trainierten Prozessorversionen gibt. Nur Datentyp und Ereignistyp können bearbeitet werden.
Das Deaktivieren eines Labels hat auch keine Auswirkungen auf die Vorhersage. Wenn Sie einen Verarbeitungsantrag senden, werden von der Prozessorversion alle Labels extrahiert, die zum Zeitpunkt des Trainings aktiv waren.
Datenschema abrufen
In diesem Beispiel wird gezeigt, wie Sie mit getDatasetSchema das aktuelle Schema des Datensatzes abrufen. DatasetSchema
ist eine Singleton-Ressource, die automatisch erstellt wird, wenn Sie eine Datensatzressource 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 wird ein Befehl zum Aktualisieren des Datensatzschemas auf ein Label gezeigt. Wenn Sie ein neues Label hinzufügen, aber keine vorhandenen Labels löschen oder aktualisieren möchten, können Sie zuerst getDatasetSchema
aufrufen und die entsprechenden Ä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"
Labelattribute auswählen
Datentyp
Plain text
: Ein Stringwert.Number
: eine Zahl – Ganzzahl oder Gleitkommazahl.Money
: ein Geldwert. Geben Sie bei der Kennzeichnung kein Währungssymbol an.- Beim Extrahieren des Elements wird es auf
google.type.Money
normalisiert.
- Beim Extrahieren des Elements wird es auf
Currency
: ein Währungssymbol.Datetime
: ein Datums- oder Zeitwert.- Wenn die Entität extrahiert wird, wird sie in das Textformat
ISO 8601
normalisiert.
- Wenn die Entität extrahiert wird, wird sie in das Textformat
Address
: eine Standortadresse.- Beim Extrahieren wird das Entitätsobjekt normalisiert und mit EKG angereichert.
Checkbox
– ein boolescher Wert vom Typtrue
oderfalse
.
Vorkommen
Wählen Sie REQUIRED
aus, wenn eine Entität voraussichtlich immer in Dokumenten eines bestimmten Typs vorkommt. Wählen Sie OPTIONAL
aus, wenn keine solche Erwartung besteht.
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 ein Element voraussichtlich mehrere Werte hat.
Übergeordnete und untergeordnete Labels
Mit übergeordneten und untergeordneten Labels (auch tabellarische Entitäten genannt) werden Daten in einer Tabelle beschriftet. Die folgende Tabelle enthält 3 Zeilen und 4 Spalten.
Sie können solche Tabellen mithilfe von ü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 Das ist ein übergeordnetes Label an und geben Sie die übrigen Informationen ein. Das übergeordnete Label muss entweder
optional_multiple
oderrequire_multiple
enthalten, 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. Neben dem Label 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 diese Schritte 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.
Eltern-Kind-Labels sind eine Vorschaufunktion und werden nur für Tabellen unterstützt. Die Verschachtelungstiefe ist auf 1 beschränkt. Das bedeutet, dass untergeordnete Entitäten keine anderen untergeordneten Entitäten enthalten können.
Schemalabels aus beschrifteten Dokumenten erstellen
Sie können Schemalabels automatisch erstellen, indem Sie vorab mit Labels versehene Document
-JSON-Dateien importieren.
Während der Import von Document
läuft, werden dem Schema-Editor neu hinzugefügte Schemalabels hinzugefügt. Wählen Sie „Schema bearbeiten“ aus, um den Datentyp und den Auftretenstyp der neuen Schemalabels zu prüfen oder zu ändern. Wählen Sie dann Schemalabels und Aktivieren aus.
Beispieldatensätze
Für den Einstieg in die Document AI Workbench werden Datasets in einem öffentlichen Cloud Storage-Bucket bereitgestellt, der vorab beschriftete und unbeschriftete Beispiel-JSON-Dateien vom Typ Document
für verschiedene Dokumenttypen enthält.
Je nach Dokumenttyp können sie für das Auffrischen 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/