Čo sme sa naučili pri meraní nášho čítača fotiek sudoku
Aktualizované 5. novembra 2026
Čo považujeme za správne prečítané
Úloha je prečítaná správne, iba ak je správnych všetkých 81 políčok: jedna chybná číslica z nej robí inú úlohu. Preto počítame celé úlohy, nie políčka. Tieto dva údaje môžu rozprávať veľmi odlišné príbehy, ako ukazuje táto stránka: na fotkách tlačených úloh teraz čítač prečíta správne 98,9 % políčok, no podiel celých úloh sa takmer nepohol, pretože väčšina chybných políčok sa nachádza v niekoľkých ťažkých obrázkoch.
Počítame aj najnebezpečnejšiu chybu: úlohu prečítanú nesprávne, ktorá má napriek tomu práve jedno riešenie. Skutočné sudoku má jedno riešenie, takže prečítanie bez riešenia alebo s viacerými riešeniami sa odhalí okamžite. Nesprávna úloha s jedným riešením vyzerá v poriadku, a preto riešiteľ označí každé políčko, pri ktorom si nebol istý, a pred riešením vás požiada, aby ste ich porovnali so svojou úlohou.
Pri 200 obrázkoch je presnosť výsledku obmedzená. Pri hlavných výsledkoch uvádzame 95 % rozsah (Wilsonov interval): 89,5 % z 200 obrázkov znamená, že skutočná miera je s najväčšou pravdepodobnosťou medzi 84,5 % a 93,0 %.
Obrázky, na ktorých sme testovali
Začali sme s dvoma otvorenými dátovými súbormi. Lexskiho dátový súbor Sudoku Image Recognition (CC0) obsahuje 1 400 obrázkov, väčšinou snímky obrazovky a fotky, ktoré ľudia zdieľali online: aplikácie vo všetkých štýloch, tmavé motívy, poznámky ceruzkou, úlohy napoly vyriešené na papieri. Dátový súbor, ktorého autormi sú Baptiste Wicht a Jean Hennebert (CC BY 4.0), obsahuje novinové sudoku odfotené telefónmi, niektoré z nich ručne dokončené perom.
Skôr než sme čokoľvek zmenili, odložili sme bokom tri testovacie sady: 200 obrázkov zo súboru Lexski, 40 fotiek z novín a 40 novinových sudoku dokončených ručne. Netrénovali sme na nich ani sme si ich počas práce neprezerali. Každé rozhodnutie sme urobili na 200 iných obrázkoch zo súboru Lexski, na ladiacej sade, a testovacie sady sme prečítali raz, na konci.
Odkiaľ sme začínali
Prvá verzia z 31. októbra prečítala presne 101 z 200 obrázkov zo súboru Lexski, 34 zo 40 fotiek z novín a žiadnu zo 40 dokončených úloh. Väčšina jej problémov vznikala ešte pred číslicami. Za hraciu plochu považovala najväčší zhruba štvorcový útvar z atramentu a na snímke obrazovky tento útvar často zahŕňa hlavičku alebo číselnú klávesnicu, zatiaľ čo tenké sivé čiary tmavého motívu sa úplne prehliadnu. Na ladiacej sade umiestnila mriežku na správne miesto iba 118-krát z 200.
Čo sme menili, krok za krokom
Každý riadok je jedna zmena a číslo udáva, koľko z 200 ladiacich obrázkov sa potom prečítalo presne. Posledné tri riadky patria druhému kolu.
| Zmena | Ladiace obrázky prečítané presne (z 200) |
|---|---|
| Prvá verzia, 31. októbra | 99 |
| Mriežka nájdená podľa čiar: desať rovnomerne rozmiestnených čiar v každom smere | 129 |
| Odhady mriežky posúdené vedľa seba; vyskúšaný posun o jedno políčko | 136 |
| Slabé vlasové čiary použité na nájdenie mriežky | 138 |
| Políčka vyrezané celé; číslice naučené zo skutočných políčok | 161 |
| Malá sieť mapuje, kde je hracia plocha | 162 |
| Čiary sledované tam, kde sa strana ohýba | 163 |
| Lepšia sieť na číslice, poznámky ceruzkou ako samostatná trieda | 173 |
| Spriemerovanie troch sietí na číslice | 177 |
| Opatrné pravidlo jedného riešenia; dokončené plochy čítané ako celok | 177 |
| Druhé kolo: fotky v plnej veľkosti sa pred zmenšením zmenšujú na polovicu | 178 |
| Druhé kolo: krátky, slabý atrament považovaný za poznámku ceruzkou | 179 |
| Druhé kolo: fotky otočené nabok posudzujú všetky tri siete | 179 |
Väčšina zlepšenia pochádza z troch zmien. Mriežka sa teraz hľadá podľa svojich čiar: každý odhad hracej plochy sa posunie na desať rovnomerne rozmiestnených čiar v každom smere a odhady sa posúdia vedľa seba, pričom hlas dostane aj malá sieť, ktorá mapuje, kde sa hracia plocha nachádza. Každé políčko sa vyreže celé, takže poznámka ceruzkou zostane malá vo svojom rohu a svetlá číslica na tmavej dlaždici vyzerá ako atrament na papieri. A siete na čítanie číslic sa učili na skutočných políčkach vyrezaných z trénovacích obrázkov zo súboru Lexski, pričom poznámky ceruzkou tvoria samostatnú triedu. Každé políčko teraz čítajú tri malé siete, trénované oddelene, a ich odpovede sa spriemerujú, pretože robia chyby na rôznych políčkach.
Dokončená úloha dostáva pomoc navyše. Keď hracia plocha obsahuje 79 alebo viac číslic, čítač hľadá najpravdepodobnejšiu úplnú mriežku, v ktorej každý riadok, stĺpec a blok obsahuje čísla 1 až 9. Pri čítaní políčko po políčku vyšlo presne iba 7 zo 40 ručne písaných testovacích úloh; pri čítaní ako dokončené sudoku vyšlo presne všetkých 40.
Druhé kolo pridalo tri menšie zmeny. Fotka z telefónu v plnej veľkosti sa pred zmenšením krok za krokom zmenšuje na polovicu, takže tenké čiary a ťahy ceruzkou sa spriemerujú, namiesto toho, aby sa preskočili. Políčko, ktorého atrament je oveľa kratší a zároveň oveľa slabší než isté číslice na hracej ploche, sa považuje za pravdepodobnú poznámku ceruzkou. A otočenie fotky otočenej nabok posudzujú všetky tri siete namiesto jednej.

Čo nepomohlo
Aj tieto zmeny sme zmerali na ladiacej sade a vynechali sme ich:
- Väčšia sieť na číslice: so 59 000 váhami namiesto 42 000 prečítala o jeden ladiaci obrázok viac a v prehliadači bežala 3,8-krát pomalšie.
- 3 000 vygenerovaných snímok obrazovky aplikácií s poznámkami ceruzkou a tmavými motívmi: rovnaký výsledok s nimi aj bez nich.
- Čítanie farby namiesto odtieňov sivej, aby bolo červené pero rovnako tmavé ako čierny atrament: o dva ladiace obrázky viac, ale rukopis sa čítal horšie.
- Deformovanie trénovacích číslic, aby viac pripomínali rukopis: rukopis sa čítal horšie.
- Dovoliť pravidlu jedného riešenia meniť viac políčok: viac správne prečítaných úloh, ale aj viac nebezpečných nesprávnych úloh s jedným riešením.
- Pretrénovanie troch sietí na nových dátach alebo použitie štyroch či šiestich sietí: v rámci šumu, preto zostali tie prvé.
- Považovanie okraja obrázka za okraj hracej plochy pri plochách odrezaných okrajom záberu: rovnako veľa obrázkov stratených ako získaných.
Výsledky na prvých testovacích sadách
Úlohy prečítané presne v každej testovacej sade, prvou verziou a čítačom v súčasnej podobe:
| Testovacia sada | 31. októbra | Teraz |
|---|---|---|
| Snímky obrazovky a fotky zdieľané online (Lexski)Obrázky: 200 | 10150,5 % | 17989,5 % |
| Fotky z novín (Wicht a Hennebert)Obrázky: 40 | 3485,0 % | 40100,0 % |
| Novinové sudoku dokončené ručne (Wicht a Hennebert)Obrázky: 40 | 00,0 % | 40100,0 % |
Na obrázkoch zo súboru Lexski sa čítač zlepšil z 50,5 % na 89,5 % (84,5 % až 93,0 %) a počet úloh prečítaných nesprávne, no s jedným riešením, klesol zo 7 na 4. V troch z týchto štyroch je jedna číslica navyše práve tá, ktorá na dané miesto patrí, takže úloha stále vedie k správnemu riešeniu; štvrtá je zreteľne vytlačená 1, ktorú dátový súbor necháva prázdnu. 177 zo 179 úloh bolo prečítaných na konci prvého kola. Posledné dve pribudli v druhom kole, potom ako sme preskúmali, čo zlyhalo, takže táto sada už nie je nedotknutá.
Štyridsať zo štyridsiatich znie dokonale, ale 40 obrázkov dokáže ukázať len to, že skutočná miera je vyššia než približne 91 %. A kontrola, ktorú sme mali urobiť ako prvú: štyri zo 40 testovacích fotiek z novín sú aj v trénovacej sade tohto dátového súboru, dve z nich pixel po pixeli. Bez nich je to 36 z 36.
Nový test: 200 fotiek, ktoré žiadna verzia nevidela
Vtedy už boli prvé testovacie sady prečítané a ich zlyhania preskúmané, takže nám už nemohli povedať, ako si čítač vedie na obrázkoch, s ktorými sa nikdy nestretol. Ďalšie označené fotky sudoku sme hľadali na platformách Hugging Face, Kaggle, GitHub, Zenodo, Figshare a AIcrowd. Väčšinu sád tvorili vygenerované hracie plochy, jednotlivé číslice alebo kópie Wichtových fotiek. Skutočné označené fotky mali tri kolekcie na platforme GitHub, všetky s tlačenými úlohami: 100 fotiek otvorenej knihy sudoku (NatalijaPetric/SudokuDataset), 80 fotiek prevažne z novín (mineshpatel1/sudoku-solver, po vyradení 49 fotiek, ktoré sú Wichtovými vlastnými fotkami, a jednej kópie) a 20 vytlačených hárkov z projektu kurzu počítačového videnia na Univerzite v Bukurešti (danielsociu/SudokuRecognition).
Ani jedna z týchto troch kolekcií neuvádza licenciu, preto sme ich použili iba na meranie: nikdy na trénovanie a ani ich tu nezobrazujeme. Zoznam obrázkov bol pred akoukoľvek zmenou pevne určený a uložený, vybraný podľa pravidla z hašov súborov a označení, a obrázky sme neotvorili až do poslednej zmeny druhého kola. Potom ich každá verzia čítača prečítala raz. Tabuľka uvádza počet úloh prečítaných presne.
| Zdroj | 31. októbra | Prvé kolo | Teraz |
|---|---|---|---|
| Otvorená kniha sudoku (NatalijaPetric)Fotky: 100 | 7979,0 % | 7676,0 % | 7878,0 % |
| Prevažne noviny (mineshpatel1)Fotky: 80 | 6581,3 % | 6885,0 % | 6986,3 % |
| Vytlačené hárky (kurz na Univerzite v Bukurešti)Fotky: 20 | 20100,0 % | 20100,0 % | 20100,0 % |
| Všetkých 200Fotky: 200 | 16482,0 % | 16482,0 % | 16783,5 % |
Na tlačených úlohách, ktoré čítač nikdy nevidel, celá práca oboch kôl zmenila len málo. Prvá verzia ich presne prečítala 82,0 %, súčasná 83,5 % (77,7 % až 88,0 %): 14 úloh získala a 11 stratila. Zlepšili sa však políčka: správne sa prečíta 98,9 % namiesto 94,2 % a mriežka sa nájde na každej fotke namiesto na 195 z 200. Úlohy prečítané nesprávne, no s jedným riešením: predtým 5, teraz 6.
Straty majú jasnú príčinu. Aby čítač dokázal čítať poznámky ceruzkou a tmavé motívy, každé políčko sa teraz vyreže celé a počíta sa aj slabý atrament. Na tenkom novinovom papieri presvitá zadná strana, slabo a zrkadlovo, a nový čítač tieto tiene číta ako číslice; prvá verzia sa pozerala iba na najväčší útvar z atramentu v políčku a nikdy ich nevidela. Na zvlnených stranách knihy môže vonkajšia čiara hracej plochy alebo čiara bloku padnúť dovnútra políčka a prečítať sa ako 1.
Dva z neúspechov sú chyby v označeniach: fotka ukazuje 3 a 9 tam, kde označenie uvádza 9 a 8, a 4 tam, kde uvádza 2. Pri správnom započítaní súčasný čítač prečíta 84,5 %.
Čo sa stále nedarí
Z 200 nových fotiek sa 33 neprečítalo presne. 22 z nich sú strany otvorenej knihy sudoku: pri chrbte knihy sa strana zvlní viac, než to čítač dokáže sledovať, takže čiara skončí vnútri políčka a prečíta sa ako 1, alebo sa rohové políčko vyreže naprieč čiarou. 7 sú noviny s presvitajúcou zadnou stranou. Zvyšok tvorí fotka obrazovky s moaré, okraj hracej plochy prečítaný ako 1 a dve chyby v označeniach.
Z 200 obrázkov zo súboru Lexski sa 21 neprečítalo presne: poznámky ceruzkou prečítané ako číslice, vrátane vygumovanej ceruzky, po ktorej zostali slabé číslice (7); jedna číslica navyše, väčšinou osamotená poznámka ceruzkou prečítaná ako zápis (5); mriežka na nesprávnom mieste alebo nenájdená, pri motívoch aplikácií bez čiar medzi políčkami alebo pri ručne nakreslenej mriežke (5); a nezvyčajné dlaždice a farby (4).
Prečo nie 97 % a čo bude ďalej
Všetko beží vo vašom prehliadači: model s veľkosťou 224 kB a približne 850 riadkov JavaScriptu, medián približne 300 milisekúnd na fotku na notebooku a približne 1,2 sekundy s procesorom štyrikrát spomaleným, ako na pomalom telefóne. Väčšia sieť v rámci tohto rozpočtu nepomohla. Zostáva dlhý chvost: zvlnené strany, presvitanie zadnej strany, poznámky ceruzkou a nezvyčajné štýly aplikácií. Každú verejnú označenú sadu, ktorú sme našli, sme už použili alebo videli, takže ďalšie kolo potrebuje fotky, ktoré sami nafotíme a označíme, pričom problémy so slabým atramentom a zvlnenými stranami treba opraviť a zmerať na nich.
Pre najlepšie skenovanie
- Držte telefón rovno nad úlohou tak, aby bola v zábere celá mriežka.
- Knihu alebo noviny vyrovnajte: zvlnené strany spôsobujú väčšinu neúspechov pri tlačených úlohách.
- Pri tenkých novinách vložte za stranu čistý hárok papiera, aby druhá strana nepresvitala.
- Naskenujte úlohu skôr, než do nej začnete písať poznámky ceruzkou.
- Pred riešením porovnajte políčka, ktoré riešiteľ označí, so svojou úlohou.
Údaje a zdroje
- 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), bez uvedenej licencie, použité len na meranie
- mineshpatel1, sudoku-solver (GitHub), bez uvedenej licencie, použité len na meranie
- danielsociu, SudokuRecognition (GitHub), University of Bucharest course project, bez uvedenej licencie, použité len na meranie
- Ako riešiteľ číta fotku, krok za krokom (English)