5.9 KiB
Sikkert fakturaudtræk med layoutanalyse og AI
Status
Under udvikling. Første hybridlag med universel linjeudtrækning, AI-sammenligning, matematisk validering og review-status er implementeret lokalt. Koordinatbaseret PDF-evidens og visuel markering i originaldokumentet mangler fortsat.
Formål
Erstat den nuværende tekst- og regex-tunge fakturabehandling med en revisionssikker hybridpipeline. Kritiske værdier må ikke accepteres alene på baggrund af et AI-svar.
Integration i eksisterende flow
Den eksisterende behandling bevares som orkestrering, men ændres fra en fallback-kæde til flere uafhængige analyser:
PDF
├─ original og checksum
├─ layoutudtræk med ordkoordinater
├─ deterministisk felt- og tabelparser
├─ kendt leverandørprofil/template
└─ AI-strukturering
↓
sammenligning
↓
matematisk validering
↓
høj sikkerhed / manuel kontrol
Nye komponenter
invoice_document_service
- Åbner PDF'en én gang.
- Afgør om den har et brugbart tekstlag.
- Udtrækker ord, koordinater, sider og tabelkandidater.
- Renderer og OCR-behandler kun sider uden brugbart tekstlag.
- Gemmer et fælles dokumentformat til de øvrige analysatorer.
invoice_layout_parser
- Finder labels og værdier ud fra position, ikke kun læserækkefølge.
- Genopbygger varetabeller ud fra kolonneoverskrifter og x-positioner.
- Samler fortsættelseslinjer under korrekt varelinje.
- Knytter model, EAN, KN8 og serienumre til den relevante position.
- Returnerer kildehenvisning og bounding box for hvert felt.
invoice_ai_analyzer
- Modtager renset dokumenttekst og layoutparserens kandidater.
- Returnerer et fast JSON-schema.
- Bruges til semantisk strukturering og løsning af tvetydigheder.
- Må ikke overskrive sikre deterministiske værdier uden at skabe en konflikt.
invoice_validator
- Sammenligner resultater fra layout, template og AI.
- Kontrollerer antal gange pris mod linjetotal.
- Kontrollerer subtotal, momsgrundlag, moms og total.
- Understøtter omvendt betalingspligt pr. varelinje.
- Kontrollerer sidetal, positionshuller, dubletter, valuta og fortegn.
- Afviser BMC's egne CVR-numre som leverandør-CVR.
invoice_review_service
- Beregner samlet sikkerhed ud fra dokumenteret enighed og validering.
- Opretter konkrete review-punkter ved uenighed.
- Tillader manuel rettelse uden at slette det oprindelige resultat.
Fælles resultatformat
Hvert kritisk felt skal indeholde:
- Normaliseret værdi
- Oprindelig tekst
- Side og bounding box
- Udtræksmetode
- AI-enighed
- Sikkerhed
- Eventuelle konflikter
Eksempel:
{
"value": 17512.25,
"source_text": "Totalbeløb DKK 17.512,25",
"page": 2,
"bounding_box": [470, 315, 560, 332],
"methods": ["layout", "ai"],
"confidence": 0.99,
"validated": true
}
Database
Bevar eksisterende faktura- og extraction-tabeller. Tilføj særskilt revisionsdata til:
- Dokumentudtræk og parser-version
- Felt-evidens
- Valideringsresultater
- Konflikter og advarsler
- Manuel korrektion
- Model- og prompt-version
Gem ikke store OCR-/layoutobjekter direkte i hovedtabellen, hvis de kan placeres i en separat analyse-/evidenstabel.
Eksisterende templates
- Kendte invoice2data- og database-templates beholdes.
- De bliver en af flere kilder, ikke automatisk facit.
- Leverandørprofiler kan gemme tabelkolonner, labels, momsregler og kendte sideelementer.
- En profil aktiveres kun ved sikker identifikation af leverandør og dokumenttype.
Brugerflade
Review-visningen skal vise PDF og udtrukne data side om side.
- Klik på et felt fremhæver kilden i PDF'en.
- Grøn betyder dokumenteret og valideret.
- Gul betyder lav sikkerhed eller mindre afvigelse.
- Rød betyder konflikt eller matematisk fejl.
- Brugeren ser den konkrete årsag til manuel kontrol.
- Manuelle rettelser gemmes med bruger og tidspunkt.
Godkendelsesregler
Automatisk behandling må først ske, når alle følgende krav er opfyldt:
- Kendt og valideret leverandør
- Leverandør-CVR er ikke BMC's eget CVR
- Fakturanummer, dato, valuta og total har dokumenteret kilde
- Kritiske felter er bekræftet af mindst to metoder eller én metode plus matematisk bevis
- Alle relevante summer stemmer inden for afrundingstolerance
- Ingen manglende sider eller varepositioner
- Ingen ændrede betalingsoplysninger
- Ingen uløste konflikter
- Samlet sikkerhed over den fastsatte grænse
Indtil løsningen er evalueret på et repræsentativt datasæt, er manuel godkendelse standard.
Fejlhåndtering
- AI-nedbrud må ikke stoppe deterministisk udtræk.
- OCR-fejl skal føre til manuel kontrol, ikke tomme værdier accepteret som succes.
- Ugyldig AI-JSON må aldrig gemmes som godkendt resultat.
- Parserfejl logges med dokument-, side-, parser- og modelversion.
- Genbehandling må ikke overskrive tidligere revisionsdata.
Leveringsfaser
- Fælles dokumentmodel med tekst, ordkoordinater og sider.
- Koordinatbaseret parser for DCS-fakturaer og regressionstest med faktura 5509938.
- Felt-evidens og matematisk validator.
- AI-analyse med låst JSON-schema og konfliktsammenligning.
- Review-UI med fremhævelse i PDF'en.
- Pilot på historiske fakturaer uden automatisk bogføring.
- Måling af præcision pr. leverandør og felttype.
- Kontrolleret aktivering af automatisk behandling for godkendte leverandørprofiler.
Acceptkriterier for DCS 5509938
- Alle otte varepositioner findes.
- Fakturanummer
5509938og dato2026-09-08findes. - DCS ApS og CVR
26686091identificeres som leverandør. - BMC CVR
29522790identificeres som køber og ignoreres som leverandør. - Varebeløb
17379.00, momsgrundlag533.00, moms133.25og total17512.25findes. - Omvendt betalingspligt knyttes til de relevante linjer.
- Kontrollen dokumenterer
17379.00 + 133.25 = 17512.25. - Hvert kritisk felt kan spores til side og placering i originaldokumentet.