Što smo naučili mjereći naš čitač fotografija sudokua
Ažurirano 5. studenoga 2026.
Što se računa kao točno pročitano
Zagonetka je pročitana točno samo ako je točno svih 81 polja: jedna pogrešna znamenka daje drugu zagonetku. Zato brojimo cijele zagonetke, a ne polja. Ta dva načina brojanja mogu ispričati vrlo različite priče, kako pokazuje ova stranica: na fotografijama tiskanih zagonetki čitač sada točno pročita 98,9 % polja, a udio cijelih zagonetki jedva se pomaknuo jer se većina pogrešnih polja nalazi u nekoliko teških slika.
Brojimo i najopasniju pogrešku: pogrešno pročitanu zagonetku koja ipak ima točno jedno rješenje. Pravi sudoku ima jedno rješenje, pa se čitanje bez rješenja ili s više rješenja odmah otkrije. Pogrešna zagonetka s jednim rješenjem izgleda ispravno i zato rješavač označi svako polje u koje nije bio siguran te vas zamoli da ih prije rješavanja usporedite sa svojom zagonetkom.
S 200 slika rezultat može biti samo donekle precizan. Za glavne rezultate navodimo 95-postotni raspon (Wilsonov interval): 89,5 % od 200 slika znači da je stvarna stopa najvjerojatnije između 84,5 % i 93,0 %.
Slike na kojima smo testirali
Krenuli smo od dvaju otvorenih skupova podataka. Skup Sudoku Image Recognition koji je objavio Lexski (CC0) ima 1.400 slika, većinom snimaka zaslona i fotografija koje su ljudi podijelili na internetu: aplikacije svih stilova, tamne teme, bilješke olovkom, zagonetke napola riješene na papiru. Skup podataka čiji su autori Baptiste Wicht i Jean Hennebert (CC BY 4.0) sadrži sudoku zagonetke iz novina fotografirane mobitelom, a neke od njih dovršene su rukom, kemijskom olovkom.
Prije ikakvih izmjena izdvojili smo tri testna skupa: 200 slika iz skupa Lexski, 40 novinskih fotografija i 40 novinskih zagonetki dovršenih rukom. Na njima nismo trenirali niti smo ih gledali dok smo radili. Svaka je odluka donesena na 200 drugih slika iz skupa Lexski, skupu za podešavanje, a testni su skupovi pročitani jednom, na kraju.
Odakle smo krenuli
Prva inačica, od 31. listopada, točno je pročitala 101 od 200 slika iz skupa Lexski, 34 od 40 novinskih fotografija i nijednu od 40 dovršenih zagonetki. Većina njezinih poteškoća javljala se još prije znamenki. Kao ploču uzimala je najveći približno kvadratni oblik tinte, a na snimci zaslona taj oblik često obuhvati i zaglavlje ili brojčanu tipkovnicu, dok tanke sive crte tamne teme posve promaknu. Na skupu za podešavanje rešetku je smjestila na pravo mjesto samo 118 puta od 200.
Što smo mijenjali, korak po korak
Svaki redak jedna je izmjena, a broj pokazuje koliko je od 200 slika za podešavanje nakon nje pročitano točno. Posljednja tri retka pripadaju drugom krugu.
| Izmjena | Točno pročitane slike za podešavanje (od 200) |
|---|---|
| Prva inačica, 31. listopada | 99 |
| Rešetka pronađena po crtama: deset jednako razmaknutih crta u svakom smjeru | 129 |
| Rešetke procijenjene usporedno; isproban pomak za jedno polje | 136 |
| Za pronalaženje rešetke koriste se i blijede tanke crte | 138 |
| Polja izrezana cijela; znamenke naučene na stvarnim poljima | 161 |
| Mala mreža određuje gdje je ploča | 162 |
| Crte se prate i ondje gdje se stranica savija | 163 |
| Bolja mreža za znamenke, bilješke olovkom kao zasebna klasa | 173 |
| Prosjek triju mreža za znamenke | 177 |
| Oprezno pravilo jednog rješenja; dovršene ploče čitaju se kao cjelina | 177 |
| Drugi krug: fotografije pune veličine prepolovljuju se prije smanjivanja | 178 |
| Drugi krug: niska, blijeda tinta smatra se bilješkom olovkom | 179 |
| Drugi krug: zakrenute fotografije procjenjuju sve tri mreže | 179 |
Većina napretka došla je od triju izmjena. Rešetka se sada pronalazi po svojim crtama: svaka pretpostavka o tome gdje je ploča pomiče se na deset jednako razmaknutih crta u svakom smjeru i procjenjuje usporedno s ostalima, a pravo glasa ima i mala mreža koja određuje gdje se ploča nalazi. Svako se polje izrezuje cijelo, pa bilješka olovkom ostaje mala u svom kutu, a svijetla znamenka na tamnoj pločici izgleda kao tinta na papiru. Mreže za znamenke učile su na stvarnim poljima izrezanima iz slika za učenje iz skupa Lexski, a bilješke olovkom čine zasebnu klasu. Svako polje sada čitaju tri male mreže, trenirane odvojeno, a njihovi se odgovori uprosječuju jer griješe na različitim poljima.
Dovršena zagonetka dobiva dodatnu pomoć. Kad ploča sadrži 79 ili više znamenki, čitač traži najvjerojatniju potpunu rešetku u kojoj svaki redak, stupac i kvadrat sadrži brojeve od 1 do 9. Kad se čitaju polje po polje, samo je 7 od 40 rukom pisanih testnih zagonetki ispalo točno; kad se čitaju kao dovršeni sudoku, točno je ispalo svih 40.
Drugi krug donio je tri manje izmjene. Fotografija s mobitela u punoj veličini prije smanjivanja postupno se prepolovljuje, pa se tanke crte i potezi olovkom uprosječe u sliku umjesto da budu preskočeni. Polje čija je tinta i znatno niža i znatno blijeđa od sigurnih znamenki na ploči smatra se vjerojatnom bilješkom olovkom. A zakret fotografije okrenute na bok procjenjuju sve tri mreže umjesto jedne.

Što nije pomoglo
I ovo smo izmjerili na skupu za podešavanje te izostavili:
- Veća mreža za znamenke: s 59.000 težina umjesto 42.000 pročitala je jednu sliku za podešavanje više, a u pregledniku je radila 3,8 puta sporije.
- 3.000 generiranih snimaka zaslona aplikacija s bilješkama olovkom i tamnim temama: isti rezultat s njima i bez njih.
- Čitanje u boji umjesto u sivim tonovima, kako bi crvena olovka bila jednako tamna kao crna tinta: dvije slike za podešavanje više, ali rukopis se čitao lošije.
- Izobličavanje znamenki za učenje kako bi više nalikovale rukopisu: rukopis se čitao lošije.
- Dopuštanje da pravilo jednog rješenja mijenja više polja: više točno pročitanih zagonetki, ali i više opasnih pogrešnih zagonetki s jednim rješenjem.
- Ponovno treniranje triju mreža na novim podacima ili korištenje četiri ili šest mreža: unutar šuma, pa su ostale prve mreže.
- Smatranje ruba slike rubom ploče, za ploče koje je okvir odrezao: jednako izgubljenih koliko i dobivenih slika.
Rezultati na prvim testnim skupovima
Točno pročitane zagonetke u svakom testnom skupu, za prvu inačicu i za čitač u sadašnjem obliku:
| Testni skup | 31. listopada | Sada |
|---|---|---|
| Snimke zaslona i fotografije podijeljene na internetu (Lexski)Slike: 200 | 10150,5 % | 17989,5 % |
| Novinske fotografije (Wicht i Hennebert)Slike: 40 | 3485,0 % | 40100,0 % |
| Novinske zagonetke dovršene rukom (Wicht i Hennebert)Slike: 40 | 00,0 % | 40100,0 % |
Na slikama iz skupa Lexski čitač je napredovao s 50,5 % na 89,5 % (84,5 % do 93,0 %), a broj pogrešno pročitanih zagonetki koje ipak imaju jedno rješenje pao je sa 7 na 4. U tri od te četiri jedina suvišna znamenka upravo je ona koja ondje pripada, pa zagonetka i dalje vodi do točnog rješenja; u četvrtoj je riječ o jasno otisnutoj znamenki 1 koju skup podataka ostavlja praznom. Od tih 179, njih 177 postignuto je na kraju prvog kruga. Posljednje dvije došle su u drugom krugu, nakon što smo proučili što nije uspjelo, pa ovaj skup više nije netaknut.
Četrdeset od četrdeset zvuči savršeno, ali 40 slika može pokazati samo to da je stvarna stopa viša od otprilike 91 %. I provjera koju smo trebali napraviti prvu: četiri od 40 novinskih testnih fotografija nalaze se i u skupu za učenje tog skupa podataka, dvije od njih identične piksel po piksel. Bez njih, 36 od 36.
Novi test: 200 fotografija koje nijedna inačica nije vidjela
Dotad su prvi testni skupovi već bili pročitani, a njihovi neuspjesi proučeni, pa nam više nisu mogli reći kako se čitač snalazi na slikama koje nikad nije vidio. Pretražili smo Hugging Face, Kaggle, GitHub, Zenodo, Figshare i AIcrowd u potrazi za još označenih fotografija sudokua. Većina skupova sadržavala je generirane ploče, pojedinačne znamenke ili kopije fotografija iz skupa Wicht. Tri GitHub zbirke imale su stvarne označene fotografije, sve tiskanih zagonetki: 100 fotografija otvorene knjige zagonetki (NatalijaPetric/SudokuDataset), 80 fotografija većinom novina (mineshpatel1/sudoku-solver, nakon što smo izbacili 49 fotografija koje potječu iz samog skupa Wicht i jednu kopiju) te 20 tiskanih listova iz projekta s kolegija računalnog vida na Sveučilištu u Bukureštu (danielsociu/SudokuRecognition).
Nijedna od tih triju zbirki ne navodi licencu, pa smo ih koristili samo za mjerenje: nikad za treniranje, i ovdje ih ne prikazujemo. Popis slika utvrđen je i spremljen prije ikakve izmjene, odabran po pravilu na temelju hash vrijednosti datoteka i oznaka, a slike nisu otvorene dok nije napravljena posljednja izmjena drugog kruga. Tada ih je svaka inačica čitača pročitala jednom. Tablica broji točno pročitane zagonetke.
| Izvor | 31. listopada | Prvi krug | Sada |
|---|---|---|---|
| Otvorena knjiga zagonetki (NatalijaPetric)Fotografije: 100 | 7979,0 % | 7676,0 % | 7878,0 % |
| Većinom novine (mineshpatel1)Fotografije: 80 | 6581,3 % | 6885,0 % | 6986,3 % |
| Tiskani listovi (kolegij Sveučilišta u Bukureštu)Fotografije: 20 | 20100,0 % | 20100,0 % | 20100,0 % |
| Svih 200Fotografije: 200 | 16482,0 % | 16482,0 % | 16783,5 % |
Na tiskanim zagonetkama koje čitač nikad nije vidio sav rad u oba kruga malo je toga promijenio. Prva je inačica točno pročitala 82,0 % njih, sadašnja 83,5 % (77,7 % do 88,0 %): dobila je 14 zagonetki, a izgubila 11. Ono što se doista poboljšalo jesu polja: točno se čita 98,9 % polja umjesto 94,2 %, a rešetka se pronalazi na svakoj fotografiji umjesto na 195 od 200. Pogrešno pročitane zagonetke koje ipak imaju jedno rješenje: tada 5, sada 6.
Gubici imaju jasan uzrok. Da bi se čitale bilješke olovkom i tamne teme, svako se polje sada izrezuje cijelo i uzima se u obzir i blijeda tinta. Kod tankog novinskog papira druga se stranica prozire, blijeda i zrcalno okrenuta, a novi čitač te sjene čita kao znamenke; prva je inačica gledala samo najveći oblik tinte u polju i nikad ih nije vidjela. Na savijenim stranicama knjige vanjska crta ploče ili crta kvadrata može pasti unutar polja i biti pročitana kao 1.
Dva od promašaja zapravo su pogreške u oznakama: na fotografiji su 3 i 9 ondje gdje oznaka navodi 9 i 8, te 4 ondje gdje navodi 2. Ako se to ispravno uračuna, sadašnji čitač pročita 84,5 %.
Što još uvijek ne ide
Od 200 novih fotografija, 33 nisu pročitane točno. Njih 22 stranice su otvorene knjige zagonetki: uz hrbat se stranica savija više nego što je čitač prati, pa crta završi unutar polja i pročita se kao 1 ili se kutno polje izreže preko crte. Njih 7 su novine kroz koje se prozire druga stranica. Ostalo su fotografija zaslona s moiré uzorkom, rub ploče pročitan kao 1 i dvije pogreške u oznakama.
Od 200 slika iz skupa Lexski, 21 nije pročitana točno: bilješke olovkom pročitane kao znamenke, uključujući izbrisane bilješke olovkom koje su za sobom ostavile blijede znamenke (7); jedna suvišna znamenka, većinom usamljena bilješka olovkom pročitana kao unos (5); rešetka na pogrešnom mjestu ili nepronađena, kod tema aplikacija bez crta između polja ili kod rukom nacrtane rešetke (5); te neobične pločice i boje (4).
Zašto ne 97 % i što slijedi
Sve se izvodi u vašem pregledniku: model od 224 KB i oko 850 redaka JavaScript koda, medijan od oko 300 milisekundi po fotografiji na prijenosnom računalu i oko 1,2 sekunde uz četiri puta usporen procesor, kao na sporom mobitelu. Veća mreža unutar tog proračuna nije pomogla. Ono što je preostalo dugi je rep: savijene stranice, prozirivanje druge stranice, bilješke olovkom i neobični stilovi aplikacija. Svaki javni označeni skup koji smo pronašli sada je iskorišten ili viđen, pa su za sljedeći krug potrebne fotografije koje ćemo sami snimiti i označiti, a problemi s blijedom tintom i savijenim stranicama trebaju biti ispravljeni i izmjereni na njima.
Za najbolje skeniranje
- Držite mobitel ravno iznad zagonetke, tako da cijela rešetka bude u kadru.
- Izravnajte knjigu ili novine: savijene stranice uzrok su većine promašaja kod tiskanih zagonetki.
- Kod tankog novinskog papira stavite običan list papira iza stranice da se druga strana ne prozire.
- Skenirajte prije nego što u zagonetku upišete bilješke olovkom.
- Prije rješavanja usporedite polja koja rješavač označi sa svojom zagonetkom.
Podaci i izvori
- Lexski, Sudoku Image Recognition (Hugging Face), CC0 1.0
- Wicht, B. and Hennebert, J., Sudoku dataset (GitHub), CC BY 4.0; "Camera-based Sudoku recognition with deep belief network", SoCPaR 2014
- NatalijaPetric, SudokuDataset (GitHub), licencija nije navedena, korišteno samo za mjerenje
- mineshpatel1, sudoku-solver (GitHub), licencija nije navedena, korišteno samo za mjerenje
- danielsociu, SudokuRecognition (GitHub), University of Bucharest course project, licencija nije navedena, korišteno samo za mjerenje
- Kako rješavač čita fotografiju, korak po korak (English)