L'evoluzione della gestione documentale: da regole rigide a sistemi cognitivi
Nelle prime fasi dell'automazione (che abbiamo affrontato nei capitoli dedicati alle basi di Make e n8n), la gestione delle email si basava su regole rigide: "Se l'oggetto contiene 'Fattura', allora sposta l'allegato nella cartella X". Questo approccio mostra rapidamente i suoi limiti nel mondo reale, dove i clienti sbagliano l'oggetto delle email, inviano formati non standard o inseriscono informazioni cruciali direttamente nel corpo del testo.
In questo capitolo avanzato vedremo come superare questi limiti strutturando una pipeline di Intelligent Document Processing (IDP). Sfrutteremo la combinazione di trigger email, estrazione OCR/testuale e Large Language Models (LLM) per trasformare documenti non strutturati (PDF, scansioni, email di testo libero) in dati JSON pronti per essere inseriti nel tuo ERP, CRM o database, archiviando contemporaneamente i file con una nomenclatura coerente.
L'Architettura del Workflow
Un sistema di smistamento e archiviazione documentale avanzato si sviluppa su quattro fasi distinte:
- Ingestion (Ingresso): Intercettazione dell'email o del documento tramite webhook o polling IMAP/API (Gmail/Outlook).
- Extraction (Estrazione Grezza): Recupero del testo dal corpo dell'email e conversione degli allegati (PDF o immagini) in testo leggibile tramite OCR o parser PDF nativi.
- Structuring (Strutturazione con LLM): Elaborazione del testo grezzo tramite un modello di linguaggio per estrarre chiavi e valori specifici in formato JSON strutturato.
- Routing & Storage (Smistamento e Archiviazione): Decisione logica basata sui dati estratti (es. instradamento per approvazione se l'importo supera una soglia) e salvataggio del file su Cloud Storage (Google Drive, Dropbox) e dei dati su database (Airtable, PostgreSQL).
1. Ingestion ed Estrazione Grezza
Il trigger ideale per questo flusso è l'arrivo di una nuova email. A livello enterprise, è consigliabile utilizzare webhook diretti forniti dalle API di Microsoft Graph o Google Workspace anziché il classico protocollo IMAP, per garantire tempi di risposta immediati e maggiore sicurezza.
Una volta ricevuta l'email, il primo ostacolo è l'allegato. I PDF si dividono in due categorie:
- PDF nativi (vettoriali): Il testo è selezionabile. Strumenti integrati nelle piattaforme di automazione possono estrarre il testo direttamente senza costi aggiuntivi.
- PDF scannerizzati (immagini): Richiedono un passaggio di OCR (Optical Character Recognition). In questo caso, l'integrazione con API di servizi come AWS Textract, Google Cloud Vision o moduli OCR nativi di piattaforme come n8n è indispensabile per convertire l'immagine in stringhe di testo.
2. Strutturazione dei dati tramite LLM (Structured Outputs)
Fino a poco tempo fa, per estrarre dati da un testo si usavano le espressioni regolari (RegEx). Le RegEx sono fragili: basta che un fornitore sposti la parola "Totale" di due millimetri o cambi font per rompere l'automazione.
Oggi utilizziamo gli LLM impostati in modalità Structured Output (o JSON Schema). Questo garantisce che l'AI non risponda con testo discorsivo, ma restituisca esclusivamente un oggetto JSON valido, validato rispetto a uno schema da noi definito.
{
"type": "object",
"properties": {
"mittente": { "type": "string" },
"partita_iva": { "type": "string" },
"data_documento": { "type": "string", "format": "date" },
"importo_totale": { "type": "number" },
"categoria": { "type": "string", "enum": ["Fattura", "Contratto", "Ricevuta", "Altro"] }
},
"required": ["mittente", "data_documento", "importo_totale", "categoria"]
}Inviando questo schema insieme al testo del documento all'API di OpenAI (es. modello GPT-4o) o Anthropic, eliminiamo il rischio di allucinazioni e otteniamo dati pronti per essere mappati nei nodi successivi del workflow.
Esercizio Pratico: Creare il Prompt di Estrazione e Smistamento
Proviamo a simulare la fase di strutturazione. Questo esercizio ti permetterà di testare la logica di estrazione direttamente nella console del tuo LLM preferito (OpenAI Playground, Anthropic Console o ChatGPT/Claude) prima di inserire il nodo all'interno del tuo tool di automazione.
Il Testo di Input (Simulazione di un'email ricevuta)
Copia questo testo che simula un'email disordinata inviata da un cliente:
Oggetto: Invio accordo firmato e info pagamento
Ciao Team, vi allego il contratto firmato ieri.
Giusto per vostra cronaca, la partita IVA della mia società (Sviluppo Web SRL) è IT12345678901.
L'accordo prevede un canone mensile di 1500 Euro a partire dal 01/11/2024.
Potete inviare le fatture a amministrazione@sviluppoweb.it.
Un saluto,
Marco RossiIl System Prompt
Configura il prompt di sistema (System Prompt) per istruire l'AI a comportarsi come un parser documentale rigoroso:
Sei un assistente specializzato nell'estrazione di dati strutturati da testi aziendali.
Analizza il testo fornito dall'utente ed estrai le informazioni richieste.
Devi rispondere ESCLUSIVAMENTE con un oggetto JSON valido che segue questa struttura:
{
"ragione_sociale": "Nome dell'azienda",
"piva": "Partita IVA (solo numeri preceduti da IT se presente)",
"valore_contratto": numero decimale,
"data_decorrenza": "YYYY-MM-DD",
"email_amministrazione": "indirizzo email"
}
Non aggiungere introduzioni, spiegazioni o formattazione markdown al di fuori del JSON stesso. Se un dato non è presente, imposta il valore a null.Il Risultato Atteso
Inviando il testo dell'email con il system prompt sopra indicato, l'AI restituirà esattamente questo output:
{
"ragione_sociale": "Sviluppo Web SRL",
"piva": "IT12345678901",
"valore_contratto": 1500.00,
"data_decorrenza": "2024-11-01",
"email_amministrazione": "amministrazione@sviluppoweb.it"
}Smistamento e Archiviazione Dinamica
Una volta ottenuto il JSON pulito, la piattaforma di automazione (Make o n8n) utilizzerà questi dati per eseguire le azioni finali senza alcun intervento umano:
- Nomenclatura Standardizzata: Rinomina il file allegato usando le variabili estratte, ad esempio:
CONTRATTO_Sviluppo Web SRL_2024-11-01.pdf. - Archiviazione Condizionale: Se
categoriaè "Fattura", il file viene salvato nella cartella "Amministrazione/Fatture/2024". Se è "Contratto", viene salvato in "Legale/Contratti". - Aggiornamento Database: Viene creata una nuova riga nel CRM o su Airtable con i campi estratti (Ragione Sociale, P.IVA, Valore), allegando il link diretto al file salvato su Google Drive.
Questo approccio riduce il tempo di gestione manuale dei documenti del 90%, azzerando gli errori di digitazione e garantendo che nessun documento importante rimanga bloccato nella casella di posta di un singolo collaboratore.