Oltre l'OCR: Come estrarre dati da PDF non strutturati e Tabelle complesse
L'OCR tradizionale fallisce sistematicamente davanti a tabelle su più pagine o documenti storti. Scopri le architetture ibride AI+Regole usate da CodePulse per mappare i PDF caotici.
C’è un mito nel mondo dell’informatica aziendale B2B: basta comprarsi un software OCR (Optical Character Recognition) per risolvere il problema dell’inserimento manuale dei documenti PDF nei gestionali. Purtroppo, la realtà è ben diversa.
Quando si prova per la prima volta un tool commerciale standard (solitamente inserendo una singola fattura bellissima, impaginata perfettamente e generata in vettoriale), l’estrazione è un successo al 100%. Il manager firma l’acquisto con entusiasmo.
Ma cosa succede al software generico quando il magazzino riceve:
- Una fattura di 16 pagine dove l’intestazione della tabella è a pagina 1 e il totale a pagina 16?
- Un bollettino di consegna scansionato in diagonale e sporco di caffè?
- Un rapportino d’intervento scritto a mano o in cui una colonna “Quantità” sconfina nella colonna “Descrizione”?
Il software generico crolla. Produce “spazzatura” in output (garbage-in, garbage-out). Il dipendente si ritrova a dover controllare riga per riga l’output dell’OCR contro il PDF originale, annullando totalmente il risparmio di tempo promesso dall’automazione.
In CodePulse, quando veniamo chiamati in soccorso in questi casi di “Automazioni Fallite”, adottiamo un paradigma radicalmente diverso: l’Ingegneria Ibrida Regole+Visione.
Perché il PDF è un formato intrinsecamente “Cattivo” per i dati
Il formato PDF (Portable Document Format) non è stato inventato per trasportare dati. È stato inventato da Adobe per stampare su carta. Incredibilmente, all’interno del codice di un file PDF, una tabella NON è salvata come una tabella (righe e colonne). Viene invece memorizzata come una collezione di singole parole sparse come vernice in determinate coordinate cardinali della pagina invisibili, insieme a linee disegnate a mano libera (i bordi).
Quindi, capire dove finisce una cella e ne inizia un’altra è un problema visivo monumentale per un computer.
Il Framework di Estrazione in 4 Step di CodePulse
Come risolviamo l’estrazione estrema dove i software commerciali mollano il colpo? Anziché delegare tutto a un singolo “cervello magico”, frammentiamo l’estrazione in una “pipeline” ingegneristica in 4 fasi usando script custom Python:
Step 1: Pre-Processing dell’Immagine (La Cura)
Prima ancora di far leggere il documento, il nostro codice ne guarisce le malattie visive usando l’elaborazione d’immagine avanzata (OpenCV):
- Deskewing: Se il foglio è stato scansionato piegato a 4 gradi, l’algoritmo calcola l’angolo d’inclinazione e ruota l’immagine di -4 gradi finché è geometricamente dritta.
- Adaptive Thresholding: Trasformiamo le zone in scala di grigi sfocate o rovinate in puro Bianco o puro Nero, incrementando brutalmente il contrasto dei caratteri sbiaditi.
Step 2: Riconoscimento della Geometria (Table Parsing Neurale)
Non cerchiamo subito il testo. Iniziamo con i Layout Parsers basati sul Deep Learning e allenati per cercare rettangoli, separatori geometrici e linee orizzontali e verticali. Ricostruiamo la griglia strutturale in modo topologico. Se la tabella attraversa un’interruzione di pagina, i nostri script “saldano” virtualmente l’ultima riga di pagina N con l’intestazione di pagina N+1 senza perdere l’ordine.
Step 3: OCR Contestuale
Applichiamo algoritmi OCR (come Tesseract o AWS Textract tramite API) incastonati dentro i confini geometrici scoperti allo Step 2. Questa segregazione garantisce che un valore non “strabordi” in un’altra colonna a livello di logica dati, mantenendo intonsa la sintassi del record riga per riga.
Step 4: Normalizzazione Deterministica (Regex) e Validazione Matematica
Qui avviene la vera magia dell’automazione custom B2B. L’output grezzo presenta ancora microscopiche incertezze da OCR (es. un 1 scambiato per una I, o una O scambiata per uno 0).
Usiamo le Espressioni Regolari (Regex) in Python per forzare il senso.
- Se il campo estratto è la colonna “Quantità”, impongo che le lettere
Oelscoperte dall’OCR vengano per forza tramutate in0e1. - Applichiamo una logica sommativa cieca, un check di congruenza: lo script sommerà autonomamente il Valore Netto e l’IVA. Il risultato coincide con la cella “Totale”? Se Sì, il margine di confidenza si innalza all’impenetrabile 100%. Se la quadratura del cerchio non torna (magari per 2 centesimi di arrotondamento fittizio d’immagine), l’automazione segna in rosso la fattura isolandola e inviando un flag via email per un’ispezione umana del solo caso anomalo (Exception Handling).
Il 95% del flusso scorrerà liscio da cima a valle senza interferenze; il personale interverrà solo sul 5% difettoso.
Trarremo dati strutturati cristallini (JSON o Excel), pronti per popolare l’ERP via API o Bot.
Hai faldoni di PDF non strutturati caotici e complessi? Condividi con noi un set anonimizzato di test; saremo felici di mostrarti dal vivo il recupero automatico strutturale.