VolleyReport: un foglio, una penna e una foto
VolleyReport: un foglio, una penna e una foto
Carta, penna e una foto per trasformare i segni raccolti a bordo campo in statistiche di gara.
Questa stagione ho due dirigenti molto volenterosi: Robert e Valentina.
Sono presenti, danno una mano, seguono la squadra e, quando serve, raccolgono anche qualche dato.
Poi c’è Cataldo — scoutman professionista — che su queste cose è decisamente più avanti e che negli anni mi ha aiutato parecchio a ragionare su cosa valga davvero la pena raccogliere durante una partita.
Il punto però è un altro.
Io non voglio trasformare Robert e Valentina in scoutman.
Non voglio mettergli davanti un tablet durante la partita, spiegargli venti codici, fargli imparare rotazioni, combinazioni di tasti, schermate e procedure varie.
Perché alla fine la pallavolo ha già una caratteristica curiosa: succedono un sacco di cose tutte insieme.
E se per raccogliere un dato devo smettere di guardare la partita, probabilmente quel dato costa troppo.
Da qui una domanda molto semplice:
si può continuare a usare un foglio di carta e una penna, e lasciare al computer tutto il lavoro noioso dopo?
Da qui sto riprendendo in mano un mio vecchio progetto: VolleyReportXLS.

Il vecchio VolleyReportXLS
VolleyReportXLS nasceva con un’idea abbastanza semplice.
Non volevo fare scouting analitico nel senso classico.
Non mi interessava registrare ogni dettaglio di ogni fondamentale.
Mi interessava avere una lettura della partita utile all’allenatore.
Capire alcuni momenti.
Capire quando la squadra funzionava.
Quando smetteva di funzionare.
Dove si producevano break.
Dove invece si subivano.
Quali rotazioni giravano bene e quali meno.
Il tutto era finito dentro un file Excel.
Anzi, dentro un file Excel abbastanza mostruoso.
Riprendendolo in mano ho scoperto una cosa che avevo probabilmente rimosso per autodifesa: ci sono circa 11.000 formule.
Undicimila!!!!
A questo punto capisci anche perché non ho nessuna intenzione di continuare a usare Excel come motore dell’applicazione.
Però quel file ha ancora un grande valore.
Dentro ci sono anni di ragionamenti.
Ci sono scelte.
Ci sono formule.
Ci sono tentativi.
Ci sono anche sicuramente cose che oggi farei diversamente.
Quindi Excel per me adesso non è più “il programma”.
È diventato quasi una specifica tecnica del comportamento.
La parte interessante è tornare alla carta
Quando si parla di digitalizzazione abbiamo spesso questa strana idea che digitalizzare significhi necessariamente togliere la carta.
In questo caso sto facendo quasi il contrario.
La carta piace perchè da spazio libero e non ti vincola.
E poi: non ha batteria, non va aggiornata, non perde la connessione Wi-Fi, non decide improvvisamente che devi rifare il login.E soprattutto, se sei a bordo campo, fare un pallino con una penna è una delle interfacce più veloci che esistano.
Quindi l’idea è questa:
costruire un foglio cartaceo fatto apposta per essere compilato durante la partita e letto automaticamente dopo.
Durante la partita si fanno semplicemente dei segni.
Alla fine si prende il telefono.
Si fa una foto.
Si carica la foto.
E da lì il software dovrebbe arrangiarsi.
Ovviamente il “dovrebbe arrangiarsi” è la parte dove iniziano i problemi interessanti.

Quanto grande deve essere una casella?
La prima domanda sembra stupida.
Non lo è.
Se devo mettere dei pallini dentro una casella, quanto grande deve essere quella casella?
Quanti pallini ci finiranno dentro? Tre? Cinque? Dodici? Venti?
Se sbaglio questo passaggio il foglio viene male prima ancora di iniziare.
E allora ho fatto una cosa che mi piace molto fare: sono andato a guardare i dati.
Ho analizzato 559 partite, per oltre 2.100 set (grazie Davide!)
Non per fare chissà quale intelligenza artificiale.
Molto più banalmente per capire quanto spazio mi serve davvero.
Perché un conto è progettare una cella pensando “più o meno qui ci staranno dei segni”.
Un conto è guardare centinaia di partite e dire:
“ok, nel 95% dei casi qui non andrò oltre questo numero”.
È una piccola cosa, ma per me è anche uno degli aspetti più belli del progetto. I dati non servono solo per fare il report finale.
Servono anche per progettare meglio il foglio di carta.
Poi c’è la fotografia
A questo punto uno potrebbe pensare:
bene, faccio la foto e faccio OCR.
No.
O meglio: magari.
Ma probabilmente no.
Il problema non è leggere una pagina di testo.
Il problema è capire dove sono i segni dentro una griglia che può essere fotografata storta, piegata, illuminata male e magari appoggiata sul sedile di una macchina cinque minuti dopo la partita.
La buona notizia è che il foglio lo progettiamo noi.
Quindi possiamo aiutarci.
Possiamo inserire dei marker.
Possiamo sapere esattamente dove devono stare le celle.
Possiamo correggere la prospettiva.
Possiamo raddrizzare l’immagine.
Possiamo ritagliare automaticamente le singole aree.
A quel punto la domanda cambia completamente.
Non devo più chiedere:
“cosa c’è dentro questa fotografia?”
Posso chiedere:
“dentro questa piccola area, dove so già cosa mi aspetto di trovare, quanti segni ci sono?”
Ed è un problema molto più semplice.

E qui arriva la parte che mi diverte di più: serve davvero l’AI?
Siamo nel 2026.
Quindi la risposta standard a qualunque problema informatico sembra essere
Mettiamoci un modello”
Possibilmente enorme.
Possibilmente in cloud.
Possibilmente con una GPU che consuma quanto un piccolo quartiere.
Ma se io devo riconoscere dei pallini fatti a penna dentro una cella… forse no.
Forse mi basta un po’ di computer vision fatta bene.
Binarizzazione.
Contrasto.
Riconoscimento delle forme.
Componenti connesse.
Dimensione degli oggetti.
Distanza tra i segni.
Roba molto meno sexy da raccontare.
Ma forse molto più sensata.
Non sto dicendo che l’AI non servirà.
Magari in alcuni casi servirà davvero.
Una penna che lascia poco inchiostro.
Due segni sovrapposti.
Una correzione.
Un pallino fatto male.
Una foto pessima.
Però vorrei arrivarci solo quando serve.
Non voglio usare una rete neurale per risolvere qualcosa che OpenCV risolve in venti righe.
Anche perché, come dico spesso parlando di intelligenza artificiale
il problema non è usare l’AI. Il problema è usarla quando non serve.
E soprattutto: il software deve poter dire “non lo so”
Questa per me è importante.
Non voglio un sistema che decide.
Voglio un sistema che aiuta.
Se vede chiaramente quattro segni, bene.
Se pensa che siano quattro ma potrebbero essere cinque, deve dirlo.
Se non capisce niente, deve dirlo ancora più chiaramente.
A quel punto mostro all’utente la porzione di foglio.
Lui guarda.
Corregge.
Fine.
È molto più utile un software che ogni tanto dica:
qui non sono sicuro
rispetto a uno che sbaglia con convinzione.

E le 11.000 formule?
Qui viene il secondo pezzo grosso.
Una volta estratti i dati dal foglio, devo produrre il report.
Il vecchio VolleyReportXLS fa già tutto questo.
Ma lo fa dentro Excel.
Quindi sto facendo un lavoro quasi archeologico.
Devo capire cosa fanno quelle formule.
Quali valori dipendono da quali.
Quali calcoli sono intermedi.
Quali invece producono davvero le statistiche che mi interessano.
E poi devo riscrivere tutto in JavaScript/TypeScript.
Non voglio portarmi dietro Excel.
Non voglio convertire formule a runtime.
Non voglio dipendere da LibreOffice, Office365 o qualunque altra cosa.Il calcolo deve essere codice: puro, testabile, leggibile, possibilmente anche migliorabile.
Il file Excel rimane però prezioso per una cosa: verificare.
Do gli stessi dati a Excel e alla nuova applicazione.
Se producono gli stessi risultati, bene.
Se non li producono, da qualche parte c’è un errore.
A quel punto faccio test automatici e pian piano il vecchio file smette di essere il motore e diventa il banco di prova.
Mi piace parecchio questa cosa.
Un vecchio foglio di calcolo che diventa il test oracle di una nuova applicazione.

DataVolley rimane lì
Chi fa scouting nella pallavolo sa benissimo cos’è DataVolley.
E non avrebbe senso far finta che non esista.
Non sto costruendo un suo sostituto.
Non è quello il punto.
DataVolley risolve un problema diverso e lo fa a un livello molto più sofisticato.
Qui mi interessa un’altra zona.
Quella dell’allenatore che vuole qualche dato utile per la sua squadra.
Del dirigente che può raccogliere informazioni semplici.
Della squadra che magari non ha uno scoutman.
Della categoria dove non sempre è facile avere una persona a codificare ogni singola azione.
Per questo voglio mantenere una certa compatibilità con quell’ecosistema, dove possibile.
Ma senza perdere il focus.
Il progetto deve rimanere semplice.

E vorrei fare tutto nel browser
Questa è un’altra scelta che mi piace.
La foto non deve andare su un server.
I dati non devono finire da qualche parte.
Il riconoscimento dovrebbe avvenire sul dispositivo.
I calcoli anche.
Il report pure.
Tutto lato browser.
Quindi:
- carico la foto
- correggo la prospettiva
- riconosco i segni
- verifico eventuali dubbi
- genero le statistiche
- produco il report
E possibilmente il server non sa nemmeno che partita ho giocato.
Tecnologicamente sto lavorando con React e TypeScript, anche perché così posso poi valutare build per più piattaforme senza riscrivere tutto da capo.

Alla fine il flusso deve essere banale
Quello che vorrei ottenere è questo.
Durante la partita: foglio + penna
A fine partita: una foto per set
Poi il software fa:
raddrizzamento → riconoscimento → controllo → calcolo → report.
Tutto qui.
Sembra semplice.
Ovviamente non lo è.
Ma la semplicità non deve essere nel codice.
Deve essere nell’esperienza di chi lo usa.
Perché alla fine torno sempre a Robert e Valentina
Posso parlare di OpenCV.
Posso parlare di React.
Posso parlare di riconoscimento ottico.
Posso parlare di marker, soglie, componenti connesse e 11.000 formule Excel.
Ma alla fine il test vero è molto più semplice.
Robert e Valentina devono poter stare a bordo campo.
Guardare la partita.
Seguire la squadra.
E ogni tanto fare un segno su un foglio.
Se per ottenere dei dati migliori devo chiedere loro di fare molto più di questo, probabilmente sto progettando male io.
Se invece riesco a prendere quei segni, trasformarli in dati e restituire un report utile all’allenatore, allora forse la tecnologia sta davvero facendo il suo mestiere.
Spostare la complessità dalle persone al software.
Che poi, a pensarci bene, dovrebbe essere questo il punto quasi sempre.
Provate quindi https://report.volleyserve.it
Avete anche la possibilità di scaricare la versione per Windows, Apple, Linux, Android
Sostenete il progetto e … inviatemi cartacei fotografati così posso migliorare l’applicazione.