Sudoku Flow

Cosa abbiamo imparato misurando il nostro lettore di foto di Sudoku

Aggiornato il 5 novembre 2026

Cosa significa letto correttamente

Uno schema è letto correttamente solo se tutte le 81 caselle sono giuste: una sola cifra sbagliata dà uno schema diverso. Per questo contiamo schemi interi, non caselle. Le due misure possono raccontare storie molto diverse, come mostra questa pagina: sulle foto di schemi stampati il lettore ora legge correttamente il 98,9% delle caselle, eppure la quota di schemi interi è cambiata appena, perché la maggior parte delle caselle sbagliate si concentra in poche immagini difficili.

Contiamo anche l'errore più pericoloso: uno schema letto male che ha comunque una sola soluzione. Un vero Sudoku ha una sola soluzione, quindi una lettura che non ne ha nessuna o ne ha molte viene scoperta subito. Uno schema sbagliato con una sola soluzione sembra a posto, ed è per questo che il risolutore segna ogni casella su cui aveva dubbi e ti chiede di confrontarle con il tuo schema prima di risolvere.

Con 200 immagini, un risultato è preciso solo fino a un certo punto. Per i risultati principali diamo un intervallo al 95% (un intervallo di Wilson): l'89,5% di 200 immagini significa che il tasso reale è molto probabilmente tra l'84,5% e il 93,0%.

Le immagini su cui abbiamo fatto i test

Siamo partiti da due dataset aperti. Il dataset Sudoku Image Recognition di Lexski (CC0) contiene 1.400 immagini, per lo più screenshot e foto condivise online: app di ogni stile, temi scuri, note a matita, schemi risolti a metà su carta. Il dataset di Baptiste Wicht e Jean Hennebert (CC BY 4.0) contiene Sudoku di giornale fotografati con il telefono, alcuni dei quali completati a mano a penna.

Prima di cambiare qualsiasi cosa abbiamo messo da parte tre set di test: 200 immagini di Lexski, 40 foto di giornale e 40 schemi di giornale completati a mano. Non li abbiamo usati per l'addestramento né li abbiamo guardati mentre lavoravamo. Ogni decisione è stata presa su altre 200 immagini di Lexski, il set di taratura, e i set di test sono stati letti una sola volta, alla fine.

Il punto di partenza

La prima versione, del 31 ottobre, leggeva esattamente 101 delle 200 immagini di Lexski, 34 delle 40 foto di giornale e nessuno dei 40 schemi completati. La maggior parte dei suoi problemi nasceva prima ancora delle cifre. Prendeva come griglia la più grande forma d'inchiostro più o meno quadrata, e in uno screenshot quella forma spesso include un'intestazione o il tastierino numerico, mentre le sottili linee grigie di un tema scuro sfuggono del tutto. Sul set di taratura collocava la griglia nel posto giusto solo 118 volte su 200.

Cosa abbiamo cambiato, passo dopo passo

Ogni riga è una modifica, e il numero indica quante delle 200 immagini di taratura venivano poi lette esattamente. Le ultime tre righe sono la seconda fase.

ModificaImmagini di taratura lette esattamente (su 200)
Prima versione, 31 ottobre99
Griglia trovata dalle sue linee: dieci linee equidistanti per direzione129
Griglie valutate fianco a fianco; provato uno spostamento di una casella136
Linee sottili e tenui usate per trovare la griglia138
Caselle ritagliate per intero; cifre apprese da caselle reali161
Una piccola rete individua dove si trova la griglia162
Linee seguite dove la pagina si piega163
Rete per le cifre migliorata, note a matita come classe a sé173
Media di tre reti per le cifre177
Regola della soluzione unica prudente; griglie completate lette per intero177
Seconda fase: foto a piena dimensione dimezzate prima del rimpicciolimento178
Seconda fase: inchiostro basso e tenue trattato come nota a matita179
Seconda fase: foto di lato valutate da tutte e tre le reti179

La maggior parte del guadagno è venuta da tre modifiche. Ora la griglia viene trovata dalle sue linee: ogni ipotesi sulla griglia viene adattata a dieci linee equidistanti in ciascuna direzione e le ipotesi vengono valutate una accanto all'altra, e anche una piccola rete che individua dove si trova una griglia esprime un voto. Ogni casella viene ritagliata per intero, così una nota a matita resta piccola nel suo angolo e una cifra chiara su una tessera scura appare come inchiostro su carta. Inoltre le reti per le cifre hanno imparato da caselle reali ritagliate dalle immagini di addestramento di Lexski, con le note a matita come classe a sé. Ora tre piccole reti, addestrate separatamente, leggono ogni casella e le loro risposte vengono mediate, perché commettono i loro errori su caselle diverse.

Uno schema completato riceve un aiuto in più. Quando una griglia contiene 79 cifre o più, il lettore cerca la griglia completa più probabile in cui ogni riga, colonna e riquadro contiene le cifre da 1 a 9. Letti casella per casella, solo 7 dei 40 schemi di test scritti a mano risultavano esatti; letti come Sudoku completati, lo erano tutti e 40.

La seconda fase ha aggiunto tre modifiche più piccole. Una foto del telefono a piena dimensione viene dimezzata passo dopo passo prima di essere rimpicciolita, così le linee sottili e i tratti a matita vengono mediati invece di essere saltati. Una casella la cui traccia d'inchiostro è sia molto più bassa sia molto più tenue delle cifre sicure della griglia viene trattata come una probabile nota a matita. E la rotazione di una foto girata di lato viene valutata da tutte e tre le reti invece che da una sola.

Uno screenshot di Sudoku con tema scuro, note a matita e cifre colorate, la griglia raddrizzata con gli incroci delle linee segnati in verde, le 81 caselle come piccole immagini e i numeri letti in blu senza le note a matita
Uno screenshot con tema scuro che abbiamo generato: la griglia raddrizzata, con gli incroci delle linee che ha trovato; le 81 caselle come le vedono le reti; e ciò che è stato letto. Le note a matita sono escluse.

Cosa non ha aiutato

Abbiamo misurato anche queste modifiche sul set di taratura, e le abbiamo lasciate fuori:

  • Una rete per le cifre più grande: con 59.000 pesi invece di 42.000 ha letto un'immagine di taratura in più ed era 3,8 volte più lenta nel browser.
  • 3.000 screenshot di app generati con note a matita e temi scuri: stesso punteggio con o senza.
  • Leggere a colori invece che in scala di grigi, così che una penna rossa risulti scura quanto l'inchiostro nero: due immagini di taratura in più, ma la scrittura a mano veniva letta peggio.
  • Deformare le cifre di addestramento per farle somigliare di più alla scrittura a mano: la scrittura a mano veniva letta peggio.
  • Lasciare che la regola della soluzione unica cambiasse più caselle: più schemi letti correttamente, ma anche più dei pericolosi schemi sbagliati con una sola soluzione.
  • Riaddestrare le tre reti su dati nuovi, o usarne quattro o sei: differenze entro il rumore statistico, quindi sono rimaste le prime.
  • Trattare il bordo dell'immagine come bordo della griglia, per le griglie tagliate dall'inquadratura: tante immagini perse quante guadagnate.

Risultati sui primi set di test

Schemi letti esattamente in ciascun set di test, dalla prima versione e dal lettore nella forma attuale:

Set di test31 ottobreOra
Screenshot e foto condivise online (Lexski)Immagini: 20010150,5%17989,5%
Foto di giornale (Wicht e Hennebert)Immagini: 403485,0%40100,0%
Schemi di giornale completati a mano (Wicht e Hennebert)Immagini: 4000,0%40100,0%

Sulle immagini di Lexski il lettore è passato dal 50,5% all'89,5% (dall'84,5% al 93,0%), e gli schemi letti male ma con una sola soluzione sono scesi da 7 a 4. In tre di questi quattro, l'unica cifra in più è proprio la cifra che va in quella casella, quindi lo schema porta comunque alla soluzione giusta; il quarto è un 1 stampato chiaramente che il dataset lascia vuoto. Dei 179, 177 sono arrivati alla fine della prima fase. Gli ultimi due sono arrivati nella seconda fase, dopo che avevamo studiato gli errori, quindi questo set non è più intatto.

Quaranta su quaranta sembra perfetto, ma 40 immagini possono solo mostrare che il tasso reale è superiore al 91% circa. E un controllo che avremmo dovuto fare per primo: quattro delle 40 foto di giornale del set di test si trovano anche nel set di addestramento di quel dataset, due delle quali identiche pixel per pixel. Senza di esse, 36 su 36.

Un nuovo test: 200 foto che nessuna versione aveva visto

A quel punto i primi set di test erano stati letti e i loro errori studiati, quindi non potevano più dirci come se la cava il lettore con immagini che non ha mai incontrato. Abbiamo cercato altre foto di Sudoku etichettate su Hugging Face, Kaggle, GitHub, Zenodo, Figshare e AIcrowd. La maggior parte dei set conteneva griglie generate, cifre singole o copie delle foto di Wicht. Tre raccolte su GitHub avevano foto reali etichettate, tutte di schemi stampati: 100 foto di un libro di Sudoku aperto (NatalijaPetric/SudokuDataset), 80 foto per lo più di giornali (mineshpatel1/sudoku-solver, dopo aver scartato 49 foto che sono proprio quelle di Wicht e una copia) e 20 fogli stampati dal progetto di un corso di visione artificiale dell'Università di Bucarest (danielsociu/SudokuRecognition).

Nessuna delle tre indica una licenza, quindi le abbiamo usate solo per misurare: mai per l'addestramento, e non vengono mostrate qui. L'elenco delle immagini è stato fissato e salvato prima di qualsiasi modifica, scelto secondo una regola a partire dagli hash dei file e dalle etichette, e le immagini non sono state aperte fino all'ultima modifica della seconda fase. Poi ogni versione del lettore le ha lette una volta. La tabella conta gli schemi letti esattamente.

Fonte31 ottobrePrima faseOra
Un libro di Sudoku aperto (NatalijaPetric)Foto: 1007979,0%7676,0%7878,0%
Per lo più giornali (mineshpatel1)Foto: 806581,3%6885,0%6986,3%
Fogli stampati (corso dell'Università di Bucarest)Foto: 2020100,0%20100,0%20100,0%
Tutte le 200Foto: 20016482,0%16482,0%16783,5%

Sugli schemi stampati che il lettore non aveva mai visto, tutto il lavoro delle due fasi ha cambiato poco. La prima versione ne leggeva esattamente l'82,0%, quella attuale l'83,5% (dal 77,7% all'88,0%): ha guadagnato 14 schemi e ne ha persi 11. Ciò che è migliorato sono le caselle: il 98,9% viene letto correttamente invece del 94,2%, e la griglia viene trovata in ogni foto invece che in 195 su 200. Schemi letti male ma con una sola soluzione: 5 allora, 6 ora.

Le perdite hanno una causa chiara. Per leggere le note a matita e i temi scuri, ora ogni casella viene ritagliata per intero e anche l'inchiostro tenue conta. Sulla carta sottile dei giornali traspare il retro della pagina, tenue e speculare, e il nuovo lettore legge quelle ombre come cifre; la prima versione guardava solo la forma d'inchiostro più grande in una casella e non le vedeva mai. Sulle pagine incurvate dei libri, il bordo esterno della griglia o una linea di un riquadro possono cadere dentro una casella ed essere letti come un 1.

Due dei casi falliti sono errori nelle etichette: la foto mostra un 3 e un 9 dove l'etichetta dice 9 e 8, e un 4 dove dice 2. Contandoli correttamente, il lettore attuale legge l'84,5%.

Cosa va ancora storto

Delle 200 nuove foto, 33 non sono state lette esattamente. Di queste, 22 sono pagine del libro di Sudoku aperto: vicino alla rilegatura la pagina si incurva più di quanto il lettore riesca a seguire, così una linea finisce dentro una casella e viene letta come un 1, oppure una casella d'angolo viene tagliata attraverso una linea. Altre 7 sono giornali in cui traspare il retro della pagina. Le restanti sono una foto di uno schermo con effetto moiré, un bordo della griglia letto come un 1 e i due errori di etichetta.

Delle 200 immagini di Lexski, 21 non sono state lette esattamente: note a matita lette come cifre, comprese note a matita cancellate che hanno lasciato cifre tenui (7); una cifra in più, per lo più una nota a matita isolata letta come valore inserito (5); la griglia nel posto sbagliato o non trovata, con temi di app senza linee tra le caselle o con una griglia disegnata a mano (5); e tessere e colori insoliti (4).

Perché non il 97%, e cosa viene dopo

Tutto gira nel tuo browser: un modello da 224 KB e circa 850 righe di JavaScript, una mediana di circa 300 millisecondi per foto su un portatile e circa 1,2 secondi con il processore rallentato di quattro volte, come su un telefono lento. Entro quei limiti, una rete più grande non ha aiutato. Ciò che resta è una lunga coda: pagine incurvate, retro che traspare, note a matita e stili di app insoliti. Ogni set pubblico etichettato che abbiamo trovato è ormai usato o già visto, quindi la prossima fase ha bisogno di foto scattate ed etichettate da noi, con i problemi dell'inchiostro tenue e delle pagine incurvate corretti e misurati su di esse.

Per una scansione ottimale

  • Tieni il telefono dritto sopra lo schema, con tutta la griglia nell'inquadratura.
  • Appiattisci il libro o il giornale: le pagine incurvate causano la maggior parte degli errori sugli schemi stampati.
  • Sulla carta sottile dei giornali, metti un foglio bianco dietro la pagina così che il retro non traspaia.
  • Scansiona prima di scrivere note a matita nello schema.
  • Prima di risolvere, confronta con il tuo schema le caselle segnate dal risolutore.

Dati e fonti

Prova il risolutore →

Icona dell'app Sudoku

Vuoi altre griglie come questa?

Realizziamo anche un'app Sudoku per iPhone, iPad, Mac e Android. Non contiene alcuna pubblicità, funziona offline e, quando chiedi un suggerimento, ti mostra la tecnica invece di inserire semplicemente un numero.

Sudoku Flow è realizzato da Rubigo Games, lo sviluppatore dell'app Sudoku consigliata su questo sito.