Suche

über alle News und Events

 

Alle News

 

Durable Function ist eine Erweiterung der...

Weiterlesen

Wir haben eine gute, vor allem spannende und hoch...

Weiterlesen

Am 09.05.2022 wurde ein Artikel von Microsoft...

Weiterlesen

Neben den altbekannten Logic Apps (Consumption),...

Weiterlesen

Im Jahr 2022 fallen eine Reihe von .Net Versionen...

Weiterlesen

SAP in die Power Platform integrieren – In einem...

Weiterlesen

Bicep Templates benutzen eine deklarative Syntax...

Weiterlesen

In BizTalk gibt es einige Alternativen, wie...

Weiterlesen

Wir sind auf ein seltsames Phänomen bei einem...

Weiterlesen

Nach der Migration konnten in VS 2019 „normale“...

Weiterlesen

How-to: Azure Form Recognizer – auch mehrseitige Rechnungen mit Positions-Wechsel über das Seitenende sicher erkennen

Wir erklären das Verfahren des Taggings mehrerer PDF-Dateien, um daraus ein Azure Form Recognizer Modell zu trainieren, das Rechnungen von einem bestimmten Geschäftspartner erkennt. Und zwar auch dann, wenn mehrseitige Dokumente geschickt werden, die Positionstabellen beinhalten, die über das Seitenende hinausgehen.

Azure Form Recognizer ist ein Cognitive Service, der Key/Value Pairs aus einem Dokument extrahiert. Wir verwenden in diesem Dokument den Form Recognizer v2.1.

Voraussetzungen

  • Form Recognizer Service in Azure. Free Tier sollte reichen.
  • Blob Storage Account mit aktiviertem CORS:
    • Allowed Origins: *
    • Methods: [Select All]
    • Allowed Headers: *
    • Exposed Headers: *
    • TTL: 200
  • Self hosted Tagger. Es ist wichtig, dass es self-hosted ist.

 

Neues Projekt

Wenn man den Tagger öffnet, sieht man drei Icons. Die ersten zwei ermöglichen das Autotagging und die Nutzung von vordefinierten Modellen wie Rechnungen, Visitenkarten, Quittungen oder Identifikationsdokumente.

Wir möchten allerdings in der Lage sein, unser eigenes Modell kundenspezifisch zu trainieren: dafür klicken wir auf das dritte Icon "Use Custom...".

Danach klicken wir auf "Create New Project":

In dieser Maske gibt es Folgendes zu beachten:

  • Name: es handelt sich nicht um den Namen des Modells, der zum Trainingszeitpunkt vergeben werden kann, sondern um den Namen des Projektes
  • Security Token: man kann hier die Standardeinstellung belassen, d.h. "generate new token"
  • Connection: man muss eine neue Verbindung anlegen – das wird auf dem nächsten Bild schrittweise dargestellt
  • Der Dateipfad gibt dem Projekt an, wo es die Datei für das Training des Modells im Blob Container finden kann. Man kann verschiedene Modelle im gleichen Projekt trainieren, indem man den Pfad in der Projekteinstellung ändert.
  • Im URI Service gibt man den Endpunkt des Recognizers an.
  • Im Key Feld wird unser Azure Access Key angegeben.

Bei der Erstellung einer Verbindung gibt es nur eine Sache zu beachten:
Man muss die SAS-URI für den Container und nicht für den Storage Account eingeben. Azure testet die Verbindung nicht bereits in diesem Schritt, sondern erst, wenn man versucht, ein Projekt zu erstellen. Von daher, sofern man eine wohlgeformten SAS-URI angibt, wird keine Fehlermeldung ausgegeben, selbst wenn diese ungültig ist.

Tagging

Vor dem Training eines Modells muss man bestimmen, welche Felder man extrahieren möchte und wie sie gekennzeichnet sein sollten:

Simple Tags

Mit "simple tags" meinen wir all diese Tags, die durch einen Key/Value Pair gebildet werden können. Um sie zu definieren, muss man einfach auf das "+"-Zeichen klicken und den Tag angeben.

Um dem Tag einen Wert zuweisen, klickt man in die Datei und dann auf das Tag. Andernfalls kann man den Wert zuweisen, indem man ihn anklickt und die entsprechende Tastenkombination drückt: Die Tastenkombination entspricht der Zahl oder dem Buchstaben rechts neben dem Tag-Namen. Man kann mehr als einen Wert im Dokument wählen, wenn man "ctrl" oder "shift" gedrückt hält, bevor man sie einem Tag zuweist. Zusätzlich kann man einen Bereich kennzeichnen und einem Tag zuweisen. In diesem Fall wird dann jeder Wert innerhalb dieses Bereiches zugewiesen.

Wenn möglich, ist jedoch die Zuweisung von Labels durch gezeichnete Bereiche zu vermeiden.

Table Tags

Table Tags ermöglichen die Darstellung von Tabellen im Modell. Um ein neues Tabellen-Tag hinzuzufügen, klickt man einfach das "+" (mit Tabelle) -Zeichen, neben dem einfachen "+"-Zeichen. Hier kann man das Tabelle-Layout definieren, in dem bestimmt, welche Spalten und Reihen die Tabelle hat und ob sie statisch oder dynamisch sind.

Die Tags innerhalb einer Tabelle sind wieder Simple Tags.

Multipage Tags

Es ist zu beachten, dass es in der aktuellen Version v2.1 nicht möglich ist, Werte, die sich auf mehrere Seiten verteilen, einem einzelnen Tag zuzuweisen. Das ist aber bei Dokumenten der Fall, die Positionstabellen enthalten, die über das Seitenende hinaus gehen.

Um diese Schwäche zu umzugehen, kann man entweder ein Tag pro Seite erstellen und diese dann in einem Nachbearbeitungsschritt (Function) wieder zusammenführen. Das ist aber keine saubere Lösung –  für jede mögliche Anzahl an Seiten müsste ein Modell trainiert werden. Das ist nicht praktikabel ist.

Unsere Erfahrung hat gezeigt, dass es möglich ist, mit drei trainierten Modellen Rechnungen mit beliebigen Seitenzahlen sicher zu erkennen.

Die Lösung ist, dass wir ein Modell für die erste Seite (Kopf), eines für die Mitte (Positionen) und eines für die letzte Seite (Fuß) trainieren.

Diese drei Modelle erkennen dann mein gesamtes Dokument und es ist dann nur ein Nachbearbeitungsschritt (Function) notwendig, der die erkannten Werte wieder zu einem Ergebnis zusammenführt.

Training

Es wird von Microsoft gesagt, dass zum Training fünf Dokumente reichen. Wir haben herausgefunden, dass dies nicht genug ist, um ein verlässliches Modell zu erhalten. Aus diesem Grund schlagen wir vor, mit rund 20 Dokumente pro Modell zu trainieren. Es muss dennoch sichergestellt werden, dass das Modell mit verschiedenen Parametern (z. B. Werte im gleichen Tag, Werte Format, usw.) zu trainieren; andernfalls kann das Modell leicht "overfitted" sein, d. h. der Vertrauensanteil ist für das Training ziemlich hoch und trotzdem werden Testdaten nicht richtig erkannt.



Compose

Wir haben vorher erwähnt, dass wir verschiedene Modelle für verschiedene Seiten des gleichen Partners trainiert haben. Trotzdem wollen wir am Ende nur ein Model pro Partner haben. Das ergibt sich, indem man die verschiedenen Modelle zu einem Modell zusammenstellt. Dieses Modell entscheidet dann während der Analysezeit, welches Komponentenmodell am besten passt und setzt es ein. Im Ergebnis erkennt man, welches Modell eingesetzt wurde sowie das Vertrauen des zusammengestellten Modells bei der Anwendung dieses Modells.

Analyse

Mit der Analyse kann man ein Modell auf einem speziellen Dokument anwenden und prüfen, wie es funktioniert. Wenn man dabei feststellt, dass das Model etwas Bestimmtes nicht erkennt, kann man das Dokument zum Trainingssatz für das angewendete Modell hinzufügen. Zusätzlich kann man entscheiden, ob es sinnvoller ist, ein neues Modell zu erstellen und mehrere Training-Instanzen mit denselben Eigenschaften des vorliegenden Dokuments zu verwenden, um die Qualität weiter zu erhöhen.

Epilog

Wir freuen uns, eine Lösung für dieses Problem gefunden zu haben – allerdings wäre es natürlich wünschenswert, dass Microsoft hier in einer zukünftigen Version nachlegt und diese Erkennung selbständig möglich macht. Aktuell ist der Form Recognizer v3.0 angekündigt – dieser benutzt Deep Learning Modelle…

Viel Spaß bei Ausprobieren!

Enrique Castaneda, QUIBIQ Stuttgart

 

 

 

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz