1. Einführung
Document AI ist eine Lösung zum Verständnis von Dokumenten, die unstrukturierte Daten wie Dokumente, E-Mails usw. aufnimmt, um die Daten leichter zu verstehen, zu analysieren und zu nutzen.
Durch die Verwendung von Uptraining mit Document AI Workbench können Sie eine höhere Genauigkeit bei der Dokumentverarbeitung erreichen, indem Sie zusätzliche mit Labels versehene Beispiele für spezialisierte Dokumenttypen bereitstellen und eine neue Modellversion erstellen.
In diesem Lab erstellen Sie einen Rechnungsparser-Prozessor, konfigurieren den Prozessor für das Aufbautraining, fügen Beispieldokumente mit Labels hinzu und trainieren den Prozessor weiter.
Das in diesem Lab verwendete Dokument-Dataset besteht aus zufällig generierten Rechnungen für ein fiktives Rohrleitungsunternehmen.
Voraussetzungen
Dieses Codelab baut auf Inhalten aus anderen Document AI-Codelabs auf.
Bevor Sie fortfahren, sollten Sie die folgenden Codelabs absolvieren.
- Optische Zeichenerkennung (OCR) mit Document AI (Python)
- Formularanalyse mit Document AI (Python)
- Spezialisierte Prozessoren mit Document AI (Python)
- Document AI-Prozessoren mit Python verwalten
- Document AI: Human in the Loop
Aufgaben in diesem Lab
- Konfigurieren Sie das Uptraining für einen Rechnungsparser-Prozessor.
- Verwenden Sie das Annotationstool, um Document AI-Trainingsdaten mit Labels zu versehen.
- Neue Modellversion trainieren.
- Bewerten Sie die Genauigkeit der neuen Modellversion.
Voraussetzungen
2. Einrichtung
In diesem Codelab wird davon ausgegangen, dass Sie die im Einführenden Codelab aufgeführten Schritte zur Document AI-Einrichtung abgeschlossen haben.
Führen Sie die folgenden Schritte aus, bevor Sie fortfahren:
3. Prozessor erstellen
Sie müssen zuerst einen Rechnungsparser-Prozessor für dieses Lab erstellen.
- Rufen Sie in der Console die Seite Document AI-Übersicht auf.
- Klicken Sie auf Prozessor erstellen, scrollen Sie nach unten zu Spezialisiert (oder geben Sie Rechnungsparser in die Suchleiste ein) und wählen Sie Rechnungsparser aus.
- Geben Sie ihr den Namen
codelab-invoice-uptraining
oder einen Namen, an den Sie sich erinnern, und wählen Sie aus der Liste die nächstgelegene Region aus.
- Klicken Sie auf Erstellen, um den Prozessor zu erstellen. Anschließend sollte die Seite „Prozessorübersicht“ angezeigt werden.
4. Dataset erstellen
Zum Trainieren des Prozessors müssen wir ein Dataset mit Trainings- und Testdaten erstellen, damit der Prozessor die Entitäten identifizieren kann, die extrahiert werden sollen.
Sie müssen in Cloud Storage einen neuen Bucket erstellen, um das Dataset zu speichern. Hinweis: Dies sollte sich nicht im selben Bucket befinden, in dem Ihre Dokumente derzeit gespeichert sind.
- Öffnen Sie Cloud Shell und führen Sie die folgenden Befehle aus, um einen Bucket zu erstellen. Alternativ können Sie in der Cloud Console einen neuen Bucket erstellen. Speichern Sie diesen Bucket-Namen, da Sie ihn später benötigen.
export PROJECT_ID=$(gcloud config get-value project)
gsutil mb -p $PROJECT_ID "gs://${PROJECT_ID}-uptraining-codelab"
- Wechseln Sie zum Tab Dataset und klicken Sie auf Dataset erstellen.
- Fügen Sie den Bucket-Namen aus dem in Schritt 1 erstellten Bucket in das Feld Destination Path (Zielpfad) ein. (
gs://
weglassen)
- Warten Sie, bis das Dataset erstellt wurde. Anschließend sollten Sie zur Seite für die Dataset-Verwaltung weitergeleitet werden.
5. Testdokument importieren
Importieren wir nun eine Beispielrechnung im PDF-Format in unser Dataset.
- Klicken Sie auf Dokumente importieren.
- Wir haben eine Beispiel-PDF für dieses Lab vorbereitet. Kopieren Sie den folgenden Link und fügen Sie ihn in das Feld Quellpfad ein. „Datenaufteilung“ verlassen als „Nicht zugewiesen“ vorerst. Klicken Sie auf Importieren.
cloud-samples-data/documentai/codelabs/uptraining/pdfs
- Warten Sie, bis das Dokument importiert wurde. In meinen Tests hat das weniger als eine Minute gedauert.
- Wenn der Import abgeschlossen ist, sollten Sie das Dokument in der UI zur Dataset-Verwaltung sehen. Klicken Sie darauf, um die Labeling Console aufzurufen.
6. Label für das Testdokument hinzufügen
Als Nächstes identifizieren wir Textelemente und Beschriftungen für die Entitäten, die wir extrahieren möchten. Diese Labels werden verwendet, um unser Modell zu trainieren, um diese spezifische Dokumentstruktur zu parsen und die richtigen Typen zu identifizieren.
- Sie sollten sich jetzt in der Labeling-Konsole befinden. Das sieht ungefähr so aus.
- Klicken Sie auf „Text auswählen“. und markieren Sie den Text „McWilliam Piping International Piping Company“. und weisen Sie das Label
supplier_name
zu. Mit dem Textfilter können Sie nach Labelnamen suchen.
- Markieren Sie den Text „14368 Pipeline Ave Chino, CA 91710“. und weisen Sie das Label
supplier_address
zu.
- Markieren Sie den Text „10001“. und weisen Sie das Label
invoice_id
zu.
- Markieren Sie den Text „2020-01-02“ und weisen Sie das Label
due_date
zu.
- Zum Begrenzungsrahmen wechseln . Markieren Sie den Text „Knuckle Couplers“. und weisen Sie das Label
line_item/description
zu.
- Markieren Sie den Text „9“ und weisen Sie das Label
line_item/quantity
zu.
- Markieren Sie den Text „74,43“. und weisen Sie das Label
line_item/unit_price
zu.
- Markieren Sie den Text „669.87“. und weisen Sie das Label
line_item/amount
zu.
- Wiederholen Sie die vorherigen vier Schritte für die nächsten beiden Werbebuchungen. Wenn der Vorgang abgeschlossen ist, sollte das so aussehen.
- Markieren Sie den Text „1.419.57“. (neben „Zwischensumme“) und weisen Sie das Label
net_amount
zu.
- Markieren Sie den Text „113.57“. (neben Steuern) und weisen Sie das Label
total_tax_amount
zu.
- Markieren Sie den Text „1.533.14“. (neben „Gesamt“) und weisen Sie das Label
total_amount
zu.
- Markieren Sie eines der „$“ Zeichen und weisen Sie das Label
currency
zu.
- Das mit einem Label versehene Dokument sollte nach Fertigstellung wie folgt aussehen. Hinweis: Sie können Anpassungen an diesen Labels vornehmen, indem Sie auf den Begrenzungsrahmen im Dokument oder auf den Namen/Wert des Labels im Menü auf der linken Seite klicken. Klicken Sie auf Speichern, wenn Sie mit dem Hinzufügen von Labels fertig sind.
- Hier ist eine vollständige Liste der Labels und Werte,
Labelname | Text |
| McWilliam Piping International Piping Company |
| 14368 Pipeline Ave Chino, CA 91710, USA |
| 10001 |
| 2020-01-02 |
| Janney-Kupplung |
| 9 |
| 74,43 |
| 669,87 |
| PVC-Rohre 12" |
| 7 |
| 15,90 |
| 111,30 |
| Kupferrohr |
| 7 |
| 91,20 |
| 638,40 |
| 1.419,57 |
| 113,57 |
| 1.533,14 |
| € |
7. Dokument dem Trainings-Dataset zuweisen
Sie sollten sich jetzt wieder in der Dataset-Verwaltungskonsole befinden. Beachten Sie, dass sich sowohl die Anzahl der Dokumente mit und ohne Label als auch die Anzahl der aktiven Labels geändert haben.
- Wir müssen dieses Dokument entweder dem oder „Testen“ festgelegt. Klicken Sie auf das Dokument.
- Klicken Sie auf Assign to Set (Zum Festlegen zuweisen) und dann auf Training (Training).
- Beachten Sie, dass sich die Zahlen für die Datenaufteilung geändert haben.
8. Vorab mit Labels versehene Daten importieren
Das Document AI-Training benötigt im Trainings- und im Test-Dataset mindestens 10 Dokumente sowie jeweils 10 Instanzen jedes Labels in jedem Dataset.
Für eine optimale Leistung wird empfohlen, in jedem Satz mindestens 50 Dokumente mit 50 Instanzen jedes Labels zu haben. Eine größere Menge an Trainingsdaten führt in der Regel zu einer höheren Genauigkeit.
Es wird sehr lange dauern, 100 Dokumente manuell mit Labels zu versehen. Daher haben wir einige bereits mit Labels versehene Dokumente, die Sie für dieses Lab importieren können.
Sie können Dokumentdateien mit vorinstallierten Labels im Document.json
-Format importieren. Dies kann durch das Aufrufen eines Prozessors und die Überprüfung der Genauigkeit mithilfe von Human in the Loop (HITL) entstehen.
- Klicken Sie auf Dokumente importieren.
- Kopieren Sie den folgenden Cloud Storage-Pfad und fügen Sie ihn ein und weisen Sie ihn dem Dataset Training zu.
cloud-samples-data/documentai/codelabs/uptraining/training
- Klicken Sie auf Weiteren Bucket hinzufügen. Kopieren Sie dann den folgenden Cloud Storage-Pfad und fügen Sie ihn ein und weisen Sie ihn dem Set Test zu.
cloud-samples-data/documentai/codelabs/uptraining/test
- Klicken Sie auf Importieren und warten Sie, bis die Dokumente importiert wurden. Dies dauert länger als beim letzten Mal, da noch mehr Dokumente verarbeitet werden müssen. In meinen Tests dauerte dies etwa 6 Minuten. Sie können diese Seite in der Zwischenzeit verlassen und später wieder zurückkehren.
- Anschließend sollten die Dokumente auf der Seite „Dataset-Verwaltung“ angezeigt werden.
9. Labels bearbeiten
Die in diesem Beispiel verwendeten Beispieldokumente enthalten nicht jedes vom Rechnungsparser unterstützte Label. Wir müssen die Labels, die wir nicht verwenden, vor dem Training als inaktiv markieren. Sie können ähnliche Schritte auch ausführen, um vor dem Aufbautraining ein benutzerdefiniertes Label hinzuzufügen.
- Klicken Sie links unten auf Labels verwalten.
- Sie sollten sich jetzt in der Konsole für die Labelverwaltung befinden.
- Verwenden Sie die Kästchen und die Schaltflächen Deaktivieren/Aktivieren, um NUR die folgenden Labels als Aktiviert zu markieren.
currency
due_date
invoice_id
line_item/amount
line_item/description
line_item/quantity
line_item/unit_price
net_amount
supplier_address
supplier_name
total_amount
total_tax_amount
- Die Konsole sollte nach Abschluss folgendermaßen aussehen. Klicken Sie abschließend auf Speichern.
- Klicken Sie auf den Zurückpfeil, um zur Dataset-Verwaltungskonsole zurückzukehren. Beachten Sie, dass die Labels mit 0 Instanzen als inaktiv markiert wurden.
10. Optional: neu importierte Dokumente automatisch mit Labels versehen
Wenn Sie Dokumente ohne Label für einen Prozessor mit einer vorhandenen Prozessorversion importieren, können Sie mit der automatischen Labelerstellung bei der Labelerstellung Zeit sparen.
- Klicken Sie auf der Seite Trainieren auf Import Documents (Dokumente importieren).
- Kopieren Sie den folgenden -Pfad und fügen Sie ihn ein. Dieses Verzeichnis enthält fünf Rechnungs-PDFs ohne Labels. Wählen Sie in der Drop-down-Liste Datenaufteilung die Option Training aus.
cloud-samples-data/documentai/Custom/Invoices/PDF_Unlabeled
- Klicken Sie im Bereich Automatisches Labeling das Kästchen Mit automatischem Labeling importieren an.
- Wählen Sie eine vorhandene Prozessorversion aus, um den Dokumenten Labels hinzuzufügen.
- Beispiel:
pretrained-invoice-v1.3-2022-07-15
- Klicken Sie auf Importieren und warten Sie, bis die Dokumente importiert wurden. Sie können diese Seite in der Zwischenzeit verlassen und später wieder zurückkehren.
- Anschließend werden die Dokumente auf der Seite Trainieren im Bereich Automatisch mit Label versehen angezeigt.
- Automatisch mit Labels versehene Dokumente können nicht für Trainings- oder Testzwecke verwendet werden, ohne sie als „Mit Label versehen“ zu markieren. Im Bereich Automatisch mit Labels versehen können Sie sich die Dokumente mit automatisch hinzugefügten Labels ansehen.
- Wählen Sie das erste Dokument aus, um die Labeling-Konsole aufzurufen.
- Prüfen Sie, ob die Labels, Begrenzungsrahmen und Werte korrekt sind. Kennzeichnen Sie alle Werte, die weggelassen wurden, mit einem Label.
- Wählen Sie abschließend Als gekennzeichnet markieren aus.
- Wiederholen Sie die Labelüberprüfung für jedes Dokument mit automatischem Label und kehren Sie dann zur Seite Trainieren zurück, um die Daten für das Training zu verwenden.
11. Aufbautraining des Modells durchführen
Jetzt können wir mit dem Training des Rechnungsparsers beginnen.
- Klicken Sie auf Train New Version (Neue Version trainieren).
- Geben Sie der Version einen Namen, an den Sie sich erinnern, z. B.
codelab-uptraining-test-1
. Die Basisversion ist die Modellversion, aus der diese neue Version erstellt wird. Wenn Sie einen neuen Prozessor verwenden, sollte Google Pretrained Next with Uptraining (Google Pretrained Next mit Uptraining) verwendet werden.
- (Optional) Sie können auch Labelstatistiken anzeigen auswählen, um Messwerte zu den Labels in Ihrem Dataset anzuzeigen.
- Klicken Sie auf Training starten, um mit dem Aufbautraining zu beginnen. Sie werden daraufhin automatisch zur Seite für die Dataset-Verwaltung weitergeleitet. Rechts auf der Seite sehen Sie den Trainingsstatus. Das Training dauert einige Stunden. Sie können diese Seite in der Zwischenzeit verlassen und später wieder zurückkehren.
- Wenn Sie auf den Versionsnamen klicken, werden Sie zur Seite Versionen verwalten weitergeleitet, auf der die Versions-ID und der aktuelle Status des Trainingsjobs angezeigt werden.
12. Neue Modellversion testen
Sobald der Trainingsjob abgeschlossen ist (in meinen Tests hat es etwa eine Stunde gedauert), können Sie jetzt die neue Modellversion testen und für Vorhersagen verwenden.
- Rufen Sie die Seite Versionen verwalten auf. Hier sehen Sie den aktuellen Status und den F1-Wert.
- Wir müssen diese Modellversion bereitstellen, bevor wir sie verwenden können. Klicken Sie rechts auf die vertikalen Punkte und wählen Sie Deploy Version (Version bereitstellen) aus.
- Wählen Sie im Pop-up-Fenster Bereitstellen aus, wenn Sie auf die Bereitstellung der Version warten. Das dauert einige Minuten. Nach der Bereitstellung können Sie diese Version auch als Standardversion festlegen.
- Wechseln Sie nach der Bereitstellung zum Tab Bewerten. Klicken Sie dann auf das Dropdown-Menü Version und wählen Sie unsere neu erstellte Version aus.
- Auf dieser Seite finden Sie Bewertungsmesswerte wie F1-Wert, Genauigkeit und Trefferquote für das gesamte Dokument sowie für einzelne Labels. Weitere Informationen zu diesen Messwerten finden Sie in der AutoML-Dokumentation.
- Laden Sie die unten verlinkte PDF-Datei herunter. Dies ist ein Beispieldokument, das nicht im Trainings- oder Test-Dataset enthalten war.
- Klicken Sie auf Upload Test Document (Testdokument hochladen) und wählen Sie die PDF-Datei aus.
- Die extrahierten Entitäten sollten in etwa so aussehen.
13. Fazit
Herzlichen Glückwunsch! Sie haben mit Document AI das Aufbautraining eines Rechnungsparsers durchgeführt. Sie können diesen Prozessor jetzt genau wie alle spezialisierten Auftragsverarbeiter verwenden, um Rechnungen zu parsen.
Informationen zur Verarbeitung der Verarbeitungsantwort finden Sie im Codelab zu spezialisierten Prozessoren.
Clean-up
So vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
- Rufen Sie in der Cloud Console die Seite Ressourcen verwalten auf.
- Wählen Sie Ihr Projekt in der Projektliste aus und klicken Sie auf „Löschen“.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie dann auf „Beenden“, um das Projekt zu löschen.
Ressourcen
- Dokumentation zu Document AI Workbench
- The Future of Documents – YouTube-Playlist
- Dokumentation zu Document AI
- Document AI-Clientbibliothek für Python
- Document AI-Beispiele
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.