Strumenti per la digitalizzazione di archivi
Un'applicazione desktop per creare, correggere e validare i metadati XML dei documenti digitalizzati, con moduli installabili per lavorare sulle immagini.
A cosa serve / Cosa può fare
Per chi digitalizza archivi e libri e deve descrivere ogni documento con metadati MAG. È parte del lavoro di catalogazione e indicizzazione che ETT propone con la linea Scripta.
- Crea, corregge e valida i file MAG, lo standard XML italiano per i documenti digitalizzati.
- Controlla i file con lo schema XSD e regole aggiuntive.
- Ritaglia e raddrizza le scansioni in automatico.
- Rinomina i file e riconosce il tipo di pagina.
- Si estende con moduli installabili, con licenza e aggiornamenti.
Il contesto
Chi digitalizza archivi e libri produce migliaia di immagini per documento. Ognuna va descritta in XML (tipo di pagina, sequenza, checksum, dati tecnici), ritagliata e rinominata, quasi sempre a mano. Il formato è il MAG, lo standard italiano per i metadati di documenti digitalizzati.
Lo sto sviluppando nell'azienda di software in cui lavoro come sviluppatore. Il progetto è una riscrittura che unisce due vecchi programmi (uno in Python 2.4, uno in Python 3.8 compilato) in un unico programma che si possa mantenere.
L'editor e il validatore
L'editor mostra il progetto ad albero e le schede dei metadati (generali, bibliografia con campi Dublin Core ripetibili, nomenclatura). Il validatore integrato controlla il file con lo schema XSD e con regole aggiuntive, e segnala i problemi in un pannello: nell'immagine sotto, un campo obbligatorio vuoto. Il documento è di esempio.

I moduli
Attorno all'editor ci sono moduli che si installano da un catalogo interno, ciascuno con una licenza verificata anche senza rete e un aggiornamento firmato:
- Ritaglio e raddrizzamento: il rettangolo si sposta, si ridimensiona dagli angoli e si ruota con una rotella. Ogni immagine viene prima portata a una versione da 1024 pixel su cui lavorano il rilevatore e l'operatore; con questa scelta il tempo per immagine è sceso da 111 a 0,37 secondi.
- Rinomina dei file secondo convenzioni configurabili.
- Tipo di pagina: un modello di apprendimento automatico propone se la pagina è copertina, testo, tavola e così via. Usa un classificatore su 147 caratteristiche calcolate a mano e una ricerca della sequenza di etichette più probabile; impara dalle correzioni dell'operatore.
- Controllo del colore.
Il pannello di gestione
Per chi amministra c'è un pannello web separato: utenti, licenze per modulo con scadenza e revoca, rilascio delle versioni. Le schermate qui sotto vengono da un'istanza di prova con dati inventati, non da quella in uso.
Alcune scelte tecniche
- L'interfaccia sta passando da Qt a Tauri con Vue; ogni modulo ha un suo piccolo servizio Python locale.
- Moduli distribuiti con controllo del checksum SHA-256 e aggiornamenti firmati, prima su un canale di prova e poi per tutti.
- La suite di test della parte Qt va in errore se lanciata tutta insieme, per lo stato condiviso della libreria: ho scritto un lanciatore che esegue un file alla volta.
Cosa ho fatto io
Ho scritto da solo quasi tutto il codice, in circa sette mesi e mezzo: più di 2.800 commit, circa 200.000 righe di Python e 46.000 di Vue e TypeScript, che copre modello dei dati, validazione, interfaccia, moduli, licenze e pannello. Per programmare ho usato anche agenti AI; non ho una misura di quanta parte del codice sia nata così.
Stato
È in uso, con utenti e licenze reali, e si sviluppa ancora. Il programma è aziendale: non è pubblico e non c'è una demo. L'interfaccia Qt è ancora in dismissione e alcune parti sono a metà.
Stack
Python · lxml · Pillow · OpenCV · FastAPI · Tauri · Vue · TypeScript · gradient boosting · U²-Net · YOLO · Docker · pytest




