Problemet med PDF-fakturor
En PDF-faktura är inte strukturerad data. Det är ett dokument som ser ut att innehålla tydlig information — belopp, datum, motpart, momsrad — men för ett datorprogram är det en bild av text, inte ett strukturerat dataflöde.
Att manuellt bokföra en faktura innebär att du läser dokumentet, identifierar de relevanta fälten, väljer rätt konton i BAS-kontoplanen och skapar en verifikation med korrekta debet- och kreditrader. Det tar tid. Det är repetitivt. Och det är precis det en lokal LLM kan hjälpa till med.
Extraktionspipelinen steg för steg
Steg 1 — PDF-inläsning och textextraktion
När du laddar upp en PDF-faktura i BOKNORD:s inkorg extraheras texten från dokumentet. För PDF-filer med inbäddad text (vilket de flesta moderna fakturor är) sker detta direkt. För skannade dokument används OCR som ett förbehandlingssteg.
Resultatet är en textrepresentation av fakturans innehåll — inte strukturerat, men läsbart för en språkmodell.
Steg 2 — Strukturerad extraktion via lokal LLM
Den extraherade texten skickas till den lokala modellen (körs via Ollama på din maskin) tillsammans med en instruktion som specificerar exakt vilka fält som ska identifieras:
- —Fakturadatum (YYYY-MM-DD)
- —Förfallodatum
- —Fakturanummer
- —Motpartens namn och organisationsnummer (om angivet)
- —Nettobelopp exklusive moms
- —Momsbelopp och momssats (25 %, 12 % eller 6 %)
- —Totalbelopp inklusive moms
- —Betalningssätt (om angivet)
Modellen returnerar ett strukturerat svar — ett JSON-objekt med de extraherade fälten och ett konfidenspoäng per fält.
Steg 3 — Konfidenströsklar och flaggning
Varje extraherat fält får ett konfidenspoäng mellan 0 och 1. BOKNORD Private AI tillämpar tröskelvärden per fälttyp:
| Fält | Tröskel för automatiskt godkännande |
|---|---|
| Totalbelopp | 0,95 |
| Momssats | 0,90 |
| Fakturadatum | 0,90 |
| Motpartens namn | 0,85 |
| Nettobelopp | 0,95 |
Om ett fält hamnar under sitt tröskelvärde flaggas det för manuell granskning. Du ser exakt vilket fält som är osäkert och varför — modellen visar den textsträng i originaldokumentet som gav upphov till extraheringsförslaget.
Steg 4 — Konteringsförslag
Med de extraherade fälten bekräftade genererar systemet ett konteringsförslag baserat på:
- —Momssatsen (avgör vilket momsredovisningskonto som används: 2610, 2641 m.fl.)
- —Dokumenttypen (leverantörsfaktura → D-serie, konton 2440/4xxx/2641)
- —Motpartskategori (om känd från tidigare verifikationer)
Konteringsförslaget presenteras som en ofullständig verifikation med debet- och kreditrader ifyllda men inte bekräftade.
Steg 5 — Manuell granskning och godkännande
Du granskar konteringsförslaget. Fält och rader kan justeras fritt. När du är nöjd godkänner du — och verifikationen skrivs till ledgern som en oföränderlig post med fullständig historik.
AI:n skriver ingenting till böckerna utan ditt godkännande. Det är ett designkrav, inte ett tillval.
Vad som kan gå fel — och hur det hanteras
Varför lokal körning spelar roll här
Extraktionspipelinen bearbetar fakturans fullständiga textinnehåll — inklusive leverantörens kontaktuppgifter, referensnummer och eventuella avtalsbeskrivningar. Det är känslig affärsinformation.
Att skicka den till en extern AI-tjänst skapar ett dataflöde som kräver GDPR-hantering: dataskyddsavtal, bedömning av ändamålsenlighet och potentiellt samtycke från de personer vars uppgifter förekommer i fakturan.
Lokal körning eliminerar det problemet. Texten lämnar aldrig din maskin. Konfidenspoängen beräknas lokalt. Ingenting loggas externt.
Sammanfattning
PDF till verifikation i BOKNORD Private AI är en pipeline i fem steg: textextraktion, strukturerad LLM-extraktion, konfidenstösklar, konteringsförslag och manuellt godkännande. Varje steg är transparent — du ser vad modellen extraherade, hur säker den var och vilket konteringsförslag som följer.
Du bestämmer vad som skrivs till böckerna. Alltid.
