Ein­füh­rung

Ama­zon Tex­tract ist ein voll­stän­dig von Ama­zon ver­wal­te­ter Ser­vice aus der Gruppe der Machine-Lear­ning-Ser­vices. Anhand von Opti­cal Cha­rac­ter Reco­gni­tion (OCR) kön­nen Zei­chen aus .jpg, .png oder .pdf Files extra­hiert und ver­ar­bei­tet wer­den. Somit stellt Tex­tract eine Mög­lich­keit dar, alte Doku­men­ten­be­stände auf rele­vante Grö­ßen zu durch­su­chen und für die digi­tale Wei­ter­ver­ar­bei­tung zur Ver­fü­gung zu stellen.

Am Ende die­ses Arti­kels wer­den Sie mit den grund­sätz­li­chen Fähig­kei­ten, Ein­schrän­kun­gen und Funk­tio­na­li­tä­ten von AWS-Tex­tract ver­traut sein und wer­den in der Lage sein, den Nut­zen diese Ser­vices für Ihr Unter­neh­men einzuschätzen.

Limi­ta­tion von Textract

Bei der Nut­zung von Tex­tract gilt es fol­gende Ein­schrän­kun­gen zu beachten:

  • Ama­zon Tex­tract kann nur Latin-Script Zei­chen und ASCII-Sym­bole aus­wer­ten, d.h. Umlaute, grie­chi­sche Buch­sta­ben und andere Son­der­zei­chen kön­nen nicht erkannt werden.
  • Die syn­chro­nous API unter­stützt nur .png und .jpg For­mat, wäh­rend die asyn­chro­nous API auch PDF-Files unterstützt.
  • JPE­G/PNG-Files dür­fen maxi­mal 10 MB groß sein.
  • PDF-Files dür­fen maxi­mal 500 MB groß sein und maxi­mal 3000 Sei­ten besitzen.
  • Die Erken­nung von Hand geschrie­be­nem Text wird nicht unterstützt.
  • Die mini­male Font-Größe ist 8‑pt.
  • Das Doku­ment darf maxi­mal um +/- 10° gegen die ver­ti­kale Axe ver­kippt sein.
  • Es gibt Gren­zen für die Höhe und Breite des Doku­men­tes (2880 Punkte oder 101cm)

Was kann Tex­tract leisten?

Das Aus­wer­tungs­er­geb­nis von Tex­tract ist abhän­gig von der Wahl der API, die von den Ent­wick­lern gewählt wird. Tex­tract stellt Ver­sio­nen der API für die syn­chrone und asyn­chrone Ver­ar­bei­tung zur Ver­fü­gung. Da die asyn­chrone Ver­ar­bei­tung alle Ergeb­nis­ty­pen der syn­chro­nen API unter­stützt und die Zahl der poten­zi­el­len Use Cases für die asyn­chrone Ver­ar­bei­tung wesent­lich grö­ßer ist, wer­den wir uns im Rah­men die­ses Blog­bei­trags auf die Dis­kus­sion der asyn­chro­nen API beschrän­ken. Um auf die ursprüng­li­che Frage zurück zu kom­men: Tex­tract kann das fol­gende leisten:

  • Eine voll­stän­dige Kon­ver­tie­rung von JPEG, PNG und PDF-Text­in­hal­ten zu durch­such­ba­ren und pro­gram­ma­tisch ver­ar­beit­ba­ren txt-Files.
  • Ana­lyse und Rück­gabe von struk­tu­rel­len Infor­ma­tio­nen (z.B. sind Text­ele­ment Teil einer Tabelle oder eines Formulars?)

Um zu ver­ste­hen, wel­chen Mehr­wert die Struk­tur­in­for­ma­tio­nen dem Nut­zer bie­ten muss betrach­tet wer­den, wie Tex­tract die ana­ly­sier­ten Text­stel­len wiedergibt.

Was sieht der Out­put von Tex­tract aus?

AWS Textract Bild1
Abbil­dung 1 Objekthierarchie

Bei der Über­gabe des Files an den Tex­tract-Ser­vice kann zwi­schen zwei Betriebs­modi gewählt wer­den. Diese Tra­gen die Bezeich­nun­gen DETECT und ANALYSE und kön­nen über die SDK als Para­me­ter über­ge­ben oder in der Manage­ment Kon­sole aus­ge­wählt wer­den. In bei­den Modi fin­det eine voll­stän­dige Ana­lyse des Doku­men­tes statt. 

Tex­tract wer­tet das über­ge­bene Doku­ment Seite für Seite aus und erstellt eine Hier­ar­chie aus JSON-Blö­cken, die sich gegen­sei­tig über Parent-Child-Rela­ti­onships refe­ren­zie­ren. Abbil­dung 1. zeigt eine Objekt­hier­ar­chie für Worte, die in tabel­la­ri­schen Struk­tu­ren vor­lie­gen und in Abbil­dung 2. ist ein Bei­spiel für einen JSON-Block angegeben.

Wie in der Abbil­dung 2. zu sehen ist, lie­fert Tex­tract neben den Refe­ren­zen zu ande­ren Fel­dern („Rela­ti­onships“) zu jedem Objekt eine ID, Infor­ma­tio­nen zur Geometrie/ Posi­tion auf der Seite, sowie den Block­ty­pen und einen Wert für die Wahr­schein­lich­keit, dass Tex­tra­cts Ana­lyse kor­rekt ist. Es ist wich­tig fest­zu­hal­ten, dass Wör­ter in einer Tabelle sowohl die Zeile, in der sie ste­hen, als auch das Zell­ob­jekt, in dem Sie sich befin­den refe­ren­zie­ren. Die Feld­ein­träge vari­ie­ren auf jeder Hier­ar­chie­ebene, so lie­fert ein JSON-Objekt des Block­typs = „Page“ zusätz­lich die Sei­ten­zahl. Hier ist ein Stol­per­stein in der pro­gram­ma­ti­schen Aus­wer­tung ver­steckt. Bei ein­ge­scann­ten Doku­men­ten wer­tet Tex­tract das gesamte Doku­ment als ein­sei­ti­ges Doku­ment aus.

Pro­gram­ma­ti­sche Auswertung

Bei der pro­gram­ma­ti­schen Ver­ar­bei­tung mit der asyn­chro­nen API sind zwei wich­tige Fak­to­ren zu berück­sich­ti­gen. Zum einen erfolgt die Rück­gabe von JSON-Blö­cken in Grup­pen, die durch pagi­na­tion Tokens mar­kiert sind. Die Aus­gabe der Ana­ly­se­er­geb­nisse erfolgt also nicht auf einen Schlag. Zum ande­ren müs­sen die asyn­chron pro­du­zier­ten Ergeb­nisse abge­ru­fen werden.

# Beispiel eines JSON-Blocks geliefert durch AWS-Textract.

{
    "Geometry": {...},
    "Relationships": [
        {
            "Type": "CHILD",
            "Ids": [
                "505e9581-0d1c-42fb-a214-6ff736822e8c",
                "6fca44d4-d3d3-46ab-b22f-7fca1fbaaf02",
                "9778bd78-f3fe-4ae1-9b78-e6d29b89e5e9",
                "55404b05-ae12-4159-9003-92b7c129532e"
            ]
        }
    ],
    "BlockType": "TABLE",
    "Confidence": 92.5705337524414,
    "Id:" "3f9665be-379d-4ae7-be44-d02f32b049c2"
},

Hier ist von Vor­teil, dass sich Tex­tract leicht mit dem AWS Mes­sage Ser­vices SNS und SQS inte­grie­ren lässt. Die AWS-Doku­men­ta­tion ent­hält einen Bei­spiel­code für die Ana­lyse von mehr­sei­ti­gen PDF-Doku­men­ten, der die SNS und SQS Inte­gra­tion nutzt. Dadurch wird die Durch­füh­rung eines Proof of Con­cepts mit AWS Tex­tract in kur­zer Zeit und dadurch bereits mit gerin­ger Inves­ti­tion möglich.

Struk­tur­in­for­ma­tio­nen sind für die Aus­wer­tung immer dann inter­es­sant, wenn für den Use Case rele­vante, zu erfas­sende Infor­ma­tio­nen in die­sen ent­hal­ten sind. In sol­chen Fäl­len kann pro­gram­ma­tisch direkt nach den ent­spre­chen­den Block­ty­pen gefil­tert wer­den und es ist ein­fach dies Infor­ma­tio­nen aus der Tabelle für die Wei­ter­ver­ar­bei­tung in CSV-For­mat zur Ver­fü­gung zu stellen. 

Kos­ten

Die Kos­ten wer­den in Tex­tract pro Seite und Art der ver­wen­de­ten API berech­net. Struk­tur­in­for­ma­tio­nen soll­ten nur dann ent­nom­men wer­den, wenn Sie für den Use Case tat­säch­li­chen Mehr­wert bie­ten. Es gibt meh­rere Mög­lich­kei­ten Kos­ten ein­zu­spa­ren, die jedoch eine gewisse Vor­ar­beit erfordern.

Im Falle von län­ge­ren Doku­men­ten, wel­che Tabel­len und For­mu­lare ent­hal­ten, deren Inhalt kei­nen Mehr­wert für das Unter­neh­men bie­tet, kann das Doku­ment vorab in meh­rere Files zer­legt wer­den. Anschlie­ßend kön­nen die Files ein­zeln aus­ge­wer­tet wer­den und der teure Modus nur für rele­vante Inhalte genutzt werden.

Einer der größ­ten poten­ziale zur Kos­ten­mi­ni­mie­rung von Unter­neh­men bie­tet sich durch die leichte Inte­gra­tion von Tex­tract in das Ser­ver­less-Frame­work von AWS.  So kann zum Bei­spiel AWS-S3 genutzt wer­den, um die Kos­ten für die Daten­spei­che­rung zu redu­zie­ren und AWS-Lambda für eine kos­ten­güns­tige, event­ge­trie­bene Ver­ar­bei­tung der Files.

Tabelle 1: Preise für die unter­schied­li­chen AWS-Tex­tract APIs und Modi stand 29.10.2020

Monat­lichEffek­ti­ver Preis pro 1000 Seiten
Detect Docu­ment Text API (OCR)
Erste 1 Mil­lio­nen Seiten1.875 USD
Über 1 Mil­lio­nen Seiten0.75 USD
Ana­lyze Docu­ment API für Sei­ten und Tabellen
Erste 1 Mil­lio­nen Seiten18.75 USD
Über 1 Mil­lio­nen Seiten12.50 USD
Ana­lyse Docu­ment API für Sei­ten mit Formularen
Erste 1 Mil­lio­nen Seiten62.50 USD
Über 1 Mil­lio­nen Seiten50.00 USD

Zusam­men­fas­sung

AWS-Tex­tract bie­tet eine sehr gute Mög­lich­keit für Unter­neh­men bestehende digi­ta­li­sierte Doku­men­ten­be­stände nach geschäfts­re­le­van­ten Infor­ma­tio­nen zu durch­su­chen und diese in struk­tu­rier­ter Form zur Wei­ter­ver­ar­bei­tung zur Ver­fü­gung zu stel­len. Struk­tu­relle Infor­ma­tio­nen wie Tabel­len und For­mu­lare kön­nen pro­gram­ma­tisch zugäng­lich gemacht wer­den. Der Ent­wick­ler sollte sich an die AWS Best Prac­ti­ces hal­ten. Die Ver­wen­dung des Tex­tract Seri­ves sollte an den Use Case ange­passt sein, um die Kos­ten so gering wie mög­lich zu hal­ten. Es ist emp­feh­lens­wert für die Test wäh­rend der Ent­wick­lung ein Bei­spiel-File mit 1–2 Sei­ten zu erstel­len, wel­ches die rele­van­ten Struk­tu­ren enthält.

Die Ein­schrän­kun­gen auf ASCII und Latin-Script Zei­chen ist nur bedingt pro­ble­ma­tisch, da diese durch regu­lar expres­si­ons leicht im Code abge­fan­gen wer­den können.