Mit tanultunk, amikor megmértük a Sudoku-fotóolvasónkat
Frissítve: 2026. november 5.
Mi számít helyes beolvasásnak
Egy rejtvény csak akkor számít helyesen beolvasottnak, ha mind a 81 cellája helyes: egyetlen hibás számjegy már egy másik rejtvényt jelent. Ezért egész rejtvényeket számolunk, nem cellákat. A kettő nagyon eltérő képet adhat, ahogy ez az oldal is mutatja: nyomtatott fotókon az olvasó most a cellák 98,9%-át olvassa be helyesen, az egész rejtvények aránya mégis alig mozdult, mert a hibás cellák többsége néhány nehéz képen található.
A legveszélyesebb hibát is számoljuk: a hibásan beolvasott rejtvényt, amelynek mégis pontosan egy megoldása van. Egy valódi Sudokunak egy megoldása van, így a megoldás nélküli vagy több megoldású beolvasás azonnal kiderül. A hibás, de egyetlen megoldású rejtvény viszont rendben lévőnek látszik, ezért a megoldó megjelöl minden cellát, amelyben bizonytalan volt, és megkér, hogy megoldás előtt vesd össze őket a rejtvényeddel.
200 kép esetén egy eredmény pontossága korlátozott. A fő eredményeknél 95%-os tartományt adunk meg (Wilson-intervallum): ha 200 képből 89,5% sikeres, a valódi arány nagy valószínűséggel 84,5% és 93,0% között van.
A képek, amelyeken teszteltünk
Két nyílt adatkészlettel kezdtünk. Lexski Sudoku Image Recognition adatkészlete (CC0) 1400 képet tartalmaz, többségük az interneten megosztott képernyőkép és fotó: mindenféle stílusú alkalmazások, sötét témák, ceruzajelölések, papíron félig megoldott rejtvények. Baptiste Wicht és Jean Hennebert adatkészlete (CC BY 4.0) telefonnal lefényképezett újsági Sudokukat tartalmaz, ezek egy részét kézzel, tollal kitöltötték.
Mielőtt bármit változtattunk volna, félretettünk három tesztkészletet: 200 Lexski-képet, 40 újságfotót és 40 kézzel kitöltött újsági rejtvényt. Ezeken nem tanítottunk, és munka közben meg sem néztük őket. Minden döntés 200 másik Lexski-képen, a hangolókészleten született, a tesztkészleteket pedig egyszer olvastuk be, a végén.
A kiindulópont
Az október 31-i első változat a 200 Lexski-képből 101-et olvasott be pontosan, a 40 újságfotóból 34-et, a 40 kitöltött rejtvényből pedig egyet sem. A gondjai többsége még a számjegyek előtt jelentkezett. A legnagyobb, nagyjából négyzet alakú tintás alakzatot vette táblának, képernyőképen azonban ez az alakzat gyakran a fejlécet vagy a számbillentyűzetet is magában foglalja, a sötét téma vékony szürke vonalai pedig teljesen észrevétlenek maradnak. A hangolókészleten 200-ból csak 118 esetben tette a rácsot a megfelelő helyre.
Mit változtattunk, lépésről lépésre
Minden sor egy változtatás, a szám pedig azt mutatja, hogy a 200 hangolóképből ezután hányat olvasott be pontosan az olvasó. Az utolsó három sor a második kör.
| Változtatás | Pontosan beolvasott hangolóképek (200-ból) |
|---|---|
| Első változat, október 31. | 99 |
| Rács keresése a vonalai alapján: irányonként tíz egyenlő távolságra lévő vonal | 129 |
| Rácsjelöltek egymással összevetve; egycellányi eltolás kipróbálása | 136 |
| Halvány hajszálvonalak felhasználása a rács kereséséhez | 138 |
| Cellák egészben kivágva; számjegyek tanulása valódi cellákból | 161 |
| Egy kis hálózat feltérképezi a tábla helyét | 162 |
| Vonalak követése, ahol az oldal meghajlik | 163 |
| Jobb számjegyhálózat, a ceruzajelölések külön osztályként | 173 |
| Három számjegyhálózat átlagolva | 177 |
| Óvatos szabály az egyetlen megoldásra; kitöltött táblák egészként olvasva | 177 |
| Második kör: teljes méretű fotók felezése kicsinyítés előtt | 178 |
| Második kör: rövid, halvány tinta ceruzajelölésként kezelve | 179 |
| Második kör: oldalra fordított fotók megítélése mindhárom hálózattal | 179 |
A javulás nagy része három változtatásból származott. A rácsot most a vonalai alapján keressük meg: a tábla minden feltételezett helyét mindkét irányban tíz egyenlő távolságra lévő vonalra igazítjuk, és egymással összevetve értékeljük, egy kis hálózat pedig, amely feltérképezi, hol van a tábla, szintén szavaz. Minden cellát egészében vágunk ki, így a ceruzajelölés kicsi marad a sarkában, a sötét lapkán lévő világos számjegy pedig úgy néz ki, mint tinta a papíron. A számjegyhálózatok pedig valódi, Lexski tanítóképeiből kivágott cellákból tanultak, a ceruzajelöléseket külön osztályként kezelve. Most három, egymástól függetlenül tanított kis hálózat olvas be minden cellát, és a válaszaikat átlagoljuk, mert más-más cellákon hibáznak.
A kitöltött rejtvény külön segítséget kap. Ha a táblán 79 vagy több számjegy van, az olvasó azt a legvalószínűbb teljes rácsot keresi, amelyben minden sor, oszlop és négyzet 1-től 9-ig tartalmazza a számjegyeket. Cellánként olvasva a 40 kézírásos tesztrejtvényből csak 7 lett pontos; kitöltött Sudokuként olvasva mind a 40.
A második kör három kisebb változtatást hozott. A teljes méretű telefonos fotót kicsinyítés előtt lépésről lépésre a felére csökkentjük, így a vékony vonalak és a ceruzavonások beleátlagolódnak a képbe, ahelyett hogy kimaradnának. Azt a cellát, amelynek tintája jóval rövidebb és jóval halványabb is, mint a tábla biztos számjegyei, valószínű ceruzajelölésként kezeljük. Az oldalra fordított fotó elfordulását pedig egy helyett mindhárom hálózat megítéli.

Ami nem segített
Ezeket is a hangolókészleten mértük, és kihagytuk őket:
- Nagyobb számjegyhálózat: 42 000 helyett 59 000 súllyal eggyel több hangolóképet olvasott be, és 3,8-szor lassabban futott a böngészőben.
- 3000 generált alkalmazás-képernyőkép ceruzajelölésekkel és sötét témákkal: velük és nélkülük ugyanaz az eredmény.
- Színes beolvasás szürke helyett, hogy a piros toll ugyanolyan sötét legyen, mint a fekete tinta: két hangolóképpel több, de a kézírást rosszabbul olvasta.
- A tanító számjegyek torzítása, hogy jobban hasonlítsanak a kézírásra: a kézírást rosszabbul olvasta.
- Az egyetlen megoldásra vonatkozó szabály több cellát módosíthat: több helyesen beolvasott rejtvény, de több veszélyes, hibás, mégis egyetlen megoldású rejtvény is.
- A három hálózat újratanítása friss adatokon, vagy négy, illetve hat hálózat használata: a különbség a zajon belül maradt, ezért az eredetiek maradtak.
- A kép szélének a tábla széleként való kezelése a képkeret által levágott tábláknál: ugyanannyi képet vesztett, mint amennyit nyert.
Eredmények az első tesztkészleteken
Az egyes tesztkészletekben pontosan beolvasott rejtvények száma az első változattal és a jelenlegi olvasóval:
| Tesztkészlet | Október 31. | Most |
|---|---|---|
| Interneten megosztott képernyőképek és fotók (Lexski)Képek: 200 | 10150,5% | 17989,5% |
| Újságfotók (Wicht és Hennebert)Képek: 40 | 3485,0% | 40100,0% |
| Kézzel kitöltött újsági rejtvények (Wicht és Hennebert)Képek: 40 | 00,0% | 40100,0% |
A Lexski-képeken az olvasó 50,5%-ról 89,5%-ra javult (84,5% és 93,0% között), a hibásan beolvasott, mégis egyetlen megoldású rejtvények száma pedig 7-ről 4-re csökkent. A négyből háromban az egyetlen többletszámjegy éppen az a számjegy, amely oda tartozik, így a rejtvény továbbra is a helyes megoldáshoz vezet; a negyedik egy jól láthatóan nyomtatott 1-es, amelyet az adatkészlet üresen hagy. A 179-ből 177 az első kör végén született meg. Az utolsó kettő a második körben jött, miután megvizsgáltuk a sikertelen eseteket, így ez a készlet már nem érintetlen.
A negyvenből negyven tökéletesen hangzik, de 40 kép csak azt tudja megmutatni, hogy a valódi arány körülbelül 91% fölött van. És egy ellenőrzés, amelyet elsőként kellett volna elvégeznünk: a 40 újsági tesztfotóból négy az adatkészlet tanítókészletében is szerepel, közülük kettő pixelre pontosan. Nélkülük 36-ból 36.
Új teszt: 200 fotó, amelyet egyik változat sem látott
Addigra az első tesztkészleteket már beolvastuk, és a hibáikat megvizsgáltuk, így már nem tudták megmutatni, hogyan teljesít az olvasó olyan képeken, amelyekkel még sosem találkozott. További címkézett Sudoku-fotókat kerestünk a Hugging Face, a Kaggle, a GitHub, a Zenodo, a Figshare és az AIcrowd oldalain. A legtöbb készlet generált táblákból, egyes számjegyekből vagy Wicht fotóinak másolataiból állt. Három GitHub-gyűjteményben voltak valódi címkézett fotók, mind nyomtatott rejtvényekről: 100 fotó egy nyitott rejtvénykönyvről (NatalijaPetric/SudokuDataset), 80 fotó, többnyire újságokról (mineshpatel1/sudoku-solver, miután elhagytunk 49 képet, amelyek Wicht saját fotói, valamint egy másolatot), és 20 nyomtatott lap a Bukaresti Egyetem egyik számítógépes látás kurzusának projektjéből (danielsociu/SudokuRecognition).
A három közül egyik sem tüntet fel licencet, ezért csak mérésre használtuk őket: tanításra soha, és itt sem mutatjuk be őket. A képek listáját minden változtatás előtt rögzítettük és elmentettük, szabály szerint kiválasztva a fájlok hash-értékei és a címkék alapján, a képeket pedig a második kör utolsó változtatásáig meg sem nyitottuk. Ezután az olvasó minden változata egyszer olvasta be őket. A táblázat a pontosan beolvasott rejtvényeket számolja.
| Forrás | Október 31. | Első kör | Most |
|---|---|---|---|
| Egy nyitott rejtvénykönyv (NatalijaPetric)Fotók: 100 | 7979,0% | 7676,0% | 7878,0% |
| Többnyire újságok (mineshpatel1)Fotók: 80 | 6581,3% | 6885,0% | 6986,3% |
| Nyomtatott lapok (a Bukaresti Egyetem kurzusa)Fotók: 20 | 20100,0% | 20100,0% | 20100,0% |
| Mind a 200Fotók: 200 | 16482,0% | 16482,0% | 16783,5% |
Az olvasó által sosem látott nyomtatott rejtvényeken a két kör teljes munkája kevés változást hozott. Az első változat 82,0%-ukat olvasta be pontosan, a jelenlegi 83,5%-ukat (77,7% és 88,0% között): 14 rejtvényt nyert és 11-et vesztett. Ami javult, az a cellák szintje: 94,2% helyett 98,9%-ukat olvassa be helyesen, és a rácsot 200-ból 195 helyett minden fotón megtalálja. Hibásan beolvasott, mégis egyetlen megoldású rejtvények: akkor 5, most 6.
A veszteségeknek egyértelmű oka van. A ceruzajelölések és a sötét témák olvasásához most minden cellát egészében vágunk ki, és a halvány tinta is számít. A vékony újságpapíron átüt a hátoldal, halványan és tükrözve, az új olvasó pedig ezeket az árnyékokat számjegynek olvassa; az első változat csak a cellában lévő legnagyobb tintás alakzatot nézte, és ezeket sosem vette észre. A meggörbült könyvoldalakon a tábla külső vonala vagy egy négyzet vonala a cellán belülre eshet, és az olvasó 1-esnek olvashatja.
A tévesztések közül kettő a címkék hibája: a fotón 3-as és 9-es látható, ahol a címke 9-et és 8-at ír, illetve 4-es, ahol 2-t. Helyesen számolva a jelenlegi olvasó eredménye 84,5%.
Mi megy még félre
A 200 új fotóból 33-at nem olvasott be pontosan. Ebből 22 a nyitott rejtvénykönyv oldala: a gerinc közelében az oldal jobban meggörbül, mint amennyit az olvasó követni tud, így egy vonal a cellán belülre kerül, és 1-esnek olvassa, vagy egy sarokcellát úgy vág ki, hogy egy vonal keresztülfut rajta. További 7 kép olyan újság, amelyen átüt a hátoldal. A maradék egy moarémintás képernyőről készült fotó, egy 1-esnek olvasott táblaszél és a két címkehiba.
A 200 Lexski-képből 21-et nem olvasott be pontosan: számjegynek olvasott ceruzajelölések, köztük kiradírozott ceruza, amely halvány számjegyeket hagyott maga után (7); egy többletszámjegy, többnyire egy magányos ceruzajelölés, amelyet beírt számként olvasott (5); rossz helyen lévő vagy meg nem talált rács olyan alkalmazástémáknál, ahol nincsenek vonalak a cellák között, illetve kézzel rajzolt rácsnál (5); valamint szokatlan lapkák és színek (4).
Miért nem 97%, és mi következik
Minden a böngésződben fut: egy 224 KB-os modell és körülbelül 850 sornyi JavaScript, laptopon fotónként körülbelül 300 ezredmásodperces medián idővel, négyszeresen lassított processzorral pedig körülbelül 1,2 másodperccel, ahogy egy lassú telefonon. Ezen a kereten belül egy nagyobb hálózat nem segített. Ami maradt, az egy hosszú farok: meggörbült oldalak, átütő hátoldal, ceruzajelölések és szokatlan alkalmazásstílusok. Minden nyilvános címkézett készletet, amelyet találtunk, már felhasználtunk vagy láttunk, ezért a következő körhöz saját magunk által készített és címkézett fotók kellenek, a halvány tinta és a meggörbült oldalak problémáit pedig ezeken kell kijavítani és lemérni.
A legjobb beolvasásért
- Tartsd a telefont egyenesen a rejtvény fölé, úgy, hogy a teljes rács a képen legyen.
- Simítsd ki a könyvet vagy az újságot: nyomtatott rejtvényeknél a legtöbb tévesztést a meggörbült oldalak okozzák.
- Vékony újságpapírnál tegyél egy üres papírlapot az oldal mögé, hogy a másik oldal ne üssön át.
- Olvasd be a rejtvényt, mielőtt ceruzajelöléseket írnál bele.
- Megoldás előtt vesd össze a megoldó által megjelölt cellákat a rejtvényeddel.
Adatok és források
- 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), licenc nincs megadva, csak méréshez használtuk
- mineshpatel1, sudoku-solver (GitHub), licenc nincs megadva, csak méréshez használtuk
- danielsociu, SudokuRecognition (GitHub), University of Bucharest course project, licenc nincs megadva, csak méréshez használtuk
- Hogyan olvassa be a megoldó a fotót, lépésről lépésre (English)