Svi članci
Automatizacija

4 min čitanja

Parsiranje dokumenata uz LLM: izvlačenje podataka iz faktura i obrazaca

Kako fakture i obrasce pretvoriti u pouzdane strukturirane podatke uz LLM, sheme, validaciju i red za pregled slučajeva kojima treba čovjek.

Šta rješava strukturirano izvlačenje podataka uz LLM

Mnogi operativni timovi još ručno prepisuju podatke iz dokumenata u sisteme: fakture dobavljača u ERP, obrasce za prijavu u CRM, otpremnice u skladišni sistem. Alati za izvlačenje zasnovani na šablonima rade dok dobavljač ne promijeni izgled dokumenta. Jezički modeli (LLM), posebno oni koji mogu čitati slike stranica, mogu izvući polja i iz rasporeda koje nikad nisu vidjeli.

Ovaj vodič je za rukovodioce operative i finansija koji automatizuju prijem dokumenata, i za inženjere koji to izrađuju. Natjerati model da vrati JSON je lako. Da biste dobili podatke koje možete knjižiti u glavnu knjigu bez provjere svakog dokumenta, trebaju vam stroga shema, validacija, signali pouzdanosti i red za ljudski pregled za sve ostalo.

OCR ili vision modeli

Prva odluka u dizajnu je kako model vidi dokument.

PristupKako radiPrednostiSlabosti
Tekstualni slojČita ugrađeni tekst digitalnog PDF-aBrzo, jeftino, tačni znakoviSkenovi nemaju tekstualni sloj; tabele i kolone se mogu izmiješati
OCR, pa LLMOCR daje tekst, često s pozicijama, a LLM izvlači poljaRadi na skenovima; pozicije pomažu pri označavanju i revizijiGreške OCR-a idu dalje; složeni rasporedi gube strukturu
Model koji čita slikeVision model direktno čita slike stranicaRazumije raspored, tabele, pečate i rukopis u kontekstuVeći trošak po stranici; duge brojeve treba provjeriti
KombinovanoVision model izvlači, a tekstualni sloj ili OCR potvrđuje vrijednostiRazumijevanje rasporeda uz provjeru na nivou znakovaViše dijelova koji se mogu pokvariti

Za fakture i obrasce ih obično kombinujemo. Model koji čita slike izvlači polja, a gdje postoji tekstualni sloj ili OCR izlaz, provjeravamo da se ključne vrijednosti kao što su IBAN, broj fakture i iznosi pojavljuju i u njemu. Neslaganje je signal da dokument ide na pregled.

Izlaz definišite shemom

Tačno opišite šta želite, kao tipiziranu shemu. S bibliotekom pydantic ista klasa generiše JSON shemu koju šaljete modelu i validira ono što se vrati. Kada definišete alat i natjerate model da ga pozove, izlaz prati tu shemu:

Python
from datetime import date
from decimal import Decimal
from anthropic import Anthropic
from pydantic import BaseModel, Field, model_validator

class Invoice(BaseModel):
    supplier_name: str
    invoice_number: str
    invoice_date: date
    currency: str = Field(pattern=r"^[A-Z]{3}$")
    net_total: Decimal
    vat_total: Decimal
    gross_total: Decimal

    @model_validator(mode="after")
    def totals_add_up(self):
        if abs(self.net_total + self.vat_total - self.gross_total) > Decimal("0.01"):
            raise ValueError("net + VAT does not equal gross")
        return self

client = Anthropic()

def extract(pdf_b64: str) -> Invoice:
    tool = {"name": "record_invoice", "description": "Record the invoice fields.",
            "input_schema": Invoice.model_json_schema()}
    response = client.messages.create(
        model="claude-sonnet-5", max_tokens=2048, tools=[tool],
        tool_choice={"type": "tool", "name": "record_invoice"},
        messages=[{"role": "user", "content": [
            {"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": pdf_b64}},
            {"type": "text", "text": "Extract the fields from this invoice."},
        ]}],
    )
    block = next(b for b in response.content if b.type == "tool_use")
    return Invoice.model_validate(block.input)

Nekoliko navika u pisanju shema poboljšava tačnost:

  • Koristite precizne tipove: date, Decimal za novac i enume za poznate vrijednosti kao što su valuta ili vrsta dokumenta.
  • Polja označite kao opcionalna samo kada ih dokumenti zaista izostavljaju, i recite modelu da ih u tom slučaju ostavi prazna.
  • Dodajte kratke opise polja za sve što je dvosmisleno, na primjer da li iznos uključuje PDV.
  • Tražite izvorni tekst ili broj stranice za ključna polja. To znatno ubrzava pregled i reviziju.

Validacija i izvan sheme

Shema provjerava oblik. Poslovna pravila provjeravaju smisao. Pokrenite oboje na svakom izvlačenju:

  1. 01Aritmetika: stavke se sabiraju u neto iznos, neto plus PDV daje bruto, a stope PDV-a su one koje prihvatate.
  2. 02Format: kontrolni brojevi IBAN-a, format PDV broja i datumi u razumnom rasponu.
  3. 03Referentni podaci: dobavljač postoji u vašim matičnim podacima, bankovni podaci odgovaraju onima u evidenciji, a narudžbenica je otvorena.
  4. 04Duplikati: isti dobavljač i broj fakture nisu ranije obrađeni.

Neuspjela validacija nikad ne smije tiho ispraviti podatke. Dokument ide na pregled s priloženim pravilom koje nije prošlo, pa osoba koja pregleda zna gdje da gleda. Izmijenjen bankovni račun poznatog dobavljača traži posebnu pažnju, jer je to poznat obrazac prevare.

Pouzdanost bez nagađanja

Kada pitate model koliko je siguran, dobijete brojke koje izgledaju precizno, a loše su kalibrisane. Pouzdanost sastavite iz signala koje možete provjeriti:

  • Sve validacije sheme i poslovnih pravila prolaze.
  • Ključne vrijednosti pojavljuju se doslovno u OCR izlazu ili tekstualnom sloju.
  • Dva prolaza izvlačenja, na primjer s različitim promptima ili modelima, slažu se u kritičnim poljima.
  • Dobavljač i raspored dokumenta imaju historiju čistih izvlačenja.

Od toga za svaki dokument napravite odluku o usmjeravanju: direktna obrada, pregled određenih polja ili pregled cijelog dokumenta. Na redovnom uzorku mjerite stopu grešaka kod direktno obrađenih dokumenata i direktnu obradu širite samo kada ta stopa to podrži.

Dizajnirajte red za ljudski pregled

Red za pregled je mjesto gdje se čuva tačnost, pa ga dizajnirajte kao zaseban proizvod:

  • Prikažite dokument pored izvučenih polja, s izvorom svakog polja označenim na stranici.
  • Označena polja stavite prva, s opisom pravila koje nije prošlo ili neslaganja jednostavnim riječima.
  • Omogućite da se polje ispravi jednim potezom, a ostala odobre zajedno.
  • Bilježite svaku ispravku. Ispravke su označeni podaci za vaš skup testova i pokazuju kojim dobavljačima ili poljima treba pažnja.

Dobar red pretvara pregled u brzu provjeru nekoliko označenih polja. Pratite vrijeme po pregledu i ispravke po polju da vidite gdje sljedeće poboljšati izvlačenje. Za širi obrazac usmjeravanja automatskih odluka ljudima pogledajte AI agente uz ljudsko odobrenje.

Odakle početi

  1. 01Prikupite nekoliko stotina stvarnih dokumenata od različitih dobavljača ili vrsta obrazaca, uključujući loše skenove.
  2. 02Za uzorak označite tačne vrijednosti. To je vaš skup testova.
  3. 03Shemu i poslovna pravila definišite s timom koji danas radi taj posao.
  4. 04Izradite izvlačenje s validacijom i mjerite tačnost po polju.
  5. 05Krenite tako da se svaki dokument pregleda, a zatim grupe dokumenata prebacujte na direktnu obradu kako vaša mjerenja to podrže.

Ovaj obrazac smo izradili za parsiranje finansijskih dokumenata i za odobravanje faktura uz provjeru pravila. Pročitajte kako radimo da vidite kako ovakve projekte vodimo od prvih dokumenata do puštanja u rad.

Svi članci

Započnite saradnju s Vantionom.