grapholab / docs /DEMO_CHECKLIST_IT.md
Fabio Antonini
docs: update all YOLOv8 references to Conditional DETR
e3ef569
# GraphoLab — Lista della Spesa per la Demo
Tutto ciò che serve per eseguire tutti e otto i notebook GraphoLab dall'inizio alla fine: quali modelli AI vengono scaricati automaticamente e quali immagini campione devi fornire tu.
---
## Riepilogo Rapido
| Cosa | Dove | Note |
|------|------|------|
| Ambiente Python | locale o Docker | vedi [NOTEBOOKS_GUIDE_IT.md](NOTEBOOKS_GUIDE_IT.md) |
| `requirements.txt` installato | — | `pip install -r requirements.txt` |
| Pesi SigNet | `models/signet.pth` | download manuale — vedi sezione Lab 03 |
| Immagini campione | `data/samples/` | vedi le sezioni per lab qui sotto |
| Modelli AI | scaricati automaticamente | connessione internet necessaria al primo avvio |
---
## Modelli AI — Scaricati Automaticamente
Tutti i modelli Hugging Face vengono recuperati al primo avvio e memorizzati nella cache locale (o nel volume Docker `grapholab-hf-cache`).
| Modello | Scaricato da | Dimensione | Cache |
|---------|-------------|-----------|-------|
| **TrOCR** (`microsoft/trocr-base-handwritten`) | `transformers` | ~400 MB | `~/.cache/huggingface/` |
| **EasyOCR** (modelli italiano + inglese) | `easyocr` | ~100 MB | `~/.EasyOCR/` |
| **Rilevatore firme Conditional DETR** (`tech4humans/conditional-detr-50-signature-detector`) | `transformers` | ~170 MB | `~/.cache/huggingface/` |
| **WikiNEural NER** (`Babelscape/wikineural-multilingual-ner`) | `transformers` | ~700 MB | `~/.cache/huggingface/` |
| **dots.ocr** (`rednote-hilab/dots.ocr`) | `transformers` | ~3,5 GB (bf16) / ~7 GB (fp32 CPU) | `~/.cache/huggingface/` |
> **È necessaria una connessione internet al primo avvio dei Lab 02, 04, 07 e 08.** Le esecuzioni successive utilizzano i modelli in cache.
>
> **dots.ocr (Lab 08) richiede anche un `git clone` una tantum** — vedi la cella di installazione nel notebook.
## Modelli AI — Download Manuale Richiesto
| Modello | File | Dimensione | Fonte |
|---------|------|-----------|-------|
| **SigNet** (pre-addestrato su GPDS) | `models/signet.pth` | ~63 MB | [luizgh/sigver](https://github.com/luizgh/sigver) |
Scarica `signet.pth` dal repository sigver e inseriscilo nella directory `models/` prima di eseguire il Lab 03.
---
## Immagini Campione — Cosa Devi Fornire
Inserisci tutte le immagini in `data/samples/`. Quando le immagini reali mancano, vengono generate automaticamente immagini sintetiche di fallback, quindi i notebook vengono sempre eseguiti — ma i risultati su dati sintetici non hanno valore forense reale.
### Lab 01 — Introduzione
**Nessuna immagine richiesta.** Notebook solo testuale.
---
### Lab 02 — Riconoscimento Testo Manoscritto (TrOCR)
| File | Descrizione |
|------|-------------|
| `handwritten_text_01.png` | Una riga di testo manoscritto |
| `handwritten_text_02.png` | (opzionale) Secondo campione su riga singola |
| `handwritten_multiline_01.png` | Un documento manoscritto multiriga (per la pipeline HTR→NER) |
**Requisiti:**
- Scansione o foto nitida di testo manoscritto
- Risoluzione consigliata: 300 DPI o superiore
- Sfondo bianco o chiaro, inchiostro scuro
- TrOCR è un modello a livello di riga; le immagini multiriga vengono suddivise automaticamente per proiezione orizzontale prima dell'inferenza
**Confronto con trascrizione nota (opzionale):** se disponi della trascrizione esatta del testo manoscritto, puoi calcolare il Character Error Rate (CER) nella sezione opzionale del Lab 02.
---
### Lab 03 — Verifica della Firma (SigNet)
| File | Descrizione |
|------|-------------|
| `genuine_N_1.png` | **Firma di riferimento** — autentica nota (scrittore N, campione 1) |
| `genuine_N_2.png` | Seconda firma autentica dello stesso scrittore |
| `forged_N_M.png` | Firma contraffatta (scrittore N, falsificazione M) |
Ripeti per ogni scrittore che vuoi dimostrare (es. N = 1, 2, 3, …).
**Requisiti:**
- Firme isolate (nessun testo del documento circostante)
- Sfondo bianco o chiaro, inchiostro scuro
- Qualità di scansione uniforme tra i campioni della stessa persona
- Risoluzione consigliata: 300 DPI o superiore
> **Campioni demo pre-selezionati:** il repository include coppie curate dal database di firme **CEDAR**. Queste coppie sono state pre-scansionate con SigNet per verificare che il modello classifichi correttamente la contraffazione (distanza coseno > 0.35). Gli scrittori 1–5 corrispondono agli scrittori CEDAR 51, 26, 34, 32 e 21.
> **Pesi SigNet richiesti:** scarica `models/signet.pth` da [luizgh/sigver](https://github.com/luizgh/sigver) prima di eseguire questo lab.
---
### Lab 04 — Rilevamento Firma nei Documenti (Conditional DETR)
| File | Descrizione |
|------|-------------|
| `document_with_signature_01.png` | Una pagina di documento scansionata con almeno una firma |
**File aggiuntivi opzionali:** `document_with_signature_02.png`, `document_with_signature_03.png`, …
**Requisiti:**
- Immagine dell'intera pagina del documento (non una firma già ritagliata)
- Il modello gestisce pagine con più firme
- Risoluzione consigliata: 200–300 DPI
- Funziona su contratti, lettere, moduli, assegni bancari
> **Output:** le firme rilevate vengono ritagliate e salvate come `detected_signature_N.png` in `data/samples/`. Questi ritagli possono essere usati direttamente come input per il Lab 03.
---
### Lab 05 — Identificazione dello Scrittore
Organizzato in sottodirectory per scrittore all'interno di `data/samples/`:
```
data/samples/
writer_01/
sample_01.png
sample_02.png
sample_03.png
sample_04.png
sample_05.png
writer_02/
sample_01.png
...
writer_03/
sample_01.png
...
```
**Requisiti:**
- Minimo **3 scrittori** (di più = maggiore accuratezza)
- Minimo **5 campioni per scrittore** (il notebook usa la cross-validation leave-one-out)
- Ogni campione: alcune righe di testo manoscritto continuo
- Condizioni di scansione uniformi per tutti i campioni
- Risoluzione consigliata: 300 DPI
> **Nota sull'addestramento:** il Lab 05 addestra un classificatore SVM leggero sui campioni forniti ad ogni esecuzione del notebook. Non viene utilizzato nessun modello pre-addestrato per l'identificazione dello scrittore — i tuoi campioni sono i dati di addestramento.
---
### Lab 06 — Analisi delle Caratteristiche Grafologiche
Riutilizza le immagini di testo manoscritto del Lab 02:
| File | Descrizione |
|------|-------------|
| `handwritten_text_01.png` | Campione principale per l'estrazione delle caratteristiche |
| `handwritten_text_02.png` | (opzionale) Secondo campione per il confronto affiancato |
Non sono necessari file aggiuntivi se i campioni del Lab 02 sono già presenti.
---
### Lab 07 — Riconoscimento Entità Nominate (NER)
**Nessun file immagine richiesto.** Il modello NER opera direttamente su stringhe di testo.
- **Demo 1 & 2:** testi di esempio italiani e inglesi inclusi nel notebook — nessun file necessario.
- **Demo 3 (pipeline HTR→NER):** carica `handwritten_multiline_01.png` (condiviso con il Lab 02).
Il modello `Babelscape/wikineural-multilingual-ner` (~700 MB) viene scaricato automaticamente al primo avvio. Supporta 9 lingue tra cui italiano e inglese.
---
### Lab 08 — dots.ocr (OCR con Vision-Language Model)
| File | Descrizione |
| ---- | ----------- |
| `writer_00/sample_000.png` | Campione singolo writer_00 (condiviso con Lab 05) |
| `testamento_writer00.png` | Documento testamento completo — generare con `scripts/create_testamento_writer00.py` |
| `lorella/*.png` | (opzionale) Campioni di scrittura reale |
**Requisiti:**
- Primo avvio: connessione internet per il download del modello (~3,5 GB bf16 o ~7 GB fp32 su CPU)
- Su CPU: ~7 GB di RAM libera; 2–5 min per immagine
- Su GPU: ≥4 GB VRAM raccomandati
**Installazione una tantum (prima del primo avvio):**
```bash
git clone https://github.com/rednote-hilab/dots.ocr.git DotsOCR
pip install -e DotsOCR
pip install qwen_vl_utils accelerate
```
---
## Riepilogo delle Convenzioni di Denominazione
```
data/samples/
handwritten_text_01.png # Lab 02, 06
handwritten_text_02.png # Lab 02, 06 (opzionale)
handwritten_multiline_01.png # Lab 02, 07 (HTR multiriga + pipeline NER)
genuine_1_1.png # Lab 03 — scrittore 1, riferimento
genuine_1_2.png # Lab 03 — scrittore 1, secondo campione autentico
forged_1_1.png # Lab 03 — scrittore 1, contraffatta
genuine_2_1.png # Lab 03 — scrittore 2, riferimento
...
document_with_signature_01.png # Lab 04
writer_01/sample_01.png # Lab 05
writer_01/sample_02.png # Lab 05
...
```
---
## Demo Minima Funzionante (5 immagini)
Per una demo rapida che copra i Lab 02, 03, 04, 06 e 07 con un insieme minimo di immagini:
1. `handwritten_text_01.png` — per i Lab 02 e 06
2. `handwritten_multiline_01.png` — per la pipeline HTR→NER del Lab 07
3. `genuine_1_1.png` — firma di riferimento
4. `forged_1_1.png` — firma contraffatta
5. `document_with_signature_01.png` — pagina documento per il Lab 04
Il Lab 01 non richiede nulla. Il Lab 05 richiede le sottodirectory per scrittore (non coperte da questo set minimo). Le Demo 1 & 2 del Lab 07 non richiedono alcun file.
---
## Checklist Prima di Avviare i Laboratori
- [ ] Ambiente Python creato e `requirements.txt` installato
- [ ] Connessione internet disponibile (download modelli al primo avvio: TrOCR ~400 MB, EasyOCR ~100 MB, WikiNEural NER ~700 MB, Conditional DETR ~170 MB, dots.ocr ~3,5 GB)
- [ ] `models/signet.pth` scaricato da [luizgh/sigver](https://github.com/luizgh/sigver)
- [ ] Directory `data/samples/` presente
- [ ] Immagini di testo manoscritto inserite (`handwritten_text_*.png`, `handwritten_multiline_01.png`)
- [ ] Immagini delle firme inserite (`genuine_N_M.png`, `forged_N_M.png`)
- [ ] Scansione del documento inserita (`document_with_signature_*.png`)
- [ ] Sottodirectory degli scrittori popolate (`writer_XX/sample_YY.png`) — per il Lab 05
- [ ] JupyterLab avviato (`jupyter lab` oppure `docker compose up jupyter`)