Problemet med dokumentskabeloner
Skal man have strukturerede data ud af et fotograferet bilag, en fragtlabel eller en formular, er der normalt to veje, og de er begge dårlige. Man kan taste det ind i hånden, hvilket tager tid og giver præcis den slags tastefejl, der er dyre at opdage tre uger senere. Eller man kan bygge en skabelon per dokumenttype, hvor hvert felt bindes til en fast placering, og så håbe på, at layoutet bliver, hvor det er.
Den sidste løsning holder, lige indtil en leverandør laver sit bilag om. Så fejler skabelonen ikke med et brag — den begynder ganske stille at læse den forkerte rubrik. Begge veje går desuden ud fra, at den, der står med dokumentet, sidder ved et skrivebord med en scanner. Det gør han sjældent.
Definér flowet én gang — ikke dokumentet
Kerneidéen i Tolkra er, at man beskriver én gang, hvad der skal hentes ud, som et flow der kan genbruges, frem for at beskrive hvor hver enkelt værdi står på hvert enkelt layout. Man sætter flowet op, sender et foto ind og får felterne tilbage som strukturerede data på få sekunder.
Et flow er en navngivet, ordnet liste af felter. Hvert felt har en etiket, en type og en beskrivelse i almindeligt dansk af, hvad der skal findes — "Afsender: navn eller virksomhed, der har sendt pakken" — og kan sættes som påkrævet. Beskrivelsen er hele grænsefladen til modellen: man skriver, hvad værdien betyder, ikke hvor den står.
Det er hele produkttesen, og det er dér, forskellen viser sig, når et dokument ændrer sig. En skabelon bundet til koordinater skal bygges om i hånden. Et flow, der beskriver en hensigt, bliver ved med at virke, fordi modellen læser siden på samme måde som et menneske og ikke efter pixelplacering.

Ikke kun dokumenter
Der er ikke noget i den konstruktion, der er bundet til papirarbejde. Samme mekanik — felt plus beskrivelse — virker på ethvert billede, hvor svaret kan ses, og de medfølgende skabeloner viser spændvidden: ved siden af fragtlabels, fakturaer og ID-dokumenter ligger der et flow, der vurderer hudens tilstand ud fra et ansigtsfoto, og et, der tæller møbler og udstyr på et billede af et lokale.
Dokumenter er den vigtigste anvendelse, for det er dér genindtastningen sidder. Men produktet er i virkeligheden tættere på: forvandl et hvilket som helst foto til de felter, du bad om.

En builder og en runner — bevidst adskilt
Tolkra er delt i to grænseflader til to forskellige opgaver. Builderen er et arbejdsrum til computeren, hvor man definerer flows, retter felter og udgiver; et flow kan være kladde eller udgivet, så et halvfærdigt flow aldrig når ud til dem, der skal bruge det.
Runner mode er den anden halvdel: en afklædt mobilvisning, der viser de udgivne flows og siger "tryk på et flow for at starte en ny scanning". Ingen felter at rette i, ingen indstillinger, intet at ødelægge — kun flows og historik.
Opdelingen giver mening, fordi de to brugere er vidt forskellige. Den, der tegner et flow, sidder i ro og tænker sig om. Den, der kører det, står i en lagergang, på en rampe eller i en varevogn med dokumentet i den ene hånd og telefonen i den anden. Én grænseflade til dem begge ville være dårlig for begge.
Og for at gøre det første skridt endnu kortere kan et nyt flow tage udgangspunkt i en færdig skabelon i stedet for en tom feltliste.

Hvorfor AWS Bedrock
Udtrækket kører på vision-modeller via AWS Bedrock frem for et dokument-AI-abonnement hos tredjepart. Dermed bliver inferensen inde i den samme AWS-konto som resten af løsningen, og produktet er én ting at drifte, sikre og afregne — ikke en applikation plus en ekstern databehandler med egen kontrakt og egne spørgsmål om, hvor data ligger.
Når dokumenterne rutinemæssigt indeholder priser, vilkår og kundeoplysninger, er det ikke en teknisk detalje, hvor de havner. Det er som regel det første, en køber spørger om, og ét klart svar er meget værd.
Den anden grund er, at modellen bliver ved med at være udskiftelig. Bedrock samler en række vision-modeller bag én grænseflade, så valget af model er en indstilling og ikke en ombygning. I et felt, hvor der lander en mærkbart bedre model med få måneders mellemrum, er det forskellen på at opgradere og at bygge integrationen om — og det betyder, at et flow, man lavede sidste år, kan blive mere præcist, uden at nogen rører det.
Selve pipelinen er heller ikke fundet på her. Vi havde afprøvet den samme tilgang på MockyMe, en gratis forbrugerapp uden kommerciel risiko, og det er et betydeligt bedre sted at lære modellerne at kende end en kundes bilag.
Enhver kørsel kan efterprøves
Et udtræk, man ikke kan gå efter i sømmene, er ikke meget værd. Derfor havner hver scanning i en kørselslog, der dækker alle flows i arbejdsrummet. For hver kørsel står der, hvilket flow der lavede den, hvem der kørte den, om den gik godt, hvor lang tid den tog, og hvilket billede den kom fra.
Åbner man en kørsel, står de udtrukne felter med et konfidenstal ud for hvert enkelt. Netop den konfidens per felt er forskellen på en demo og noget, der kan sættes i drift: den lader et team sende de usikre svar videre til et menneske og lade resten passere, frem for enten at stole på det hele eller kontrollere det hele. Resultaterne kan hentes som CSV, så data kan komme videre derhen, hvor de hele tiden skulle.
Antal tokens og varighed står ved siden af. Prisen er et fast beløb med et antal kørsler inkluderet og ikke en afregning per token, så tallene er ikke en taxameter nogen bliver målt på — de står der, fordi intet ved en kørsel skal være skjult. Det er samme tankegang som konfidenstallene: vis regnestykket frem for at aflevere et svar og bede om at blive troet på.

Sådan ser det ud i dag
Tolkra kører som et multi-tenant produkt med arbejdsrum, medlemsstyring og fakturering og er offentligt tilgængeligt med en gratis plan på tyve kørsler om måneden. Grænsen er sat, så den er reelt brugbar frem for pynt: der er nok til at køre sine egne dokumenter igennem og bedømme resultatet, i stedet for en enkelt demofil, der er valgt til at få modellen til at tage sig godt ud.
Resultatet er et udtræksflow, der kan genbruges, og som laver hverdagens dokumentfotos om til rene, strukturerede data — uden genindtastning og uden skrøbelige OCR-skabeloner, der skal passes. Det er den slags smalle, veldefinerede AI-funktion, der faktisk kan bruges i drift. Og det er præcis den slags, vi også bygger for kunder.

Det vigtigste
- Opsæt-én-gang udtræksflows
- Virker fra ethvert telefonkamera
- Strukturerede data på sekunder
Vi byggede den her, som vi bygger alt andet for kunder. Se hvordan webudvikling på én dag foregår, eller hvad en hjemmeside til fast pris koster.

