Automatiseer jij al met behulp van ChatGPT? Wij hebben de proef op de som genomen. Kan ChatGPT een bijdrage leveren aan het automatisch uitlezen van transport documenten (PDF’s) en het vertalen naar een software begrijpbare JSON formaat? En wat bleek het antwoord te zijn? Ja, dat kan! Sterker nog, dankzij het toepassen van de technologie die ook achter ChatGPT zit, hebben we in ongekend tempo de Proof of Concept opgeleverd. Dit overtrof werkelijk onze verwachtingen. Plus de verwachtingen van onze klant waarvoor we de oplossing hebben gebouwd. De resultaten waren namelijk aanzienlijk nauwkeuriger dan gehoopt, zonder trainingstijd en eenvoudig uit te breiden naar de toekomstige doeleinden.
Hoe dit proces is verlopen lees je in onderstaande blog.
De uitdaging
Deze blog post ligt toe hoe een complex probleem waarbij verschillende PDF documenten zonder vaste structuur vertaald moeten worden naar een voor software makkelijk (ander) formaat. Een formaat waarbij het juist belangrijk is dat de structuur wél consistent is. Het probleem is dus 2-delig:
- Er moet structuur aangebracht worden waar deze nog niet aanwezig is, een klassiek probleem waar computers nou eenmaal niet altijd even sterk in zijn.
- Er moet een vertaal slag gemaakt worden van termen en concepten. Deze kunnen verschillen tussen verschillende invoer documenten, maar moeten wel naar één en hetzelfde uitvoer formaat.
Componenten die bijdragen aan de oplossing
Dit probleem hebben we razendsnel opgelost met behulp van innovatief gebruik en samenvoeging van enkele al bij ons bekende en beschikbare componenten:
Kant en klaar oplossing van Amazon Web Services om Optical Character Recognition (OCR) uit te voeren om tekst uit documenten te extraheren.
Als doorbraak in kunstmatige intelligentie is GPT4 het meest geavanceerde AI-model tot nu toe dat onder andere ook ChatGPT mogelijk maakt.
AWS S3, SNS, SQS en Lambda
Meer traditionele cloud-componenten voor opslag, taakverdeling en rekenkracht die de oplossing tot een werkend geheel brengen.
De eerste oplossingsrichting
Gebaseerd op Automate Document Processing in Logistics using AI, lag het eerste idee al snel klaar: Het plan was om documenten naar S3 te uploaden, dit te detecteren en via Simple Notification Service SNS een serverless Lambda functie op te starten die het verwerkingsproces zou aftrappen. Deze functie zou eerst de (mogelijk handgeschreven) tekst uit het document halen met behulp van AWS Textract. Vervolgens zal dat samengevoegd worden in een tekst bestand dat aan AWS Comprehend gegeven wordt. AWS Comprehend achterhaalt vervolgens welke elementen aanwezig zijn in het tekstbestand, dankzij zijn begrip van menselijke taal. Denk hierbij aan laad en los datum en locatie, vervoerder, product, etc. AWS Comprehend leert dit soort aangepaste entiteiten te herkennen door voorafgaande het systeem te trainen. Denk hierbij aan het geven van een trainingsset aan AWS Comprehend, waarbij zoal invoer als verwachte uitvoer samen in staan vermeld.
Zo gedacht zo gedaan. De basis opzet van de cloud-native componenten was al snel gebouwd en de gehele flow begon resultaat te geven. Een document om de trainingsdata voor AWS Comprehend te maken werd gegenereerd en het document werd aan onze klant gegeven om de correcte antwoorden in te vullen. Waarna het gehele proces afgetrapt werd. De eerste resultaten? Die vielen helaas tegen.
Ondanks dat meer data wellicht had kunnen leiden tot een beter resultaat, was dit voor ons aanleiding om de gekozen oplossingsrichting nog eens beter onder de loep te nemen en te controleren of dit wel de juiste aanpak voor het probleem was. Hierbij bleek al vrij snel dat we met deze oplossingsrichting (erg) veel informatie kwijt raakten tussen AWS Textract en AWS Comprehend, wat gezien kan worden alsof we alle woorden (en in zekere zin zinnen) bij elkaar op een hoop gooiden en aan AWS Comprehend gaven. Waarbij hier in het originele document dingen als een tabellen duidelijk te herkennen waren (door mensen), was dit in het tekstuele tussenformaat bijna volledig kwijtgeraakt. Is AWS Comprehend wel het juiste component voor deze oplossing.
Nieuwe ChatGPT oplossingsrichting
Het was tijd om op zoek te gaan naar een geschiktere tool om deze stap mee uit te voeren. Als fervente gebruikers van ChatGPT leek het ons interessant om ChatGPT, de betaalde versie 4 variant, eens op de test te nemen. We gaven ChatGPT4 een markdown tabel representatie van de data (zie afbeelding hiernaast) en vroegen het om dit om te schrijven naar Open Trip Model JSON. Deze eerste keer was zonder al te veel prompt-engineering trucjes, maar onze monden vielen spreekwoordelijk al open: het resultaat voor zo’n snelle test was erg goed. Uiteraard zaten hier nog wel wat haken en ogen aan en was dit niet meteen een totaal oplossing zonder verdere nadelen. Maar de kern leek goed te gaan. Tijd dus om verder te experimenteren met het gebruik van GPT4 in de oplossing.
Om hier verder beter mee te kunnen experimenteren zijn we geswitched van ChatGPT naar de API voor GPT4, deze bied geavanceerdere opties om het te configureren en aan te sturen alsmede dat dit beter geschikt is voor applicaties om te gebruiken. Recent onderzoek naar het beter toepassen van prompt engineering leidde al relatief snel tot een consistente JSON uitvoer in onze experimenten. We stapten af van het idee om meteen OTM JSON te genereren, dat werd later weer opgelost. Resultaat: de oplossing werkte om van deze semi gestructureerde data JSON uitvoer te maken. Een automatiseringsstap volgde, een lambda functie om het Textract resultaat te vertalen naar markdown, een Lambda functie om de OpenAI API aan te roepen en zelfs een geheel ChatGPT gebouwde benchmark tool volgde om beter het resultaat te kunnen beoordelen.
De proef op de som met chatgpt
De eerste set aan PDFs werd ingeladen, verwacht resultaat werd een eerste keer handmatig gecontroleerd en gecorrigeerd en we hadden een eerste nauwkeurigheidsscore van boven de 80% (dit was de slagingsdrempel afgesproken met onze klant). De markdown representatie werd verbeterd, het prompt verfijnd totdat we het idee hadden dat we de meeste inkoppertjes om het resultaat te verbeteren wel gehad hadden. Ondanks dat we nu nog steeds verbetermogelijkheden zien, waren we heel blij met dit initiële resultaat:
een nauwkeurigheidsscore van 97,45%. Bijna geheel foutloos.
Als we terugkijken naar de twee uitdagingen die we op voorhand zagen, stellen we dat we zowel de ongestructureerde data en het maken van de vertaalslag van de verschillende concepten en termen van uiteenlopende documenten, met deze oplossing hebben getakeld. Door het omzetten van de PDF documenten naar markdown formaat hebben we de ongestructuurde data gestructureerd. Door het toepassen van custom instructies per documenttype hebben de verschillende documenttypen kunnen terugbrengen naar één duidelijk formaat.
Open uitdagingen
Op dit moment zijn wij nog aan het werk om deze supergave cutting-edge oplossing af te ronden en zitten we nog met enkele uitdagingen, waarbij we nog een heel aantal ideeën hebben om deze aan te vliegen
– De oplossing werkt momenteel betrouwbaar voor documenten van maximaal 2 pagina’s groot. Op het moment van schrijven was GPT-4 Turbo nog niet beschikbaar, maar na het vrijgeven van deze nieuwe versie van GPT-4 hebben we er alle vertrouwen in dat ook grotere documenten vertaald kunnen worden.
– Hoewel er geen training bij te pas komt, zit er nog wel een klein deel in de oplossing dat document specifiek is, hiervoor moet nog een extra stap in het proces toegevoegd worden.
– De algehele doorvoer is beperkt door de limitaties die OpenAI oplegd.
Een hele fijne gedachte hierbij is dat de verwachting is dat deze oplossing in de toekomst alleen maar beter, sneller, makkelijker en beter uit te breiden wordt. Wanneer GPT-5 of een vergelijkbaar model beschikbaar komt is het een kwestie van het gebruikte model aanpassen.
Je zou kunnen zeggen dat deze oplossing te innovatief is.
Conclusie: is chatgpt van meerwaarde in de digitalisatie van bedrijfsprocessen?
Abosluut! Deze case studie laat de ongekende kracht zien van recente ontwikkelingen in het gebied van AI, specifiek voor technieken zoals (Chat)GPT. Dit samen met kant en klaar beschikbare cloud-native componenten en een geheel nieuwe vorm van ‘low-code’ ontwikkel tactieken maakten dit een enorm spannend uitdagend en gewoon gaaf traject. Waarbij je met een traditionele oplossing wellicht enkele dagen kwijt zou zijn om de training van een model goed te verzorgen gaf onze aanpak positief resultaat binnen 1 werkdag. Er gaat natuurlijk nog wel meer tijd zitten om deze proof of concept af te ronden tot een kwalitatieve eind oplossing in het proces van de klant zelf, maar dit is een traject wat wij met plezier verder afronden en onze expertise verder toepassen.
Heeft u een uitdagende case voor ons Innovatie team?
Wij nodigen u van harte uit om met ons innovatie team in contact te komen en samen de grenzen van de (AI-) mogelijkheden te verkennen.