DevelopmentApplicatie modernisering middels AI: Form Recognition

In deze blog geef ik een overzicht van één van de vernieuwde Cognitive Services van Microsoft, namelijk de Form Recognizer. Deze service heeft momenteel nog de preview-status, wat inhoudt dat Microsoft dit op den duur als volwaardig product wil toevoegen aan het AI platform. Deze recognizer is beschikbaar in de regio’s Amerika en Europa.

Een stukje achtergrond..

Form Recognition borduurt voort op Optical Character Recognition (OCR). Met OCR kunnen we tekst detecteren in en filteren uit afbeeldingen, wat het ideaal maakt voor “slim zoeken”. Echter is de beperking hiervan dat een applicatie niet de context van een afbeelding/document kan herkennen. De bovengenoemde service lost dit probleem op.

Middels een machine learning algoritme wordt het mogelijk gemaakt om de context van het formulier te herkennen, ofwel de structuur van het document. Hierbij wordt als output een format opgeleverd dat overeenkomt met het origineel dat bestaat uit zogeheten “key-value pairs”. Op de website van Microsoft is een aantal voorbeelden beschikbaar en hieronder is te zien hoe de recognizer de “key-value pairs” eruit haalt zonder de structuur van het document aan te passen.

Hoe kunnen we deze service inzetten in de praktijk?

In de praktijk komt het veel voor dat bedrijven formulieren (offertes, facturen) handmatig lezen en vervolgens invoeren in een systeem. Of dat ze een derde partij de formulieren laten verwerken. In beide gevallen is het repetitief (en saai) werk, kost het tijd en geld en moedigt het bovendien de “menselijke fout’’ aan. Door AI te koppelen aan dit proces willen we de bovengenoemde situatie veranderen. Hoe past de Form Recognizer dan in dit plaatje? Aan de hand van een (fictief) voorbeeld illustreer ik dit:

“Bedrijf A verwerkt offertes namens hun clientèle. Dit doen zij door deze handmatig in te voeren in hun eigen softwarepakket. De manager van bedrijf A krijgt van zijn personeel veel klachten dat dit vermoeiend en saai werk is. Hij hoort via een kennis uit zijn netwerk dat AI kan worden ingezet om documenten te verwerken. Na het inwinnen van enig advies besluiten ze om in zee te gaan met softwarebedrijf B. ”

Bij de inzet van de Form Recognizer door softwarebedrijf B zouden de stappen om dit te implementeren er als volgt uit (kunnen) zien:

  1. Identificeren van het “soort” datamodel dat nodig is voor de situatie van bedrijf A.
  2. Trainen van het opgestelde datamodel.
  3. Verwerken van het resultaat.

Identificeren van het “soort” datamodel

Bij het maken van een keuze voor het “soort” datamodel zijn er niet veel smaken. Je kunt namelijk een custom-made of pre-built model gebruiken. Het voordeel van een eigengemaakt model is, dat met slechts vijf documenten al gestart kan worden en het resultaat redelijk betrouwbaar is. Momenteel bestaan de ingebouwde modellen uit slechts één optie, namelijk het herkennen van Engelstalige facturen. Deze laatste is met name interessant als bedrijf A opereert in landen waar Engels de voertaal is. In deze situatie kiezen we voor een eigengemaakt model, omdat dat momenteel de meeste mogelijkheden biedt.

Trainen van het opgestelde datamodel

Voorafgaand aan trainen moeten we eerst stil staan bij de “kwaliteit van onze dataset.” De kwaliteit bepaalt immers het resultaat. Hoe reageert de service namelijk op het volgende:

Documenten kunnen een verschillende lay-outs en/of stylen hebben. Soms worden ze via de computer ingevuld, andere keren weer handmatig. Ook heeft niet iedereen een even duidelijk handschrift. Oftewel, er zijn vele factoren die meespelen bij het bepalen van de mate waarin je dataset “goed” getraind wordt. Een formulier met een slechte resolutie leidt er bijvoorbeeld toe dat het algoritme van de Form recognizer moeite heeft het herkennen van datums of leestekens. Een ‘5’ wordt al snel gezien als een ‘S’ in een datum of ‘L’ wordt gezien als een backslash.

Uitgaande van een “custom-made model”… hebben we de mogelijkheid om de dataset te trainen op twee manieren: met of zonder labels. Het voordeel van trainen met labels is dat het grote flexibiliteit biedt, aangezien je zelf bepaalt hoe de output van het document eruit ziet. In tegenstelling tot bij het trainen zonder labels. Via een open-source tool die Microsoft beschikbaar stelt, kun je alle opgeslagen documenten in je Azure Storage inladen en per document zelf een label (“key”) toekennen aan bepaald gegeven (“value”).

Het trainingsproces wordt zonder labelen nog eenvoudiger gemaakt. De Form Recognizer gebruikt bij deze vorm van trainen een principe dat unsupervised learning heet. Dit betekent dat de service de documenten begint te verwerken, vervolgens alle documenten clustert op basis van type, bekijkt welke “sleutels” en tabellen hij kan ontdekken en vervolgens een outputformat creëert.

Verwerken van het resultaat

Om te zorgen dat bedrijf A de verwerkte offertes kan inzien, kunnen we ervoor kiezen om middels een Azure logic-app het resultaat ergens op te slaan. Dit kan bijvoorbeeld in een Azure Blob Storage. Middels een Azure Function kan vervolgens op basis van een (blog)trigger de offerte worden doorgestuurd naar het softwarepakket van bedrijf A. Dit is echter niet de enige mogelijkheid die bedrijf A heeft. Ze zouden het ook kunnen doorsturen naar een web app of Power BI. Onze “oplossing” zou er aan het eind ongeveer zo uit kunnen zien:

Conclusie

Met behulp van slechts enkele resources (en zonder al teveel code) is het mogelijk om een gestroomlijnd proces op te zetten en formulieren te verwerken. Hiermee lossen we het probleem van “bedrijf A” op dat formulieren invoeren en doornemen een repetitieve taak wordt die veel geld kost.

Herken jij je in de situatie van bedrijf A of ben je benieuwd naar andere AI-mogelijkheden voor jouw bedrijf, neem dan vrijblijvend contact met mij op via gideonk@delta-n.nl of via ons contactformulier.

Gideon Kuijpers – Software developer