Skip to main content

Molte organizzazioni, soprattutto nei settori finanziario e legale, scansionano e archiviano nel cloud, sotto forma di immagini, accordi storici con i clienti originariamente firmati su carta. Questi documenti contengono spesso clausole, disposizioni e condizioni fondamentali per la conformità normativa, gli audit e il processo decisionale. Estrarre manualmente le informazioni principali da documenti scansionati e particolarmente lunghi richiede molto tempo, un notevole impegno e comporta il rischio di errori. Diventa quindi fondamentale individuare soluzioni automatizzate e più efficienti.

Questo tutorial mostra come creare un workflow visuale che automatizza l’estrazione e la sintesi degli accordi finanziari utilizzando il riconoscimento ottico dei caratteri (OCR, Optical Character Recognition) e la GenAI in KNIME Analytics Platform. Grazie a questa soluzione, è possibile generare riepiloghi concisi e professionali a partire da documenti scansionati, risparmiando tempo e migliorando la precisione.

KNIME Analytics Platform è uno strumento di data science che permette di sviluppare applicazioni attraverso workflow visuali. È open source e gratuito.

Questa serie di articoli dedicata a Summarize with GenAI presenta una raccolta di workflow KNIME progettati per accedere ai dati provenienti da diverse fonti, come Box, Zendesk, Jira e Google Drive, e trasformarli in riepiloghi sintetici e utili per il processo decisionale.

Riassumere accordi finanziari scansionati con un workflow visuale

Questa soluzione mira ad automatizzare la sintesi degli accordi finanziari scansionati e archiviati nel cloud sotto forma di immagini. Utilizzando la tecnologia OCR e modelli linguistici di grandi dimensioni (LLM) eseguiti localmente all’interno di KNIME Analytics Platform, il workflow estrae le informazioni testuali principali e genera riepiloghi concisi. Questi vengono poi raccolti in un report PDF e archiviati su Box, per facilitarne l’accesso e la condivisione.

In questo esempio, riassumeremo un accordo storico di sostegno finanziario proveniente dalla UNT Digital Library. Il documento descrive l’impegno della Texas Human Rights Foundation a sostenere una parte coinvolta in una causa legale.

Il processo si articola in tre passaggi:

  1. Accedere alle immagini dell’accordo finanziario scansionato collegandosi a Box.
  2. Estrarre il testo tramite OCR e riassumere il documento utilizzando un LLM locale.
  3. Raccogliere i riepiloghi in un report statico e archiviarlo su Box.

 This workflow automates the summarization of scanned financial agreements using KNIME.

Questo workflow automatizza la sintesi degli accordi finanziari scansionati utilizzando KNIME.

Step 1. Accedere ai dati: collegarsi a Box per recuperare i documenti scansionati

In the first section of the workflow, the scanned financial agreement, stored in a Box folder, is accessed in KNIME Analytics Platform.

Nella prima sezione del workflow, l’accordo finanziario scansionato, archiviato in una cartella Box, viene importato in KNIME Analytics Platform.

Per iniziare, accediamo all’accordo di sostegno finanziario scansionato e archiviato su Box. A questo scopo, utilizziamo il nodo Box Authenticator per autenticarci al nostro account Box. Successivamente, impieghiamo il nodo Box Connector per specificare la cartella contenente i file .png, ciascuno dei quali rappresenta una pagina dell’accordo.

Per estrarre il contenuto testuale delle immagini, trasferiamo innanzitutto i file dalla posizione originale a una nuova destinazione utilizzando il nodo Transfer Files. Questo nodo adatta automaticamente la propria porta di ingresso al file system di origine a cui è collegato. Nel nostro esempio, trasferiamo i file da Box all’area dati del workflow, dove possono essere elaborati localmente.

Step 2. Interrogare l’LLM: estrarre il testo con OCR e riassumerlo con Llama 3 di Meta in locale

This part of the workflow prepares the extracted text for summarization, adds a role identifier column, connects to the local LLM, and filters the dataset to retain only the generated summary of the financial agreement.

Questa parte del workflow prepara il testo estratto per la sintesi, aggiunge una colonna che identifica il ruolo del messaggio, si collega all’LLM locale e filtra il dataset per mantenere soltanto il riepilogo generato dell’accordo finanziario.

Per riassumere l’accordo, dobbiamo innanzitutto estrarre il testo da ciascuna immagine. Un metodo particolarmente pratico consiste nell’utilizzare il componente OCR Text Extractor, disponibile gratuitamente sul KNIME Community Hub.

Questo componente utilizza le API di OCR.Space, un servizio che offre piani gratuiti e a pagamento in base alle esigenze di utilizzo. Per il nostro caso d’uso è sufficiente una chiave API gratuita, facilmente ottenibile registrandosi sul sito di OCR.Space.

Nella configurazione del componente specifichiamo:

  • Il percorso dei file .png archiviati localmente.
  • Il motore OCR e la lingua.
  • La chiave API e l’URL dell’host.

Una volta configurato, il componente elabora ogni immagine ed estrae il testo contenuto al suo interno. I risultati vengono aggiunti a una nuova colonna denominata OCR_output, in cui ogni riga corrisponde a una pagina dell’accordo e contiene il testo estratto sotto forma di stringa, pronto per essere elaborato ulteriormente dall’LLM.

This part of the workflow prepares the extracted text for summarization, adds a role identifier column, connects to the local LLM, and filters the dataset to retain only the generated summary of the financial agreement.

La tabella di output del componente OCR Text Extractor.

Per riassumere il testo dell’accordo, utilizziamo l’estensione AI di KNIME e scegliamo il modello linguistico più adatto all’attività, bilanciando costi, prestazioni e requisiti di riservatezza dei dati, particolarmente importanti quando si elaborano documenti sensibili.

Un esempio è Llama 3 di Meta, disponibile gratuitamente tramite GPT4All ed eseguibile localmente sul nostro computer.

Per stabilire la connessione:

  1. Scarichiamo Llama 3 da GPT4All.
  2. Trasciniamo nel workflow il nodo Local GPT4All Chat Model Connector e specifichiamo la cartella locale in cui è archiviato il modello, rendendolo disponibile per le interrogazioni.

Per interrogare Llama 3 potremmo utilizzare il nodo LLM Prompter. Tuttavia, nel nostro caso d’uso questo nodo presenta una limitazione: invia un prompt all’LLM e riceve la relativa risposta per ogni riga della tabella di input. Ogni riga e il relativo prompt vengono quindi elaborati indipendentemente dagli altri, poiché l’LLM non conserva la memoria del contenuto delle righe precedenti né delle risposte già generate.

Utilizzando questo nodo otterremmo un riepilogo indipendente per ogni pagina, senza continuità contestuale, anziché una sintesi completa dell’intero accordo.

Per questo motivo, adottiamo una strategia diversa, basata sul nodo Chat Model Prompter. Non lo utilizzeremo per intrattenere una vera e propria conversazione con Llama 3, ma sfrutteremo la sua configurazione e le sue funzionalità per fornire al modello tutte le pagine dell’accordo come contesto e ottenere un riepilogo complessivo.

Questo nodo interroga un modello conversazionale utilizzando il messaggio dell’utente fornito e una cronologia della conversazione come contesto. In questo modo, ogni risposta viene generata tenendo conto delle interazioni precedenti tra l’utente e l’AI.

In pratica, è necessario:

  • Nelle Conversation settings, impostare la colonna Messages column su OCR_output. In questo modo, tutte le pagine dell’accordo vengono inserite nella cronologia della conversazione.
  • Nella colonna Message roles column, definire i ruoli dei messaggi nell’interazione, distinguendo tra essere umano e AI. Per farlo, utilizziamo il nodo Constant Value Column per aggiungere una colonna denominata Role con il valore AI, contrassegnando il testo estratto tramite OCR come contenuto generato dal modello.

Nota: perché assegnare il ruolo AI al testo estratto?

In questa configurazione, trattiamo l’output OCR come se facesse già parte della cronologia della conversazione e fosse stato generato dall’AI. Il prompt dell’utente, inserito nel campo New message, viene quindi utilizzato per richiedere una sintesi completa dell’accordo. Questa impostazione permette al modello di tenere conto dell’intero documento durante la generazione della risposta.

The output table of the OCR Text Extractor component.

La finestra di configurazione del nodo Chat Model Prompter, in cui vengono selezionate le colonne contenenti la cronologia della conversazione e i relativi ruoli.

Il nodo Chat Model Prompter viene quindi configurato con i seguenti prompt.

New message: contiene le istruzioni dirette per generare il riepilogo finale.

“Riassumi il contenuto dell’accordo di sostegno finanziario stipulato dalla Texas Human Rights Foundation e dall’avvocato Laurence Tribe a sostegno della causa legale Baker contro Wade. Inoltre, estrai tre informazioni chiave sotto forma di elenco numerato.”

System Message: è simile a un prompt, ma generalmente costituisce il primo messaggio fornito al modello. Descrive come il modello deve comportarsi, ne definisce il ruolo e chiarisce il compito da svolgere, seguendo le buone pratiche di prompt engineering.

“Sei un esperto legale in materia di accordi finanziari. Ricevi come input parti di un accordo di sostegno finanziario stipulato dalla Texas Human Rights Foundation e dall’avvocato Laurence Tribe per continuare a sostenere la causa legale Baker contro Wade. Il tuo compito è riassumere il contenuto dell’accordo.”

The Chat Model Prompter outputs a new row with the summary and “AI” as the source of it.

Il nodo Chat Model Prompter genera una nuova riga contenente il riepilogo e assegna il ruolo AI al messaggio prodotto.

Infine, applichiamo il nodo Row Filter per mantenere esclusivamente il riepilogo del documento finanziario generato dall’AI, ottenendo un risultato pulito e mirato.

Step 3. Distribuire i risultati: creare un report PDF e archiviarlo su Box

This part of the workflow formats the generated summary into a professional PDF report and transfers it back to the Box folder using the Transfer Files node for seamless integration into document management systems.

Questa parte del workflow formatta il riepilogo generato in un report PDF professionale e lo trasferisce nuovamente nella cartella Box utilizzando il nodo Transfer Files, integrandolo così nel sistema di gestione documentale.

Una volta completata la sintesi dell’accordo, l’ultima fase consiste nel raccogliere il riepilogo in un report e archiviarlo nel cloud.

Per creare un report PDF statico e formattato correttamente, utilizziamo la KNIME Reporting Extension.

Il nodo Report Template Creator permette di definire le dimensioni e l’orientamento della pagina del report finale. Nel componente Agreement Summary, elaboriamo ulteriormente le risposte generate dall’LLM e visualizziamo il riepilogo tramite la funzionalità Table View. Progettiamo inoltre l’impaginazione del report includendo un titolo introduttivo, in modo da ottenere un documento chiaro, ben strutturato e professionale.

Una volta completato il report, lo trasferiamo nuovamente nella stessa cartella Box utilizzando il nodo Transfer Files, collegato al file system di Box. In questo modo, il riepilogo viene integrato automaticamente nel sistema di gestione documentale esistente, rendendo il documento facilmente accessibile e condivisibile.

Il risultato: un accordo digitalizzato e riassunto

Il risultato finale è un report PDF ben strutturato che contiene il riepilogo dell’accordo finanziario. Il documento è digitalizzato, sintetizzato e pronto per essere consultato o condiviso, riducendo significativamente il lavoro manuale necessario per elaborare documenti scansionati.

The final PDF report presents the summarized content of the financial agreement in a clean and professional format.

Il report PDF finale presenta il riepilogo dell’accordo finanziario in un formato chiaro e professionale.

La sintesi dei documenti con GenAI in KNIME

In questo articolo della serie Summarize with GenAI, abbiamo visto come KNIME Analytics Platform, combinata con le tecnologie OCR e GenAI, possa semplificare la gestione dei documenti finanziari, in particolare degli accordi scansionati e archiviati nel cloud sotto forma di immagini.

Automatizzando passaggi fondamentali come l’estrazione del testo, la sintesi dei contenuti e la generazione dei report, questa soluzione consente di ridurre significativamente il lavoro manuale e migliorare l’efficienza e la precisione del processo.

In questo tutorial hai imparato a:

  • Accedere alle immagini di un accordo finanziario scansionato collegandoti a Box.
  • Estrarre il testo tramite OCR e utilizzare LLM locali con l’estensione AI di KNIME per riassumere i documenti.
  • Raccogliere i riepiloghi in un report statico e archiviarlo su Box.

Scarica KNIME Analytics Platform e prova il workflow in prima persona!

Leave a Reply