Nel precedente articolo ci siamo concentrati sull'infrastruttura IA privata e su come far girare un modello privato su larga scala. In questo post mostriamo cosa può fare concretamente quell'infrastruttura: costruire una pipeline di classificazione dei documenti pronta per la produzione, senza bisogno di fine-tuning o dati di addestramento.

L'approccio Naive

L'errore più comune quando si sviluppa con gli LLM è la "trappola del tentativo unico" (one-shot trap): prendi un file, definisci un elenco di categorie e fai al modello una domanda diretta come questa:

Classify this file into one of these categories:
- driver license
- identity card
- passport
- other
Return only the category name.


Su un set di demo pulito, il risultato può sembrare sorprendentemente buono. Un moderno Vision-Language Model spesso riesce a dedurre abbastanza informazioni dalla prima pagina da produrre un'etichetta plausibile. Di solito è a questo punto che i team iniziano a credere di avere un classificatore pronto.

In produzione, però, questa illusione dura molto poco. I flussi di documenti reali sono caotici: un singolo file può contenere più pagine, più documenti, scansioni ruotate, pagine vuote e così via. In queste condizioni, la domanda "di quale categoria è questo file?" è troppo ampia. Costringe il modello a risolvere molti piccoli problemi tutti in una volta.

Questo crea immediatamente tre colli di bottiglia:

Un modo migliore di impostare il problema

La soluzione è semplice: dividere il problema in problemi più piccoli.

Puoi ottenere ottimi risultati da un modello privato più piccolo se suddividi il flusso di lavoro in decisioni mirate e lasci che sia il codice deterministico a orchestrare la sequenza. Al modello non dovrebbe essere chiesto di "capire l'intero flusso di ricezione". Dovrebbe invece rispondere a una serie di domande ben delimitate:

Ognuna di queste domande è più semplice dell'intero problema di classificazione. A ciascuna si può rispondere con un prompt breve e un formato di output vincolato. Quando queste decisioni locali vengono combinate, il sistema complessivo diventa molto più affidabile di un classificatore monolitico.

Questo è esattamente l'approccio che rende pratici i modelli privati. Non stai competendo con i modelli di frontiera sul ragionamento aperto. Stai progettando un sistema in cui il modello deve solo prendere decisioni circoscritte e ad alto segnale.

La Pipeline

Nella nostra implementazione, il classificatore è costruito come una pipeline a fasi. Se seguiamo il flusso di esecuzione effettivo, si presenta così:

1. Trasformare ogni input in singole pagine

I PDF vengono renderizzati pagina per pagina. Le immagini vengono convertite in un formato standard in memoria. Alla fine di questa fase, il sistema ha un elenco di singole pagine che possono essere elaborate tutte allo stesso modo.

2. Rilevare le pagine con più elementi e ritagliarle

Ogni pagina viene controllata per vedere se contiene più di un elemento visibile. In caso positivo, il sistema estrae ritagli separati in modo che ogni documento o immagine possa essere elaborato in autonomia.Questo è uno dei motivi più evidenti per cui il classificatore ingenuo fallisce: se un singolo file caricato contiene sia una patente che una carta d'identità, chiedere un'unica etichetta è già in partenza la domanda sbagliata.

3. Rilevare il tipo di pagina e scartare quelle vuote

La decisione successiva non è ancora l'etichetta di business definitiva. Per prima cosa, il sistema decide se ogni elemento è un documento, una foto o una pagina vuota.Le pagine vuote vengono rimosse. Le foto vengono immediatamente indirizzate a una categoria specifica. Le pagine con documenti proseguono lungo la pipeline dedicata.

4. Rilevare e correggere la rotazione

Solo le pagine di tipo documento passano attraverso il rilevamento dell'orientamento. Se una pagina è ruotata, viene raddrizzata prima dell'avvio dell'OCR. Questo passaggio è fondamentale perché l'estrazione successiva diventa molto più affidabile se la pagina è orientata nel verso giusto.

5. Avviare l'OCR e assegnare una categoria iniziale

Dopo la rotazione, il sistema esegue l'OCR su ciascuna pagina del documento. Estrae le informazioni strutturate dalla pagina e assegna una categoria iniziale.In questa implementazione, il lavoro semantico è concentrato nelle fasi visive e di OCR, mentre l'etichetta aziendale finale viene assegnata in modo prudente a partire dalle informazioni estratte utilizzando regole deterministiche. Se le prove sono deboli, la pagina viene lasciata come "sconosciuta". Questo è un principio di produzione importante: è meglio astenersi piuttosto che forzare un'etichetta sicura ma sbagliata.

6. Raggruppare le pagine correlate, recuperare le sconosciute e consolidare per categoria

Se alcune pagine risultano ancora sconosciute, la pipeline avvia una fase di raggruppamento per determinare quali pagine debbano stare insieme. Il risultato del raggruppamento viene convalidato e le pagine sconosciute possono così ereditare il contesto dalle pagine vicine nello stesso sottoinsieme, a patto che ci siano prove sufficientemente forti.

Questa fase di raggruppamento non è il classificatore principale. È un meccanismo di recupero che aiuta a gestire le pagine ambigue dopo il primo passaggio. Una volta che ogni pagina ha una categoria utilizzabile, la pipeline consolida le pagine in base all'etichetta finale, in modo che gli output correlati possano essere gestiti insieme nelle fasi successive.

Questo è ciò che trasforma il classificatore da un semplice prompt a un vero e proprio flusso di lavoro. Il modello non prende un'unica grande decisione; prende una sequenza di decisioni più piccole, e il codice circostante dà a queste decisioni struttura, convalida, comportamenti di fallback e percorsi di recupero.