Come creare un modello di estrazione documenti senza codice
Come creare un modello di estrazione documenti senza codice
La parola "modello" si porta dietro parecchia zavorra nel mondo dell'OCR. Per vent'anni ha significato una mappa di coordinate: disegnavi un rettangolo sul numero di fattura, un altro sul totale, e il software leggeva i pixel che cadevano lì dentro. Funziona finché un fornitore non sposta il logo: l'OCR a modelli lega ogni campo a una posizione fissa, quindi un blocco di righe riordinato o un nuovo riquadro bancario rompe l'estrazione e costringe a rifare il modello a mano (ADVISORI). Con duecento fornitori, mantenere quella libreria diventa un lavoro fisso, un guasto talmente noto da avere un nome: template decay (Datamondial).
Un modello di estrazione moderno è un oggetto completamente diverso. È uno schema: l'elenco dei campi che vuoi, ognuno con nome, tipo e una breve descrizione. Niente coordinate, niente disegni, niente codice. L'IA legge il documento come lo leggerebbe una persona e compila il tuo elenco, anche su layout mai visti prima — quella che nel settore si chiama estrazione zero-shot (LlamaIndex).
Questa guida lo costruisce campo per campo.
Parti dall'output, non dal documento
L'errore classico è aprire il PDF e annotare tutto ciò che è stampato. Finisci con 40 campi, 12 dei quali non guarda nessuno, e ogni campo in più è una cosa in più che può arrivare sbagliata.
Apri invece la destinazione: le intestazioni del foglio Excel, il file di import del gestionale, il form che oggi qualcuno compila a mano. Quelle colonne sono i tuoi campi. Se un dato non ha una casa a valle, lascialo fuori. Potrai sempre aggiungerlo dopo: un modello è un elenco di testo, non uno sviluppo.
Buon esercizio di partenza: prendi l'ultimo documento lavorato a mano e chiedi che cosa è stato effettivamente digitato. Sulle fatture di solito sono partita IVA del fornitore, numero, data, imponibile, IVA, totale e le righe. Poco altro.
Passo 1: dai ai campi il nome che usa il tuo sistema
Usa gli stessi nomi della destinazione, in snake_case o nel formato che si aspetta l'import: `piva_fornitore`, `numero_fattura`, `data_emissione`, `importo_totale`. Per due motivi:
- La mappatura verso gestionale o Excel diventa una corrispondenza diretta di colonne, non uno strato di traduzione.
- Il nome del campo è già un indizio per il modello. `data_emissione` estrae meglio di `data` in un documento che porta anche data di scadenza e data di consegna.
Evita nomi ambigui all'interno del documento stesso. `data`, `numero`, `importo` e `nome` sono i quattro peggiori.
Passo 2: assegna un tipo a ogni campo
I tipi lavorano più di quanto sembri. Uno schema con nomi, tipi e vincoli trasforma l'estrazione da esercizio di riempimento a problema di soddisfacimento di vincoli, e le descrizioni danno al modello una guida semantica fine campo per campo (Sandgarden).
In pratica ne servono quattro:
- testo — nomi, indirizzi, codici di riferimento. Attenzione: un codice come `0044` è testo, non numero, altrimenti perdi lo zero iniziale.
- numero — tutto ciò su cui farai aritmetica: importi, quantità, percentuali. Decidi una volta per tutte se vuoi `1234.56` o il formato locale, e scrivilo nella descrizione.
- data — specifica sempre il formato di output (`YYYY-MM-DD` è l'unico che si ordina correttamente in un foglio di calcolo).
- tabella — righe che si ripetono. Sotto in dettaglio.
Passo 3: scrivi le descrizioni come se stessi formando un neoassunto
È qui che un modello passa dall'80% al 97% di precisione, ed è la parte che quasi tutti saltano.
Descrizione debole: *"Il totale della fattura."*
Descrizione buona: *"Importo finale da pagare IVA inclusa, stampato in basso a destra nel blocco dei totali. Se il documento mostra sia un subtotale sia un totale, prendi la cifra maggiore che comprende le imposte. Se c'è una riga di sconto per pagamento anticipato, prendi l'importo realmente dovuto."*
Tre regole che ripagano sempre:
- Di' dove si trova e accanto a cosa. I documenti sono ambigui; "il numero che segue l'etichetta *N. Fattura* o *Fattura n.*" elimina l'indovinello.
- Di' cosa fare nel caso strano. Due candidati, campo assente, correzione a penna. Il caso strano è quello che genera l'errore che poi ti costa un'ora di caccia.
- Non mettere mai come esempio un valore reale preso da un documento reale. Usa un campione fittizio che mostri solo il formato (`AB-0000/00`). Se scrivi il numero di fattura di un fornitore vero, il modello lo copierà volentieri in documenti dove non c'entra nulla. Questo errore costa giorni.
Passo 4: le righe come campo di tipo tabella
Tutto ciò che si ripete — righe di fattura, letture di contatore, ospiti, righe prodotto — è un unico campo di tipo tabella con i propri sottocampi.
Definisci i sottocampi come scalari: `descrizione`, `quantita`, `prezzo_unitario`, `aliquota_riga`, `totale_riga`. Due cose da azzeccare:
- Un concetto per colonna. Se un fornitore stampa due colonne di codice (il suo riferimento interno e il modello del produttore), fanne due sottocampi e non una stringa unita. Unire a valle è banale; separare è tirare a indovinare.
- Decidi cosa fare con le righe che non sono prodotti: subtotali, riporti di pagina, spese di trasporto. Scrivi nella descrizione se vanno estratte o ignorate, altrimenti avrai una risposta diversa per ogni documento.
Con le righe pulite, esportarle è la parte facile: vedi come convertire un PDF in Excel automaticamente.
Passo 5: definisci che cosa significa "non c'è"
Ogni modello ha bisogno di una regola esplicita per i dati mancanti. Il default deve essere: se il campo non è nel documento, restituisci null e non dedurlo.
Senza quell'istruzione, un modello a cui chiedi la data di scadenza su una fattura che non ce l'ha a volte la calcola sommando 30 giorni all'emissione. È un'ipotesi plausibile e un errore silenzioso, la peggiore combinazione possibile. Una cella vuota è un problema che vedi; un valore inventato è un problema che scopri tre mesi dopo in riconciliazione.
Passo 6: aggiungi controlli che puoi eseguire tu
Rispettare lo schema non equivale ad avere il contenuto giusto: l'output strutturato garantisce un JSON valido nella forma corretta, non che i numeri dentro siano esatti (Sandgarden), e i modelli non forniscono nativamente un punteggio di confidenza affidabile per campo (Docupipe). Quindi costruisci tu l'aritmetica, fuori dal modello:
- Imponibile + IVA − ritenuta = totale.
- La somma dei totali riga coincide con l'imponibile.
- Le partite IVA rispettano formato e cifra di controllo.
- Le date cadono in una finestra plausibile.
Il documento che fallisce un controllo va a revisione umana; il resto passa dritto. È tutta qui la base di una politica di revisione sensata: dove mettere l'asticella lo abbiamo trattato in quanta precisione ti serve davvero.
Passo 7: prova prima sui documenti più brutti
Non validare un modello sul PDF nativo e pulito del tuo miglior fornitore. Scegli dieci documenti che includano:
- Una foto storta e con poca luce.
- Una scansione di un fax di una copia.
- Un documento di due pagine in cui la tabella prosegue sulla seconda.
- Quello del fornitore dal layout genuinamente strano.
- Un documento in negativo: una nota di credito.
Passali, confronta con ciò che avrebbe digitato una persona e correggi la descrizione solo dei campi che hanno sbagliato. Due o tre giri bastano di solito. Resisti alla tentazione di riscrivere tutto dopo un risultato brutto.
Modelli da cui vale la pena partire
Quasi tutti i casi sono varianti di cinque schemi:
- Fattura fornitore — ragione sociale e partita IVA, numero, data, imponibile, aliquota e importo IVA, ritenuta, totale, tabella righe.
- Documento d'identità / KYC — nome completo, numero, data di nascita, scadenza, nazionalità, tipo di documento.
- Bolletta — indirizzo di fornitura, codice POD o contatore, intestatario, periodo, consumo, totale.
- Documento di trasporto — fornitore, numero, data, riferimento all'ordine, righe.
- Biglietto da visita — nome, ruolo, azienda, email, telefono, sito.
Ognuno è un quarto d'ora di digitazione, non un progetto. È questo il cambiamento vero: il costo di un nuovo tipo di documento è passato da un'integrazione a un pomeriggio. Per calibrare la posta in gioco, i benchmark 2025 di Ardent Partners fissano il costo medio di lavorazione manuale di una fattura a 10,89 $, contro 2,78 $ dei team automatizzati di riferimento (Ascend Software, Truvio).
Quando un modello solo non basta
Uno schema per risultato, non per fornitore. Tutte le fatture d'acquisto condividono un modello anche se arrivano da 200 aziende diverse: è esattamente il senso di aver buttato via le coordinate, e il motivo per cui i modelli OCR per fornitore si rompono.
Serve un secondo modello quando l'*output* è diverso: fatture e documenti d'identità alimentano tabelle diverse, quindi hanno schemi diversi. Se un singolo fornitore richiede un trattamento speciale — un codice da ricomporre in un modo preciso — risolvilo come regola di mappatura nel tuo sistema, non come biforcazione del modello. Tenere quella logica a valle è ciò che ti permette di inviare i dati puliti a Excel o al gestionale via API senza rimettere mano all'estrazione.
Domande frequenti
Devo addestrare l'IA sui miei documenti? No. L'estrazione zero-shot parte da uno schema e un prompt e funziona su layout mai visti, senza campioni di addestramento (LlamaIndex). Quello che affini è il testo delle descrizioni, non un modello.
Quanti campi sono troppi? Non c'è un limite rigido, ma ogni campo di cui non sai indicare l'uso è solo rischio. Parti dalle colonne che la destinazione ha davvero e aggiungi su richiesta.
E se un fornitore cambia layout? Non succede nulla. Uno schema descrive il significato, non la posizione, quindi un blocco spostato o un'intestazione nuova non lo rompono — al contrario dei modelli a coordinate, dove un cambio di layout impone la ricostruzione manuale (ADVISORI).
Posso estrarre campi scritti a mano? Numeri e controlli del tipo "la firma c'è", spesso sì; scrittura libera, con meno affidabilità. Tratta i campi manoscritti come sempre da rivedere, non da passaggio diretto.
Come faccio a sapere che l'estrazione è corretta? Con controlli aritmetici e di formato che definisci tu, non con la confidenza autodichiarata del modello: i modelli non forniscono in modo affidabile un punteggio di confidenza per campo (Docupipe).
---
Prova subito il tuo primo schema su un documento reale: estrai i dati del tuo documento gratis, senza account.
Devi estrarre dati da un documento adesso?
Provalo gratis in pochi secondi, senza account né carta. Carica una fattura o un documento e ottieni i dati all'istante.
Prova gratis