Introduzione al problema e alla soluzione

Le biblioteche culturali spesso custodiscono collezioni di materiale stampato, tra cui più di 25.000 etichette di vino della collezione Francisco Odero Álvarez. Catalogare queste opere è complesso: le banche dati relazionali funzionano bene per campi predefiniti come produttore, regione o annata, ma falliscono quando si richiedono richieste iconografiche espressive, ad esempio “una donna con fiori in stile Art Nouveau”.

Il nuovo software WineEyes risolve questa sfida convertendo le composizioni visive in descrizioni testuali verificabili, che possono essere ricercate tramite indicizzazione densa e sparsa localmente, senza ricorrere a grandi set di training specifici o servizi cloud.

Pipeline di ingestione: 5 fasi per trasformare l'immagine in metadata

1. Trascrizione OCR: il modello glm‑ocr:latest processa la foto non ritagliata in una istanza locale Ollama per estrarre il testo visibile prima della trasformazione geometrica.

2. Estrazione del background e rettifica prospettica: rembg con U2‑Net crea un confine rettangolare standardizzato, mantenendo l’originale. Un router sensibile allo sfondo sceglie tra rembg, Otsu thresholding e GrabCut in base alla luminanza e alle proprietà di contorno.

3. Controllo qualità e rilevamento duplicati: confronta la scansione rettificata con l’archivio usando CLIP e SSIM; se la similarità supera 0.95 e 0.9, la scansione è marcata come duplicato potenziale per revisione curatoriale.

4. Generazione descrittiva: il modello gemma4:26b, eseguito localmente in Q4KM quantization, riceve l’immagine ritagliata e la trascrizione OCR. Produce una descrizione catalogare che include motivi visivi, scudi ereditari, caratteristiche stilistiche, tipografia e gerarchie compositive.

5. Indicizzazione ibrida: la descrizione viene segmentata in unità di riga non vuota e testuale completa. Ogni segmento è codificato dal modello multilingue BGE‑M3 in vettori densi 1024‑dimensionali e vettori sparsi token‑level, entrambi inseriti nel motore Qdrant. Le ricerche live combinano risultati densi e sparsi tramite Reciprocal Rank Fusion (k = 60).

Architettura multi‑container e indipendenza locale

WineEyes è distribuito tramite Docker Compose, garantendo l’esecuzione locale su qualsiasi piattaforma. FastAPI coordina le comunicazioni tra i componenti: Ollama per OCR e generazione, Qdrant per l’indicizzazione, MariaDB per dati relazionali (utenti, ruoli, collezioni). Il file WineEyes.sql fornisce lo schema senza credenziali prepopolate.

Valutazione sperimentale

Un benchmark pilot esclusivo è stato creato con 50 etichette curatissime e 15 query testuali, iconografiche semplici e iconografiche relazionate. Le query sono state scritte da sviluppatori senza accedere a campioni o trascrizioni per evitare contaminazioni.

Per verificare la qualità, un esperto di dominio ha valutato la rilevanza binaria delle risposte generate, mentre un harness di valutazione ha eseguito 355 controlli di verifica con zero errori critici.

Risultati chiave

    • nDCG@10 = 0.727
    • MAP@10 = 0.603
    • P@5 = 0.547
    • P@10 = 0.380
    • MRR@10 = 0.833

La pipeline ibrida ha superato la full‑description (nDCG@10 = 0.676, MAP@10 = 0.513) e il baseline BM25 fusion (nDCG@10 = 0.708). Questi risultati dimostrano l’efficacia di una segmentazione fine combinata a un’indicizzazione densa e sparsa.

Conclusioni

WineEyes offre una soluzione completa e locale per il recupero di etichette di vino storico, combinando OCR, segmentazione, modelli di linguaggio e ricerca ibrida. L’implementazione multi‑container garantisce la sicurezza e il controllo totale sui dati culturali sensibili, aprendo nuove possibilità per la digitalizzazione e la ricerca nei patrimoni culturali.