AWS Textract

Einführung:

Amazon Textract ist ein vollständig von Amazon verwalteter Service aus der Gruppe der Machine-Learning-Services. Anhand von Optical Character Recognition (OCR) können Zeichen aus .jpg, .png oder .pdf Files extrahiert und verarbeitet werden. Somit stellt Textract eine Möglichkeit dar, alte Dokumentenbestände auf relevante Größen zu durchsuchen und für die digitale Weiterverarbeitung zur Verfügung zu stellen.

Am Ende dieses Artikels werden Sie mit den grundsätzlichen Fähigkeiten, Einschränkungen und Funktionalitäten von AWS-Textract vertraut sein und werden in der Lage sein, den Nutzen diese Services für Ihr Unternehmen einzuschätzen

Limitation von Textract:

Bei der Nutzung von Textract gilt es folgende Einschränkungen zu beachten:

  • Amazon Textract kann nur Latin-Script Zeichen und ASCII-Symbole auswerten, d.h. Umlaute, griechische Buchstaben und andere Sonderzeichen können nicht erkannt werden.
  • Die synchronous API unterstützt nur .png und .jpg Format, während die asynchronous API auch PDF-Files unterstützt.
  • JPEG/PNG-Files dürfen maximal 10 MB groß sein.
  • PDF-Files dürfen maximal 500 MB groß sein und maximal 3000 Seiten besitzen.
  • Die Erkennung von Hand geschriebenem Text wird nicht unterstützt.
  • Die minimale Font-Größe ist 8-pt.
  • Das Dokument darf maximal um +/- 10° gegen die vertikale Axe verkippt sein.
  • Es gibt Grenzen für die Höhe und Breite des Dokumentes (2880 Punkte oder 101cm)

 

Was kann Textract leisten?

Das Auswertungsergebnis von Textract ist abhängig von der Wahl der API, die von den Entwicklern gewählt wird. Textract stellt Versionen der API für die synchrone und asynchrone Verarbeitung zur Verfügung. Da die asynchrone Verarbeitung alle Ergebnistypen der synchronen API unterstützt und die Zahl der potenziellen Use Cases für die asynchrone Verarbeitung wesentlich größer ist, werden wir uns im Rahmen dieses Blogbeitrags auf die Diskussion der asynchronen API beschränken. Um auf die ursprüngliche Frage zurück zu kommen: Textract kann das folgende leisten:

  • Eine vollständige Konvertierung von JPEG, PNG und PDF-Textinhalten zu durchsuchbaren und programmatisch verarbeitbaren txt-Files.
  • Analyse und Rückgabe von strukturellen Informationen (z.B. sind Textelement Teil einer Tabelle oder eines Formulars?)

Um zu verstehen, welchen Mehrwert die Strukturinformationen dem Nutzer bieten muss betrachtet werden, wie Textract die analysierten Textstellen wiedergibt.

Was sieht der Output von Textract aus?

Bei der Übergabe des Files an den Textract-Service kann zwischen zwei Betriebsmodi gewählt werden. Diese Tragen die Bezeichnungen DETECT und ANALYSE und können über die SDK als Parameter übergeben oder in der Management Konsole ausgewählt werden. In beiden Modi findet eine vollständige Analyse des Dokumentes statt.

Textract Parent-Child-Relationships
Abbildung 1: Objekthierarchie

Textract wertet das übergebene Dokument Seite für Seite aus und erstellt eine Hierarchie aus JSON-Blöcken, die sich gegenseitig über Parent-Child-Relationships referenzieren. Abbildung 1. zeigt eine Objekthierarchie für Worte, die in tabellarischen Strukturen vorliegen und in Abbildung 2. ist ein Beispiel für einen JSON-Block angegeben.

Wie in der Abbildung 2. zu sehen ist, liefert Textract neben den Referenzen zu anderen Feldern („Relationships“) zu jedem Objekt eine ID, Informationen zur Geometrie/ Position auf der Seite, sowie den Blocktypen und einen Wert für die Wahrscheinlichkeit, dass Textracts Analyse korrekt ist. Es ist wichtig festzuhalten, dass Wörter in einer Tabelle sowohl die Zeile, in der sie stehen, als auch das Zellobjekt, in dem Sie sich befinden referenzieren. Die Feldeinträge variieren auf jeder Hierarchieebene, so liefert ein JSON-Objekt des Blocktyps = „Page“ zusätzlich die Seitenzahl. Hier ist ein Stolperstein in der programmatischen Auswertung versteckt. Bei eingescannten Dokumenten wertet Textract das gesamte Dokument als einseitiges Dokument aus.

Beispiel eines JSON-Blocks geliefert durch AWS-Textract
Abbildung 2: Beispiel eines JSON-Blocks geliefert durch AWS-Textract. Abbildung entnommen von https://docs.aws.amazon.com/textract/latest/dg/how-it-works-tables.html

Programmatische Auswertung

Bei der programmatischen Verarbeitung mit der asynchronen API sind zwei wichtige Faktoren zu berücksichtigen. Zum einen erfolgt die Rückgabe von JSON-Blöcken in Gruppen, die durch pagination Tokens markiert sind. Die Ausgabe der Analyseergebnisse erfolgt also nicht auf einen Schlag. Zum anderen müssen die asynchron produzierten Ergebnisse abgerufen werden.

Hier ist von Vorteil, dass sich Textract leicht mit dem AWS Message Services SNS und SQS integrieren lässt. Die AWS-Dokumentation enthält einen Beispielcode für die Analyse von mehrseitigen PDF-Dokumenten, der die SNS und SQS Integration nutzt. Dadurch wird die Durchführung eines Proof of Concepts mit AWS Textract in kurzer Zeit und dadurch bereits mit geringer Investition möglich (https://docs.aws.amazon.com/textract/latest/dg/async-analyzing-with-sqs.html).

Strukturinformationen sind für die Auswertung immer dann interessant, wenn für den Use Case relevante, zu erfassende Informationen in diesen enthalten sind. In solchen Fällen kann programmatisch direkt nach den entsprechenden Blocktypen gefiltert werden und es ist einfach dies Informationen aus der Tabelle für die Weiterverarbeitung in CSV-Format zur Verfügung zu stellen.

Kosten

Die Kosten werden in Textract pro Seite und Art der verwendeten API berechnet. Strukturinformationen sollten nur dann entnommen werden, wenn Sie für den Use Case tatsächlichen Mehrwert bieten. Es gibt mehrere Möglichkeiten Kosten einzusparen, die jedoch eine gewisse Vorarbeit erfordern.

Im Falle von längeren Dokumenten, welche Tabellen und Formulare enthalten, deren Inhalt keinen Mehrwert für das Unternehmen bietet, kann das Dokument vorab in mehrere Files zerlegt werden. Anschließend können die Files einzeln ausgewertet werden und der teure Modus nur für relevante Inhalte genutzt werden.

Einer der größten potenziale zur Kostenminimierung von Unternehmen bietet sich durch die leichte Integration von Textract in das Serverless-Framework von AWS.  So kann zum Beispiel AWS-S3 genutzt werden, um die Kosten für die Datenspeicherung zu reduzieren und AWS-Lambda für eine kostengünstige, eventgetriebene Verarbeitung der Files.

Tabelle 1: Preise für die unterschiedlichen AWS-Textract APIs und Modi stand 29.10.2020

Monatlich Effektiver Preis pro 1000 Seiten
Detect Document Text API (OCR)
Erste 1 Millionen Seiten 1,875 USD
Über 1 Millionen Seiten 0,75 USD
Analyze Document API für Seiten mit Tabellen
Erste 1 Millionen Seiten 18,75 USD
Über 1 Millionen Seiten 12,50 USD
Analyze Document API für Seiten mit Formularen
Erste 1 Millionen Seiten 62,50 USD
Über 1 Millionen Seiten 50,00 USD

Zusammenfassung

AWS-Textract bietet eine sehr gute Möglichkeit für Unternehmen bestehende digitalisierte Dokumentenbestände nach geschäftsrelevanten Informationen zu durchsuchen und diese in strukturierter Form zur Weiterverarbeitung zur Verfügung zu stellen. Strukturelle Informationen wie Tabellen und Formulare können programmatisch zugänglich gemacht werden. Der Entwickler sollte sich an die AWS Best Practices halten. Die Verwendung des Textract Serives sollte an den Use Case angepasst sein, um die Kosten so gering wie möglich zu halten. Es ist empfehlenswert für die Test während der Entwicklung ein Beispiel-File mit 1-2 Seiten zu erstellen, welches die relevanten Strukturen enthält.

Die Einschränkungen auf ASCII und Latin-Script Zeichen ist nur bedingt problematisch, da diese durch regular expressions leicht im Code abgefangen werden können.