Sudoku Flow

Ce am învățat măsurând cititorul nostru de fotografii Sudoku

Actualizat la 5 noiembrie 2026

Ce înseamnă citit corect

Un careu este citit corect numai dacă toate cele 81 de căsuțe sunt corecte: o singură cifră greșită face din el alt careu. De aceea numărăm careuri întregi, nu căsuțe. Cele două măsuri pot spune povești foarte diferite, după cum arată această pagină: pe fotografiile cu careuri tipărite, cititorul nimerește acum 98,9% din căsuțe, dar proporția careurilor întregi aproape că nu s-a mișcat, pentru că majoritatea căsuțelor greșite se află în câteva imagini dificile.

Numărăm și cea mai periculoasă greșeală: un careu citit greșit care are totuși exact o soluție. Un Sudoku adevărat are o singură soluție, așa că o citire fără nicio soluție sau cu mai multe este depistată imediat. Un careu greșit cu o singură soluție pare în regulă, motiv pentru care rezolvatorul marchează fiecare căsuță de care nu a fost sigur și îți cere să le compari cu careul tău înainte de rezolvare.

Cu 200 de imagini, un rezultat are o precizie limitată. Pentru rezultatele principale dăm un interval de 95% (un interval Wilson): 89,5% din 200 de imagini înseamnă că rata reală se află cel mai probabil între 84,5% și 93,0%.

Imaginile pe care am făcut testele

Am pornit de la două seturi de date deschise. Setul de date Sudoku Image Recognition al lui Lexski (CC0) are 1.400 de imagini, majoritatea capturi de ecran și fotografii distribuite online: aplicații în toate stilurile, teme întunecate, notițe cu creionul, careuri rezolvate pe jumătate pe hârtie. Setul de date al lui Baptiste Wicht și Jean Hennebert (CC BY 4.0) conține careuri Sudoku din ziare fotografiate cu telefonul, unele dintre ele completate de mână, cu pixul.

Înainte de a schimba ceva, am pus deoparte trei seturi de test: 200 de imagini Lexski, 40 de fotografii din ziare și 40 de careuri din ziare completate de mână. Nu am antrenat nimic pe ele și nu ne-am uitat la ele cât timp am lucrat. Fiecare decizie a fost luată pe alte 200 de imagini Lexski, setul de reglaj, iar seturile de test au fost citite o singură dată, la final.

De unde am pornit

Prima versiune, din 31 octombrie, a citit exact 101 din cele 200 de imagini Lexski, 34 din cele 40 de fotografii din ziare și niciunul dintre cele 40 de careuri completate. Cele mai multe probleme ale ei apăreau înainte de citirea cifrelor. Lua drept tablă cea mai mare formă de cerneală aproximativ pătrată, iar pe o captură de ecran această formă cuprinde adesea un antet sau tastatura numerică, în timp ce liniile subțiri și gri ale unei teme întunecate sunt ratate cu totul. Pe setul de reglaj, a plasat grila în locul corect doar de 118 ori din 200.

Ce am schimbat, pas cu pas

Fiecare rând este o modificare, iar numărul arată câte dintre cele 200 de imagini de reglaj au fost apoi citite exact. Ultimele trei rânduri sunt a doua rundă.

ModificareImagini de reglaj citite exact (din 200)
Prima versiune, 31 octombrie99
Grila găsită după liniile ei: zece linii egal distanțate în fiecare direcție129
Grila judecată comparativ; se încearcă și o deplasare cu o căsuță136
Linii foarte fine și palide folosite pentru a găsi grila138
Căsuțe decupate întregi; cifre învățate din căsuțe reale161
O rețea mică stabilește unde se află tabla162
Linii urmărite acolo unde pagina se curbează163
Rețea de cifre mai bună, notițele cu creionul ca o clasă separată173
Media a trei rețele de cifre177
Regula prudentă a soluției unice; tablele terminate citite ca întreg177
A doua rundă: fotografiile la dimensiune completă înjumătățite înainte de micșorare178
A doua rundă: cerneala scurtă și palidă tratată ca notiță cu creionul179
A doua rundă: fotografiile pe lateral judecate de toate cele trei rețele179

Cea mai mare parte a câștigului a venit din trei modificări. Grila este acum găsită după liniile ei: fiecare presupunere despre tablă este mutată pe zece linii egal distanțate în fiecare direcție și judecată comparativ cu celelalte, iar o rețea mică, ce stabilește unde se află tabla, are și ea un vot. Fiecare căsuță este decupată întreagă, așa că o notiță cu creionul rămâne mică în colțul ei, iar o cifră deschisă la culoare pe o căsuță întunecată arată ca cerneala pe hârtie. Iar rețelele de cifre au învățat din căsuțe reale decupate din imaginile de antrenament ale lui Lexski, cu notițele cu creionul ca o clasă separată. Trei rețele mici, antrenate separat, citesc acum fiecare căsuță, iar răspunsurile lor sunt mediate, pentru că greșesc pe căsuțe diferite.

Un careu terminat primește ajutor suplimentar. Când o tablă conține 79 de cifre sau mai multe, cititorul caută cea mai probabilă grilă completă în care fiecare rând, coloană și bloc conține cifrele de la 1 la 9. Citite căsuță cu căsuță, doar 7 din cele 40 de careuri de test scrise de mână au ieșit exact; citite ca Sudoku terminat, au ieșit exact toate cele 40.

A doua rundă a adăugat trei modificări mai mici. O fotografie de telefon la dimensiune completă este înjumătățită pas cu pas înainte de a fi micșorată, astfel încât liniile subțiri și trăsăturile de creion intră în medie în loc să fie sărite. O căsuță a cărei cerneală este atât mult mai scurtă, cât și mult mai palidă decât cifrele sigure ale tablei este tratată ca probabilă notiță cu creionul. Iar rotirea unei fotografii făcute pe lateral este judecată de toate cele trei rețele în loc de una singură.

O captură de ecran Sudoku cu temă întunecată, cu notițe cu creionul și cifre colorate, tabla îndreptată, cu intersecțiile liniilor marcate cu verde, cele 81 de căsuțe ca imagini mici și numerele citite, afișate cu albastru, fără notițele cu creionul
O captură de ecran cu temă întunecată generată de noi: tabla îndreptată, cu intersecțiile de linii pe care le-a găsit; cele 81 de căsuțe așa cum le văd rețelele; și ce a fost citit. Notițele cu creionul sunt omise.

Ce nu a ajutat

Le-am măsurat și pe acestea pe setul de reglaj și le-am lăsat deoparte:

  • O rețea de cifre mai mare: 59.000 de ponderi în loc de 42.000 a citit cu o imagine de reglaj în plus și a rulat de 3,8 ori mai lent în browser.
  • 3.000 de capturi de ecran de aplicație generate, cu notițe cu creionul și teme întunecate: același scor cu sau fără ele.
  • Citirea în culori în loc de nuanțe de gri, ca un pix roșu să fie la fel de închis ca cerneala neagră: două imagini de reglaj în plus, dar scrisul de mână a fost citit mai prost.
  • Deformarea cifrelor de antrenament ca să semene mai mult cu scrisul de mână: scrisul de mână a fost citit mai prost.
  • Permiterea ca regula soluției unice să schimbe mai multe căsuțe: mai multe careuri citite corect, dar și mai multe dintre periculoasele careuri greșite cu o singură soluție.
  • Reantrenarea celor trei rețele pe date noi sau folosirea a patru sau șase rețele: în marja zgomotului, așa că au rămas primele.
  • Tratarea marginii imaginii ca margine a tablei, pentru tablele tăiate de cadru: tot atâtea imagini pierdute câte au fost câștigate.

Rezultatele pe primele seturi de test

Careurile citite exact din fiecare set de test, de prima versiune și de cititorul în forma lui actuală:

Set de test31 octombrieAcum
Capturi de ecran și fotografii distribuite online (Lexski)Imagini: 20010150,5 %17989,5 %
Fotografii din ziare (Wicht și Hennebert)Imagini: 403485,0 %40100,0 %
Careuri din ziare completate de mână (Wicht și Hennebert)Imagini: 4000,0 %40100,0 %

Pe imaginile Lexski, cititorul a urcat de la 50,5% la 89,5% (între 84,5% și 93,0%), iar careurile citite greșit, dar cu o singură soluție, au scăzut de la 7 la 4. În trei dintre aceste patru, singura cifră în plus este chiar cifra care trebuie să stea acolo, așa că acel careu duce în continuare la soluția corectă; al patrulea este un 1 tipărit clar pe care setul de date îl lasă gol. 177 din cele 179 au venit la finalul primei runde. Ultimele două au venit în a doua rundă, după ce am studiat ce eșuase, așa că acest set nu mai este neatins.

Patruzeci din patruzeci sună perfect, dar 40 de imagini pot arăta doar că rata reală este peste aproximativ 91%. Și o verificare pe care ar fi trebuit să o facem prima: patru dintre cele 40 de fotografii de test din ziare se află și în setul de antrenament al acelui set de date, două dintre ele identice pixel cu pixel. Fără ele, 36 din 36.

Un test nou: 200 de fotografii pe care nicio versiune nu le văzuse

Până atunci, primele seturi de test fuseseră citite și eșecurile lor studiate, așa că nu ne mai puteau spune cum se descurcă cititorul pe imagini pe care nu le-a întâlnit niciodată. Am căutat pe Hugging Face, Kaggle, GitHub, Zenodo, Figshare și AIcrowd alte fotografii Sudoku etichetate. Majoritatea seturilor erau table generate, cifre izolate sau copii ale fotografiilor lui Wicht. Trei colecții de pe GitHub aveau fotografii reale etichetate, toate cu careuri tipărite: 100 de fotografii ale unei culegeri deschise de careuri (NatalijaPetric/SudokuDataset), 80 de fotografii, majoritatea din ziare (mineshpatel1/sudoku-solver, după eliminarea a 49 care sunt chiar fotografiile lui Wicht și a unei copii), și 20 de foi tipărite dintr-un proiect pentru un curs de vedere computerizată de la Universitatea din București (danielsociu/SudokuRecognition).

Niciuna dintre cele trei nu menționează o licență, așa că le-am folosit doar pentru măsurare: niciodată pentru antrenare, iar imaginile nu sunt afișate aici. Lista imaginilor a fost fixată și salvată înainte de orice modificare, aleasă după o regulă pe baza hash-urilor fișierelor și a etichetelor, iar imaginile nu au fost deschise până la ultima modificare din a doua rundă. Apoi fiecare versiune a cititorului le-a citit o singură dată. Tabelul numără careurile citite exact.

Sursă31 octombriePrima rundăAcum
O culegere deschisă de careuri (NatalijaPetric)Fotografii: 1007979,0 %7676,0 %7878,0 %
Mai ales ziare (mineshpatel1)Fotografii: 806581,3 %6885,0 %6986,3 %
Foi tipărite (curs de la Universitatea din București)Fotografii: 2020100,0 %20100,0 %20100,0 %
Toate cele 200Fotografii: 20016482,0 %16482,0 %16783,5 %

Pe careurile tipărite pe care cititorul nu le văzuse niciodată, toată munca din ambele runde a schimbat puțin. Prima versiune a citit exact 82,0% dintre ele, cea actuală 83,5% (între 77,7% și 88,0%): a câștigat 14 careuri și a pierdut 11. Ce s-a îmbunătățit sunt căsuțele: 98,9% sunt citite corect, față de 94,2%, iar grila este găsită în fiecare fotografie, față de 195 din 200. Careuri citite greșit, dar cu o singură soluție: 5 atunci, 6 acum.

Pierderile au o cauză clară. Pentru a citi notițele cu creionul și temele întunecate, fiecare căsuță este acum decupată întreagă, iar cerneala palidă contează. Pe hârtia subțire de ziar, verso-ul paginii se vede prin hârtie, palid și în oglindă, iar noul cititor citește aceste umbre drept cifre; prima versiune se uita doar la cea mai mare formă de cerneală dintr-o căsuță și nu le vedea niciodată. Pe paginile de carte curbate, linia exterioară a tablei sau o linie de bloc poate cădea în interiorul unei căsuțe și poate fi citită drept 1.

Două dintre ratări sunt greșeli în etichete: fotografia arată un 3 și un 9 acolo unde eticheta spune 9 și 8, și un 4 acolo unde spune 2. Cu ele numărate corect, cititorul actual citește 84,5%.

Ce încă nu merge

Dintre cele 200 de fotografii noi, 33 nu au fost citite exact. 22 sunt pagini din culegerea deschisă de careuri: lângă cotor, pagina se curbează mai mult decât poate urmări cititorul, așa că o linie ajunge în interiorul unei căsuțe și este citită drept 1, sau o căsuță din colț este decupată de-a curmezișul unei linii. 7 sunt ziare cu verso-ul vizibil prin pagină. Restul sunt o fotografie a unui ecran cu efect moiré, o margine de tablă citită drept 1 și cele două greșeli de etichetare.

Dintre cele 200 de imagini Lexski, 21 nu au fost citite exact: notițe cu creionul citite drept cifre, inclusiv creion șters care a lăsat în urmă cifre palide (7); o cifră în plus, de cele mai multe ori o notiță cu creionul izolată citită drept cifră completată (5); grila în locul greșit sau negăsită, pe teme de aplicație fără linii între căsuțe sau cu o grilă desenată de mână (5); și căsuțe și culori neobișnuite (4).

De ce nu 97% și ce urmează

Totul rulează în browserul tău: un model de 224 KB și aproximativ 850 de linii de JavaScript, o durată mediană de aproximativ 300 de milisecunde pe fotografie pe un laptop și aproximativ 1,2 secunde cu procesorul încetinit de patru ori, ca pe un telefon lent. O rețea mai mare nu a ajutat în limitele acestui buget. Ce a rămas este o coadă lungă: pagini curbate, verso vizibil prin hârtie, notițe cu creionul și stiluri neobișnuite de aplicații. Fiecare set public etichetat pe care l-am găsit este acum folosit sau deja văzut, așa că runda următoare are nevoie de fotografii făcute și etichetate de noi, cu problemele cernelii palide și ale paginilor curbate rezolvate și măsurate pe ele.

Pentru cea mai bună scanare

  • Ține telefonul drept deasupra careului, cu toată grila în cadru.
  • Netezește cartea sau ziarul: paginile curbate cauzează majoritatea ratărilor la careurile tipărite.
  • Pe hârtia subțire de ziar, pune o foaie de hârtie simplă în spatele paginii, ca să nu se vadă cealaltă față prin ea.
  • Scanează înainte să scrii notițe cu creionul în careu.
  • Înainte de rezolvare, compară căsuțele marcate de rezolvator cu careul tău.

Date și surse

Încearcă rezolvitorul →

Pictograma aplicației Sudoku

Vrei mai multe puzzle-uri ca acesta?

Facem și o aplicație Sudoku pentru iPhone, iPad, Mac și Android. Nu are deloc reclame, funcționează offline, iar când ceri un indiciu îți arată tehnica, în loc să completeze doar un număr.

Sudoku Flow este realizat de Rubigo Games, dezvoltatorul aplicației Sudoku recomandate pe acest site.