AI Document Processing Platform
Una piattaforma per estrarre dati strutturati dalle fatture in PDF e controllarne la completezza e la validità. I casi incompleti o non validi richiedono la revisione di un operatore, che può consultare i suggerimenti facoltativi di un modello AI eseguito in locale.
Il problema
Estrarre il testo da un PDF non basta a ottenere dati affidabili. Se il documento è una scansione, occorre prima riconoscere il testo tramite OCR. I campi estratti possono essere incompleti o non validi e l’elaborazione può interrompersi. Anche un modello AI può suggerire valori che non trovano riscontro nel documento. Serve quindi un processo che permetta di controllare i dati, ricostruire le decisioni e individuare gli errori.
Cosa ho costruito
Ho sviluppato una piattaforma in Python con FastAPI che riceve documenti PDF ed estrae il testo incorporato. Se il testo estratto è insufficiente, usa Tesseract per leggere il testo dalle immagini delle pagine.
La piattaforma classifica i documenti e, quando riconosce una fattura, ne estrae numero, data, fornitore, valuta e importo totale. Controlla la presenza dei campi obbligatori, la validità della data e della valuta e che l’importo totale sia maggiore di zero. Le fatture complete e valide vengono approvate automaticamente; quelle incomplete o non valide richiedono la revisione di un operatore. Temporal coordina le fasi di elaborazione e gestisce i tempi massimi e i tentativi.
La console React mostra le code di lavoro e permette di consultare il PDF accanto ai dati estratti, correggerli e approvare o rifiutare le fatture da revisionare. I suggerimenti del modello locale eseguito tramite Ollama sono facoltativi e vengono mostrati separatamente. L’operatore può scegliere quali usare per correggere i dati.
Il percorso di una fattura
Scelte progettuali
Usare l’AI come supporto
L’approvazione delle fatture dipende dai controlli automatici e, quando necessaria, dalla revisione di un operatore. Il modello genera suggerimenti separati dai dati estratti, senza modificarli né approvare il documento.
Conservare la storia delle decisioni
Le correzioni e le decisioni di revisione vengono registrate separatamente dai dati estratti, indicando se i valori corretti sono stati inseriti dall’operatore o suggeriti dal modello AI. Quando un documento viene elaborato di nuovo, la nuova elaborazione è collegata alla precedente e i risultati precedenti vengono conservati.
Gestire le interruzioni tra le fasi
La registrazione del documento e la richiesta di avviare l’elaborazione vengono salvate nella stessa transazione. Un processo separato avvia il flusso in Temporal, che ne registra la cronologia. Se il flusso riprende dopo un’interruzione, le attività riutilizzano i risultati già salvati. La console interroga le API, che leggono da PostgreSQL lo stato del documento.
Stato e limiti
È una demo locale con documenti sintetici. L’estrazione dei campi è supportata solo per le fatture. Gli ordini d’acquisto, le note di credito e i documenti non riconosciuti vengono segnalati come non supportati. Il modello AI locale è opzionale e disattivato per impostazione predefinita.
La demo non è destinata a documenti riservati o provenienti da fonti non attendibili. Il backend è pensato per l’esecuzione locale. L’accesso pubblico richiede ulteriori misure di sicurezza, tra cui autenticazione e autorizzazione per utente. I risultati ottenuti su un piccolo insieme di documenti sintetici non consentono di valutare l’accuratezza dell’estrazione su documenti reali.