Naar de inhoud springen
kenjtecJournal
Het Journal doorzoeken

Van PDF-factuur naar bruikbare data: wat AI-OCR echt moet leveren

Een getal correct lezen is pas het begin. Een synthetische factuur en een kleine decimale berekening laten zien hoe OCR een navolgbaar gegevensrecord wordt.

Hanne legt een lange bon naast kleischalen; één rode schaal blijft leeg. AI-illustratie.

Elk cijfer is herkend. Toch komt het subtotaal als eindbedrag in het gegevensrecord terecht. Zulke fouten zien er netjes uit: geldige JSON, ingevulde velden, geen rode foutmelding. Wat ontbreekt, zit in de relatie tussen getal, label en tabelrij.

Mistrals OCR-documentatie beschrijft onder meer gestructureerde tekst, tabelformaten en blokcoördinaten. Document Annotations kan informatie daarnaast omzetten naar een vooraf gedefinieerd JSON-formaat. Deze bouwstenen lossen verschillende delen van de route van document naar applicatie op.

Vier niveaus voor één veld

Eerst moeten de tekens worden gelezen. Daarna heeft de applicatie hun positie en volgorde nodig. Vervolgens moet ze herkennen welk veld een waarde beschrijft. Ten slotte komen de inhoudelijke relaties: past het eindbedrag bij de posten uit het voorbeeld en de vermelde korting?

Een fout op elk van deze niveaus kan uiteindelijk hetzelfde verkeerde getal opleveren. Daarom is volledige tekstuitvoer alleen geen toereikende kwaliteitsmaatstaf. Voor een belangrijke waarde moet de weg terug naar de vindplaats behouden blijven.

Dat hoeft niet altijd een uitgebreide grafische markering te zijn. Een documentidentificatie, de pagina en een eenduidige veldbeschrijving helpen al. Als je coördinaten gebruikt, moeten die bij de juiste pagina en weergave horen. Een rechthoek zonder duidelijk aangeduide documentversie kan later zelf voor verwarring zorgen.

Maak een factuur waarvan je de inhoud kent

Voor een overzichtelijke test ontwerp je je eigen PDF met twee posten. Post A bevat twee eenheden van tien euro per stuk, post B één eenheid van vijftien euro. Daaronder staan een korting van vijf euro en een eindbedrag van dertig euro. Een ordernummer ontbreekt bewust. De bedragen dienen alleen als technische uitleg, niet als sjabloon voor fiscale doeleinden.

Noteer vóór de extractie de verwachte waarden en waar ze staan. Wijzig in een tweede versie alleen de lay-out: korting en totaal staan nu dichter bij de posten. Zo kun je later zien of de toewijzing het label gebruikt of op een toevallige positie vertrouwt.

Laat eerst een geschikte externe OCR-route tekst en structuur leveren. Een daaropvolgende extractie moet het eindbedrag, de valuta, het ordernummer en de vindplaats in het document uitvoeren. Het ontbrekende ordernummer blijft als onbekend staan. Een verzonnen vervangend nummer zou een fout zijn, ook als het het uitvoerformaat volledig vult.

Een kleine inhoudelijke controle buiten het model

De eenvoudige rekenkundige relatie van het synthetische voorbeeld kun je onafhankelijk controleren. Gebruik voor decimale bedragen als deze bijvoorbeeld Decimal in plaats van binaire drijvendekommagetallen. Dit Python-voorbeeld, door ons geschreven, controleert alleen de door ons gedefinieerde lesberekening:

from decimal import Decimal

positionen = [
    (Decimal("2"), Decimal("10.00")),
    (Decimal("1"), Decimal("15.00")),
]
rabatt = Decimal("5.00")
ausgewiesen = Decimal("30.00")
berechnet = sum((menge * preis for menge, preis in positionen), Decimal("0")) - rabatt
assert berechnet == ausgewiesen

Een geslaagde rekencontrole zou alleen laten zien dat de hier gebruikte getallen bij elkaar passen. Ze bewijst niet dat de OCR deze getallen uit het juiste document heeft gehaald. Daarom blijven de rekencontrole en de broncontrole twee verschillende stappen.

In een echte toepassing moet je daarnaast de regels van het specifieke documenttype in acht nemen. Belastingen, afronding, valuta's en bijzondere gevallen kun je niet uit deze vereenvoudigde factuur afleiden. De taak is hier slechts om een bekende toewijzing navolgbaar over te nemen.

Onzekerheid hoort in het overdrachtscontract

Leg expliciet vast wat er gebeurt bij een onleesbaar cijfer of een tegenstrijdigheid. Een gegevensrecord kan de waarde, de vindplaats en een verduidelijkingsstatus bevatten. Pas een bevestigde overdracht activeert dan de beoogde volgende stap.

Een geschikte instructie: „Voeg geen ontbrekende informatie toe. Verwijs bij elk bedrag dat je overneemt naar het gelabelde veld. Leg tegenstrijdige totalen afzonderlijk vast. Maak alleen een voorbeeldweergave, geen boeking.”

De concrete test gaat dus verder dan alleen het uitlezen van de PDF. Je controleert tekens, structuur, veldbetekenis en een bekende relatie afzonderlijk. Juist dat levert een bruikbare route op naar data die er niet alleen netjes uitziet, maar ook terugleidt naar het origineel.

Bronnen en stand van zaken

Bronnen per 25 oktober 2026. Document AI OCR processor · Document Annotations.

Hamburg is ons vertrekpunt.

Het nuttige reist met je mee.

Praktische AI uit Hamburg, internationaal uitgelegd.

Bewaarde artikelen