bmc_hub/fremtidige planer/sikker-fakturaudtraek-hybrid-ai.md

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

  1. Fælles dokumentmodel med tekst, ordkoordinater og sider.
  2. Koordinatbaseret parser for DCS-fakturaer og regressionstest med faktura 5509938.
  3. Felt-evidens og matematisk validator.
  4. AI-analyse med låst JSON-schema og konfliktsammenligning.
  5. Review-UI med fremhævelse i PDF'en.
  6. Pilot på historiske fakturaer uden automatisk bogføring.
  7. Måling af præcision pr. leverandør og felttype.
  8. Kontrolleret aktivering af automatisk behandling for godkendte leverandørprofiler.

Acceptkriterier for DCS 5509938

  • Alle otte varepositioner findes.
  • Fakturanummer 5509938 og dato 2026-09-08 findes.
  • DCS ApS og CVR 26686091 identificeres som leverandør.
  • BMC CVR 29522790 identificeres som køber og ignoreres som leverandør.
  • Varebeløb 17379.00, momsgrundlag 533.00, moms 133.25 og total 17512.25 findes.
  • 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.