close
close

first Drop

Com TW NOw News 2024

Document Extraction is de killer-app van GenAI
news

Document Extraction is de killer-app van GenAI

Document extractie is de killer app van GenAI

De toekomst is hier en je krijgt geen killerrobots. Je krijgt geweldige automatisering voor saai kantoorwerk.

Bijna tien jaar geleden werkte ik als Machine Learning Engineer bij het illustere datastandaardisatieteam van LinkedIn. Vanaf de dag dat ik erbij kwam tot de dag dat ik wegging, konden we nog steeds niet automatisch iemands profiel lezen en betrouwbaar iemands anciënniteit en functietitel in alle talen en regio’s begrijpen.

Dit lijkt op het eerste gezicht eenvoudig. “Software engineer” is duidelijk genoeg, toch? En wat dacht je van iemand die gewoon “associate” schrijft? Het kan een winkelmedewerker met een lage anciënniteit zijn, als ze bij Walmart werken, of een advocaat met een hoge rang als ze bij een advocatenkantoor werken. Maar dat wist je waarschijnlijk al — weet je wat een Java Fresher is? Wat is Vrijwilligers Sociaal Jaar? Dit gaat niet alleen over het kennen van de Duitse taal — het vertaalt zich naar “Vrijwilligers Sociaal Jaar”. Maar wat is een goede standaardtitel om deze rol te vertegenwoordigen? Als u een grote lijst met bekende functienamen had, waar zou u die dan in kaart brengen?

Ik ging bij LinkedIn, ik verliet LinkedIn. We boekten vooruitgang, maar zelfs de meest simpele, gewone teksten — het cv van een persoon — konden we niet begrijpen.

Heel moeilijk wordt triviaal

Het zal je waarschijnlijk niet verbazen dat dit probleem triviaal is voor een LLM als GPT-4

Document Extraction is de killer-app van GenAIEen fluitje van een cent voor GPT (bron: ik en GPT)

Maar wacht even, we zijn een bedrijf en geen persoon in een chatterminal. We hebben gestructureerde uitkomsten nodig.

(bron: GPT)

Ah, dat is beter. Je kunt deze oefening herhalen met de meest genuanceerde en cultuurspecifieke vragen. Nog beter, je kunt deze oefening herhalen wanneer je het profiel van een persoon in zijn geheel krijgt, dat geeft je meer context, en met code, wat je de mogelijkheid geeft om de resultaten consistent te gebruiken in een zakelijke omgeving, en niet alleen als een eenmalige chat. Met wat meer werk kun je de resultaten dwingen tot een standaard taxonomie van toegestane functienamen, wat het indexeerbaar zou maken. Het is niet overdreven om te zeggen dat als je het hele cv van een persoon kopieert en plakt en prompt GPT precies goed gebruikt, je de beste resultaten zult overtreffen die een paar behoorlijk slimme mensen een decennium geleden konden behalen, die hier jarenlang aan hebben gewerkt.

Hoogwaardig kantoorwerk == Documenten begrijpen

Het specifieke voorbeeld van het standaardiseren van reumès is interessant, maar het blijft beperkt tot waar technologie altijd hard aan het werk is geweest — op een technische website die op natuurlijke wijze AI-tools toepast. Ik denk dat hier een diepere kans ligt. Een groot percentage van het wereldwijde BBP is kantoorwerk dat neerkomt op deskundige menselijke intelligentie die wordt toegepast om herhaaldelijk inzichten uit een document te halen, met context. Hier zijn enkele voorbeelden van toenemende complexiteit:

  1. Expense management is het lezen van een factuur en het omzetten ervan naar een gestandaardiseerde weergave van wat er is betaald, wanneer, in welke valuta en voor welke kostencategorie. Mogelijk wordt deze beslissing ingegeven door achtergrondinformatie over het bedrijf, de persoon die de kosten maakt, etc.
  2. Het beoordelen van claims voor gezondheidszorg is het proces waarbij je een wirwar aan facturen en aantekeningen van artsen leest en zegt: “Oké, alles bij elkaar was er één röntgenfoto van de borstkas met een heleboel duplicaten, het kostte $ 800 en het valt onder categorie 1-C in de ziektekostenverzekering”.
  3. Een kredietverstrekker kan naar een aantal bankafschriften van een aanvrager kijken en een reeks vragen beantwoorden. Nogmaals, dit is alleen complex omdat de input overal is. De daadwerkelijke besluitvorming is zoiets als “Wat is de gemiddelde instroom en uitstroom van geld, hoeveel daarvan gaat naar leningaflossing en welk deel daarvan eenmalige versus daadwerkelijke terugkerende inkomsten is”.

Redeneren over tekst is het vakgebied van de LLM

Inmiddels staan ​​LLM’s erom bekend dat ze vatbaar zijn voor hallucinaties, oftewel het verzinnen van onzin. De realiteit is genuanceerder: hallucinaties zijn in feite A voorspelbaar resultaat in sommige situaties, en zijn vrijwel gegarandeerd dat dit niet gebeurt in anderen.

De plek waar hallucinaties optreden is wanneer je het vraagt ​​om feitelijke vragen te beantwoorden en verwacht dat het model het antwoord gewoon “weet” op basis van zijn aangeboren kennis over de wereld. LLM’s zijn slecht en introspectief over wat ze weten over de wereld — het is meer een heel gelukkig toeval dat ze dit überhaupt kunnen. Ze zijn niet expliciet getraind voor die taak. Waar ze voor getraind zijn, is om een ​​voorspelbare voltooiing van tekstreeksen te genereren. Wanneer een LLM gegrond is op een invoertekst en vragen moet beantwoorden over de inhoud van die tekst, het hallucineert niet. Als je deze blogpost kopieert en plakt in chatGPT en vraagt ​​of het je leert hoe je een Amerikaanse appeltaart kookt, krijg je 100% van de tijd het juiste resultaat. Voor een LLM is dit een zeer voorspelbare taak, waarbij het een stuk tekst ziet en probeert te voorspellen hoe een competente data-analist een set vooraf gedefinieerde velden zou invullen met vooraf gedefinieerde uitkomsten, waarvan er één is {“is cooking discussed”: false}.

Eerder als AI-consultant hebben we herhaaldelijk projecten opgelost waarbij informatie uit documenten moest worden gehaald. Het blijkt dat er veel bruikbaarheid is in verzekeringen, financiën, etc. Er was een grote discrepantie tussen wat onze klanten vreesden (“LLM’s hellucineren”) en wat ons daadwerkelijk kapotmaakte (we haalden de tabel niet correct op en alle fouten kwamen daaruit voort). LLM’s faalden wel — toen wij faalden, presenteerden ze de invoertekst op een schone en ondubbelzinnige manier. Er zijn twee noodzakelijke ingrediënten om automatische pipelines te bouwen die redeneren over documenten:

  1. Perfecte tekst extractie die het invoerdocument omzet in schone, begrijpelijke platte tekst. Dat betekent dat er met tabellen, vinkjes, handgeschreven opmerkingen, variabele documentlay-out etc. moet worden omgegaan. De volledige complexiteit van een formulier in de echte wereld moet worden omgezet in een schone platte tekst die logisch is in de geest van een LLM.
  2. Robuuste schema’s die precies definiëren welke uitvoer u van een bepaald documenttype verwacht, hoe u met randgevallen omgaat, welk gegevensformaat u moet gebruiken, enzovoort.

Tekst extraheren is lastiger dan het op het eerste gezicht lijkt

Dit is de reden waarom LLM’s crashen en in brand vliegen, en belachelijk slechte resultaten opleveren:

  1. De invoer heeft een complexe opmaak, zoals een indeling met twee kolommen, en als je tekst kopieert en plakt uit bijvoorbeeld een PDF-bestand van links naar rechts, worden zinnen volledig uit hun verband gerukt.
  2. De invoer bevat selectievakjes, vinkjes, met de hand geschreven aantekeningen en u hebt ze helemaal gemist bij de conversie naar tekst
  3. Erger nog: je dacht dat je het converteren naar tekst kon omzeilen, en hoopt dat je gewoon een afbeelding van een document kunt plakken en dat GPT er zelf over nadenkt. DIT brengt je in hallucinatiestad. Vraag GPT gewoon om een ​​afbeelding van een tabel met wat lege cellen te transcriberen en je zult zien dat het vrolijk apeshit wordt en zomaar wat verzint.

Het helpt altijd om te onthouden wat een gekke puinhoop er in echte documenten zit. Hier is een informeel belastingformulier:

Natuurlijk zijn al deze velden op echte belastingformulieren ingevuld, vaak met de hand geschreven.

Of hier is mijn cv

Bron: mijn cv

Of een openbaar beschikbaar voorbeeld van een laboratoriumrapport (dit is een resultaat op de voorpagina van Google)

Bron: research gate, afbeelding in het publieke domein

Het allerergste wat je kunt doen, trouwens, is GPT’s multimodale mogelijkheden vragen om een ​​tabel te transcriberen. Probeer het eens als je durft — het ziet er op het eerste gezicht goed uit en verzint absoluut willekeurige dingen voor sommige tabelcellen, haalt dingen volledig uit hun context, etc.

Als er iets mis is met de wereld, bouw dan een SaaS-bedrijf om het te repareren

Toen mijn medeoprichter Nitai Dean en ik de opdracht kregen om dit soort documenten te begrijpen, stonden we versteld van het feit dat er geen kant-en-klare oplossingen bestonden om deze teksten te begrijpen.

Sommige mensen beweren het op te lossen, zoals AWS Textract. Maar ze maken talloze fouten in elk complex document dat we hebben getest. Dan heb je de lange staart van kleine dingen die nodig zijn, zoals het herkennen van vinkjes, keuzerondjes, doorgestreepte tekst, handgeschreven krabbels op een formulier, etc. etc.

Dus bouwden we Docupanda.io — dat eerst een schone tekstrepresentatie genereert van elke pagina die je erop gooit. Links zie je het originele document, en rechts zie je de tekstuitvoer

Bron: docupanda.io

Tabellen worden op een vergelijkbare manier behandeld. Onder de motorkap converteren we de tabellen gewoon naar een menselijk en LLM-leesbaar markdown-formaat:

Bron: docupanda.io

Het laatste stukje om data te begrijpen met LLM’s is het genereren en naleven van rigide outputformaten. Het is geweldig dat we AI zijn output kunnen laten vormen tot een json, maar om regels, redeneringen, query’s etc. op data toe te passen, moeten we het op een normale manier laten gedragen. De data moet voldoen aan een vooraf gedefinieerde set slots die we met content vullen. In de datawereld noemen we dat een Schema.

Het bouwen van schema’s is een proces van vallen en opstaan… Dat kan een LLM doen

De reden dat we een schema nodig hebben, is dat data nutteloos is zonder regelmaat. Als we patiëntendossiers verwerken en ze worden toegewezen aan “mannelijk”, “mannelijk”, “m” en “M”, dan doen we het verschrikkelijk slecht.

Dus hoe bouw je een schema? In een leerboek kun je een schema bouwen door lang en hard te zitten en naar de muur te staren, en te definiëren wat je wilt extraheren. Je zit daar, denkt na over je gezondheidszorggegevens en zegt: “Ik wil de naam van de patiënt, datum, geslacht en de naam van de arts extraheren. Oh, en het geslacht moet M/V/Anders zijn.”

In het echte leven, om te bepalen wat je uit documenten moet halen, staar je verdomme naar je documenten… heel veel. Je begint met zoiets als hierboven, maar dan kijk je naar documenten en zie je dat een ervan een LIJST met artsen heeft in plaats van één. En sommige van hen vermelden ook een adres voor de artsen. En sommige adressen hebben een unitnummer en een gebouwnummer, dus misschien heb je daar een slot voor nodig. En zo gaat het maar door.

We kwamen erachter dat het bepalen van wat je precies wilt extraheren, niet alleen lastig en moeilijk is, maar ook heel goed op te lossen is met AI.

Dat is een belangrijk onderdeel van DocuPanda. In plaats van een LLM te vragen om een ​​output voor elk document te improviseren, hebben we het mechanisme gebouwd waarmee u:

  1. Geef aan welke zaken u uit een document in vrije taal wilt halen
  2. Laat onze AI-kaart zien veel documenten en bedenk een schema dat alle vragen beantwoordt en rekening houdt met de gebreken en onregelmatigheden die in de werkelijke documenten zijn waargenomen.
  3. Wijzig het schema met feedback om het aan te passen aan uw zakelijke behoeften

Wat je uiteindelijk krijgt is een krachtig JSON-schema: een sjabloon dat precies zegt wat je uit elk document wilt halen, en dat honderdduizenden ervan toewijst, waarbij antwoorden op al deze vragen worden gehaald, terwijl regels worden nageleefd zoals het altijd in hetzelfde formaat halen van datums, het respecteren van een reeks vooraf gedefinieerde categorieën, enzovoort.

Bron: docupanda.io

Nog veel meer!

Zoals met elk konijnenhol, is er altijd meer dan je op het eerste gezicht zou denken. Naarmate de tijd verstreek, ontdekten we dat er meer dingen nodig zijn:

  • Vaak hebben organisaties te maken met een binnenkomende stroom anonieme documenten, dus classificeren we ze automatisch en bepalen we welk schema we erop toepassen
  • Documenten zijn soms een aaneenschakeling van vele documenten en u hebt een intelligente oplossing nodig om een ​​heel lang document op te splitsen in atomaire, afzonderlijke componenten.
  • Het is superhandig om met behulp van de gegenereerde resultaten naar de juiste documenten te zoeken

Als er één ding is wat je uit dit bericht hebt geleerd, is het dat je LLM’s moet gebruiken om documenten op een normale manier te begrijpen. Als er twee dingen zijn die je hebt geleerd, is het dat je ook Docupanda.io moet proberen. De reden dat ik het bouw, is dat ik erin geloof. Misschien is dat een goede reden om het eens te proberen?

Een toekomstige kantoorwerker (Bron: unsplash.com)


Document Extraction is GenAI’s Killer App werd oorspronkelijk gepubliceerd in Towards Data Science op Medium, waar mensen het gesprek voortzetten door dit verhaal te markeren en erop te reageren.