---
title: "Lettura automatica di registri d'archivio"
url: "https://edoardo.anteprime.edoardogabrielli.com/it/progetti/registri-archivio"
lang: "it"
updated: "2026-11-01"
---

# Lettura automatica di registri d'archivio

> Uno strumento per indicizzare decine di migliaia di pratiche scritte a mano e a macchina, con un modello di lettura allenato sulle singole righe e la revisione dell'archivista.

Uno strumento per indicizzare decine di migliaia di pratiche scritte a mano e a macchina, lasciando l'ultima parola all'archivista.

### A cosa serve / Cosa può fare

Pensato per archivi e uffici tecnici pubblici con registri di pratiche scansionati da indicizzare. ETT, azienda di digitalizzazione, lo propone con la linea Scripta nei progetti di digitalizzazione dei fondi. Evita di trascrivere a mano migliaia di righe: all'archivista resta la verifica.

- Legge pagine di registri a tabella, dattiloscritti e manoscritti, e propone ogni riga già divisa nei campi richiesti.
- Evidenzia i valori incerti, da controllare accanto all'immagine della pagina.
- Tiene lo storico delle correzioni e permette di tornare indietro.
- Esporta il risultato in un foglio di calcolo.
- Gira su un server interno: le scansioni non escono dall'ente.

[Scopri la soluzione su ETT](https://ettsolutions.com/scripta/)

### Il contesto

Un archivio pubblico conserva registri di pratiche edilizie a partire dagli anni '60: tabelle compilate a mano o a macchina, ognuna con una riga per pratica e una ventina di colonne. Per renderli consultabili bisogna trascrivere ogni riga in un database. Fatto a mano, è un lavoro di anni.

Ho sviluppato questo progetto nell'azienda di software in cui lavoro come sviluppatore. Tutto gira su un server interno, quindi le scansioni non escono mai dall'ente.

### Come funziona

L'applicazione legge ogni pagina scansionata e propone le righe già divise nei campi richiesti. L'archivista vede la pagina accanto al modulo, controlla i valori (quelli incerti sono evidenziati) e conferma o corregge. Alla fine esporta un foglio di calcolo.

![Revisione riga per riga dei campi estratti accanto alla pagina scansionata, dati di esempio](https://edoardo.anteprime.edoardogabrielli.com/media/originals/2026/11/7828f5e0519e4995830a50cbf947fae1/registri-revisione.webp)

Revisione riga per riga: il campo incerto è in giallo, la riga corrispondente è evidenziata sulla pagina. Dati e pagina sono di esempio.

### Il modello che ho allenato

All'inizio la lettura la faceva un grande modello visivo generico (Qwen, 35 miliardi di parametri), che riceveva la pagina intera. Sui manoscritti sbagliava spesso.

Ho allora allenato un modello molto più piccolo, da circa un miliardo di parametri, che legge una riga alla volta. Il problema era trovare dati di allenamento: gli archivisti avevano già confermato migliaia di valori, ma nessuno sapeva in quale punto della pagina si trovasse ciascuno. La soluzione è stata invertire la domanda: invece di chiedere al modello grande *cosa c'è scritto*, gli ho chiesto *dove si trova* un valore che già conoscevamo. Da lì si ritaglia il pezzo di pagina, lo si rilegge e lo si tiene solo se la lettura coincide con il valore confermato.

Il modello piccolo è allenato sulle righe validate con LoRA, un metodo che aggiorna solo una piccola parte dei parametri. Ogni notte un ciclo automatico lo aggiorna con le pagine confermate nel corso della giornata, lo valuta su pagine che non ha mai visto e lo mette in produzione solo se nessun registro peggiora.

### I risultati

Su un test di 115 pagine di 23 registri (9.169 campi, mai usati per l'allenamento) il modello piccolo legge correttamente l'84,7% dei campi; il modello grande, sulle stesse pagine, il 39%. I campi brevi e regolari, come il numero di protocollo, sono quasi sempre giusti. Indirizzi e note restano difficili.

Da un controllo a mano è emerso che una parte degli «errori» erano differenze di forma o valori di riferimento sbagliati: il numero reale è un po' più alto. In ogni caso il modello non sostituisce l'archivista: gli fa risparmiare tempo.

## Altre schermate (dati di esempio)

![Elenco dei registri con avanzamento della validazione, dati di esempio](https://edoardo.anteprime.edoardogabrielli.com/media/originals/2026/11/61f0c4b71cdf42a9a51a1c85e35c82d5/registri-elenco.webp)

![Statistiche di avanzamento del lavoro e previsione di fine, dati di esempio](https://edoardo.anteprime.edoardogabrielli.com/media/originals/2026/11/5d0be0c5065747db9bc4e3503de20dc8/registri-avanzamento.webp)

### Un secondo progetto: riassumere i fascicoli

Come prototipo ho adattato lo stesso lavoro a un altro problema: sapere cosa contiene un fascicolo di scansioni eterogenee (relazioni, tavole, foto) senza leggerlo tutto. Per ogni pagina il modello visivo scrive una nota (tipo di documento, date, persone, luoghi, trascrizione); poi un modello di testo scrive un riassunto in cui ogni affermazione rimanda con un link alla pagina di origine, così chi legge può controllare. Date e rimandi tra le carte sono ricavati dal codice, non inventati dal modello. È stato consegnato su un fascicolo di prova di 9 documenti e 63 carte e resta un prototipo.

### Cosa ho fatto io

L'applicazione web (backend, interfaccia di revisione, tutorial guidato), la pipeline di lettura, l'allenamento e la valutazione del modello, la messa in esercizio sul server GPU. Del prototipo sui fascicoli ho fatto l'adattamento.

### Limiti

Il progetto non è pubblico e non c'è una demo, per via del committente. Il modello non regge una mano o un modulo mai visti, e ogni registro ha convenzioni sue (i «come sopra» sono la parte più difficile).

### Stack

Python · FastAPI · PostgreSQL · Redis · React/Next.js · OpenCV · vLLM · LoRA (PEFT) · llama.cpp · Docker · NVIDIA DGX Spark

[← Tutti i progetti](https://edoardo.anteprime.edoardogabrielli.com/it/progetti)