Sudoku Flow

Czego nauczył nas pomiar naszego czytnika zdjęć Sudoku

Zaktualizowano 5 listopada 2026

Co liczy się jako poprawny odczyt

Łamigłówka jest odczytana poprawnie tylko wtedy, gdy poprawnie odczytano wszystkie 81 komórek: jedna błędna cyfra daje inną łamigłówkę. Dlatego liczymy całe łamigłówki, a nie komórki. Obie miary mogą opowiadać bardzo różne historie, co widać na tej stronie: na zdjęciach drukowanych łamigłówek czytnik odczytuje teraz poprawnie 98,9% komórek, a mimo to odsetek całych łamigłówek prawie się nie zmienił, bo większość błędnych komórek przypada na kilka trudnych obrazów.

Liczymy też najgroźniejszy błąd: łamigłówkę odczytaną błędnie, która mimo to ma dokładnie jedno rozwiązanie. Prawdziwe Sudoku ma jedno rozwiązanie, więc odczyt bez rozwiązania lub z wieloma rozwiązaniami zostaje od razu wychwycony. Błędna łamigłówka z jednym rozwiązaniem wygląda w porządku, dlatego solver oznacza każdą komórkę, co do której nie miał pewności, i prosi o porównanie ich z Twoją łamigłówką przed rozwiązaniem.

Przy 200 obrazach precyzja wyniku jest ograniczona. Dla głównych wyników podajemy zakres 95% (przedział Wilsona): 89,5% z 200 obrazów oznacza, że prawdziwy odsetek najprawdopodobniej mieści się między 84,5% a 93,0%.

Obrazy, na których testowaliśmy

Zaczęliśmy od dwóch otwartych zbiorów danych. Zbiór Sudoku Image Recognition autorstwa Lexski (CC0) zawiera 1400 obrazów, w większości zrzuty ekranu i zdjęcia udostępniane w internecie: aplikacje w każdym stylu, ciemne motywy, notatki ołówkiem, łamigłówki rozwiązane do połowy na papierze. Zbiór, którego autorami są Baptiste Wicht i Jean Hennebert (CC BY 4.0), zawiera Sudoku z gazet sfotografowane telefonami, część z nich rozwiązana odręcznie długopisem.

Zanim cokolwiek zmieniliśmy, odłożyliśmy na bok trzy zbiory testowe: 200 obrazów Lexski, 40 zdjęć z gazet i 40 łamigłówek z gazet rozwiązanych odręcznie. Nie trenowaliśmy na nich ani nie oglądaliśmy ich podczas pracy. Każdą decyzję podejmowaliśmy na podstawie 200 innych obrazów Lexski, czyli zbioru do strojenia, a zbiory testowe zostały odczytane raz, na końcu.

Punkt wyjścia

Pierwsza wersja, z 31 października, odczytała dokładnie 101 z 200 obrazów Lexski, 34 z 40 zdjęć z gazet i żadnej z 40 rozwiązanych łamigłówek. Większość jej kłopotów pojawiała się jeszcze przed cyframi. Za planszę brała największy mniej więcej kwadratowy kształt z tuszu, a na zrzucie ekranu taki kształt często obejmuje nagłówek albo panel z cyframi, podczas gdy cienkie szare linie ciemnego motywu zostają całkowicie pominięte. Na zbiorze do strojenia umieściła siatkę we właściwym miejscu tylko 118 razy na 200.

Co zmieniliśmy, krok po kroku

Każdy wiersz to jedna zmiana, a liczba mówi, ile z 200 obrazów do strojenia odczytano potem dokładnie. Trzy ostatnie wiersze to druga runda.

ZmianaObrazy do strojenia odczytane dokładnie (z 200)
Pierwsza wersja, 31 października99
Siatka znajdowana po liniach: dziesięć równo rozmieszczonych linii w każdym kierunku129
Siatki oceniane obok siebie; próba przesunięcia o jedną komórkę136
Cienkie, blade linie używane do znajdowania siatki138
Komórki wycinane w całości; cyfry uczone na prawdziwych komórkach161
Mała sieć określa położenie planszy162
Linie śledzone tam, gdzie strona się wygina163
Lepsza sieć do cyfr, notatki ołówkiem jako osobna klasa173
Uśrednianie trzech sieci do cyfr177
Ostrożna reguła jednego rozwiązania; rozwiązane plansze odczytywane jako całość177
Druga runda: pełnowymiarowe zdjęcia zmniejszane o połowę przed pomniejszeniem178
Druga runda: niski, blady tusz traktowany jako notatka ołówkiem179
Druga runda: zdjęcia zrobione bokiem oceniane przez wszystkie trzy sieci179

Większość zysku dały trzy zmiany. Siatka jest teraz znajdowana po liniach: każda hipoteza położenia planszy jest dopasowywana do dziesięciu równo rozmieszczonych linii w każdym kierunku i oceniana obok pozostałych, a głos ma też mała sieć, która określa, gdzie znajduje się plansza. Każda komórka jest wycinana w całości, dzięki czemu notatka ołówkiem pozostaje mała w swoim rogu, a jasna cyfra na ciemnym kafelku wygląda jak tusz na papierze. Ponadto sieci rozpoznające cyfry uczyły się na prawdziwych komórkach wyciętych z obrazów treningowych Lexski, przy czym notatki ołówkiem stanowią osobną klasę. Każdą komórkę odczytują teraz trzy małe sieci, trenowane oddzielnie, a ich odpowiedzi są uśredniane, bo mylą się na różnych komórkach.

Rozwiązana łamigłówka dostaje dodatkową pomoc. Gdy plansza zawiera 79 cyfr lub więcej, czytnik szuka najbardziej prawdopodobnej pełnej siatki, w której każdy wiersz, każda kolumna i każdy kwadrat zawiera cyfry od 1 do 9. Przy odczycie komórka po komórce dokładnie wyszło tylko 7 z 40 testowych łamigłówek pisanych odręcznie; przy odczycie jako rozwiązane Sudoku dokładnie wyszły wszystkie 40.

Druga runda dodała trzy mniejsze zmiany. Pełnowymiarowe zdjęcie z telefonu, zanim zostanie pomniejszone, jest krok po kroku zmniejszane o połowę, dzięki czemu cienkie linie i pociągnięcia ołówka są uśredniane, a nie pomijane. Komórka, w której ślad tuszu jest zarówno znacznie niższy, jak i znacznie bledszy niż pewne cyfry na planszy, jest traktowana jako prawdopodobna notatka ołówkiem. Ponadto obrót zdjęcia zrobionego bokiem oceniają wszystkie trzy sieci zamiast jednej.

Zrzut ekranu Sudoku w ciemnym motywie z notatkami ołówkiem i kolorowymi cyframi, wyprostowana plansza z przecięciami linii zaznaczonymi na zielono, 81 komórek jako małe obrazki oraz odczytane liczby na niebiesko bez notatek ołówkiem
Wygenerowany przez nas zrzut ekranu w ciemnym motywie: wyprostowana plansza z przecięciami linii, które znalazł czytnik; 81 komórek tak, jak widzą je sieci; oraz wynik odczytu. Notatki ołówkiem zostały pominięte.

Co nie pomogło

Te zmiany również zmierzyliśmy na zbiorze do strojenia i zrezygnowaliśmy z nich:

  • Większa sieć do cyfr: przy 59 000 wag zamiast 42 000 odczytała o jeden obraz do strojenia więcej i działała w przeglądarce 3,8 raza wolniej.
  • 3000 wygenerowanych zrzutów ekranu aplikacji z notatkami ołówkiem i ciemnymi motywami: ten sam wynik z nimi i bez nich.
  • Odczyt w kolorze zamiast w skali szarości, tak aby czerwony długopis był równie ciemny jak czarny tusz: dwa obrazy do strojenia więcej, ale pismo odręczne było odczytywane gorzej.
  • Zniekształcanie cyfr treningowych, by bardziej przypominały pismo odręczne: pismo odręczne było odczytywane gorzej.
  • Pozwolenie regule jednego rozwiązania na zmianę większej liczby komórek: więcej łamigłówek odczytanych poprawnie, ale też więcej groźnych błędnych łamigłówek z jednym rozwiązaniem.
  • Ponowne wytrenowanie trzech sieci na świeżych danych albo użycie czterech lub sześciu sieci: różnica w granicach szumu, więc zostały pierwsze sieci.
  • Traktowanie krawędzi obrazu jako krawędzi planszy w przypadku plansz uciętych przez kadr: tyle samo obrazów straconych, co zyskanych.

Wyniki na pierwszych zbiorach testowych

Łamigłówki odczytane dokładnie w każdym zbiorze testowym przez pierwszą wersję i przez obecny czytnik:

Zbiór testowy31 październikaTeraz
Zrzuty ekranu i zdjęcia udostępnione w internecie (Lexski)Obrazy: 20010150,5%17989,5%
Zdjęcia z gazet (Wicht i Hennebert)Obrazy: 403485,0%40100,0%
Łamigłówki z gazet rozwiązane odręcznie (Wicht i Hennebert)Obrazy: 4000,0%40100,0%

Na obrazach Lexski wynik czytnika wzrósł z 50,5% do 89,5% (od 84,5% do 93,0%), a liczba łamigłówek odczytanych błędnie, ale z jednym rozwiązaniem, spadła z 7 do 4. W trzech z tych czterech jedyna dodatkowa cyfra to cyfra, która powinna się tam znaleźć, więc łamigłówka nadal prowadzi do właściwego rozwiązania; czwarta to wyraźnie wydrukowana 1 w komórce, którą zbiór danych zostawia pustą. 177 ze 179 udanych odczytów było już pod koniec pierwszej rundy. Ostatnie dwa przyszły w drugiej rundzie, po przeanalizowaniu tego, co zawiodło, więc ten zbiór nie jest już nietknięty.

Czterdzieści na czterdzieści brzmi idealnie, ale 40 obrazów może jedynie pokazać, że prawdziwy odsetek jest wyższy niż około 91%. I sprawdzenie, które powinniśmy byli wykonać na początku: cztery z 40 testowych zdjęć z gazet znajdują się też w części treningowej tego zbioru danych, dwa z nich piksel w piksel. Bez nich: 36 na 36.

Nowy test: 200 zdjęć, których nie widziała żadna wersja

Do tego czasu pierwsze zbiory testowe zostały już odczytane, a ich błędy przeanalizowane, więc nie mogły nam już powiedzieć, jak czytnik radzi sobie z obrazami, których nigdy nie spotkał. Przeszukaliśmy Hugging Face, Kaggle, GitHub, Zenodo, Figshare i AIcrowd w poszukiwaniu kolejnych zdjęć Sudoku z etykietami. Większość zbiorów zawierała wygenerowane plansze, pojedyncze cyfry albo kopie zdjęć ze zbioru Wicht. Trzy kolekcje w serwisie GitHub zawierały prawdziwe zdjęcia z etykietami, wszystkie przedstawiające drukowane łamigłówki: 100 zdjęć otwartej książki z łamigłówkami (NatalijaPetric/SudokuDataset), 80 zdjęć, głównie gazet (mineshpatel1/sudoku-solver, po usunięciu 49 zdjęć, które są zdjęciami ze zbioru Wicht, i jednej kopii), oraz 20 wydrukowanych arkuszy z projektu na kurs widzenia komputerowego na Uniwersytecie w Bukareszcie (danielsociu/SudokuRecognition).

Żadna z tych trzech kolekcji nie podaje licencji, więc użyliśmy ich wyłącznie do pomiarów: nigdy do treningu, i nie pokazujemy ich tutaj. Lista obrazów została ustalona i zapisana przed jakąkolwiek zmianą, wybrana według reguły na podstawie skrótów (hashy) plików i etykiet, a obrazów nie otwieraliśmy aż do ostatniej zmiany drugiej rundy. Wtedy każda wersja czytnika odczytała je raz. Tabela podaje liczbę łamigłówek odczytanych dokładnie.

Źródło31 październikaPierwsza rundaTeraz
Otwarta książka z łamigłówkami (NatalijaPetric)Zdjęcia: 1007979,0%7676,0%7878,0%
Głównie gazety (mineshpatel1)Zdjęcia: 806581,3%6885,0%6986,3%
Wydrukowane arkusze (kurs na Uniwersytecie w Bukareszcie)Zdjęcia: 2020100,0%20100,0%20100,0%
Wszystkie 200Zdjęcia: 20016482,0%16482,0%16783,5%

Na drukowanych łamigłówkach, których czytnik nigdy nie widział, cała praca z obu rund niewiele zmieniła. Pierwsza wersja odczytała dokładnie 82,0% z nich, obecna 83,5% (od 77,7% do 88,0%): zyskała 14 łamigłówek i straciła 11. Poprawiły się natomiast komórki: poprawnie odczytywanych jest 98,9% zamiast 94,2%, a siatka jest znajdowana na każdym zdjęciu zamiast na 195 z 200. Łamigłówki odczytane błędnie, ale z jednym rozwiązaniem: wtedy 5, teraz 6.

Straty mają wyraźną przyczynę. Aby odczytywać notatki ołówkiem i ciemne motywy, każda komórka jest teraz wycinana w całości, a blady tusz też się liczy. Na cienkim papierze gazetowym prześwituje odwrotna strona, blada i odbita lustrzanie, a nowy czytnik odczytuje te cienie jako cyfry; pierwsza wersja patrzyła tylko na największy kształt z tuszu w komórce i nigdy ich nie widziała. Na wygiętych stronach książki zewnętrzna linia planszy albo linia kwadratu może znaleźć się wewnątrz komórki i zostać odczytana jako 1.

Dwa z nieudanych odczytów to błędy w etykietach: na zdjęciu widać 3 i 9 tam, gdzie etykieta podaje 9 i 8, oraz 4 tam, gdzie podaje 2. Przy poprawnym liczeniu obecny czytnik odczytuje 84,5%.

Co wciąż zawodzi

Spośród 200 nowych zdjęć 33 nie zostały odczytane dokładnie. 22 z nich to strony otwartej książki z łamigłówkami: przy grzbiecie strona wygina się bardziej, niż czytnik jest w stanie śledzić, więc linia trafia do wnętrza komórki i zostaje odczytana jako 1 albo narożna komórka zostaje wycięta w poprzek linii. 7 to gazety, przez które prześwituje odwrotna strona. Pozostałe to zdjęcie ekranu z efektem mory, krawędź planszy odczytana jako 1 oraz dwa błędy w etykietach.

Spośród 200 obrazów Lexski 21 nie zostało odczytanych dokładnie: notatki ołówkiem odczytane jako cyfry, w tym wytarty ołówek, który pozostawił blade cyfry (7); jedna dodatkowa cyfra, najczęściej pojedyncza notatka ołówkiem odczytana jako wpis (5); siatka w złym miejscu lub nieznaleziona, w motywach aplikacji bez linii między komórkami albo przy siatce narysowanej odręcznie (5); oraz nietypowe kafelki i kolory (4).

Dlaczego nie 97% i co dalej

Wszystko działa w Twojej przeglądarce: model o rozmiarze 224 KB i około 850 wierszy kodu JavaScript, mediana około 300 milisekund na zdjęcie na laptopie i około 1,2 sekundy przy procesorze spowolnionym czterokrotnie, jak w wolnym telefonie. W ramach tego budżetu większa sieć nie pomogła. Pozostaje długi ogon: wygięte strony, prześwitywanie, notatki ołówkiem i nietypowe style aplikacji. Każdy publiczny zbiór z etykietami, jaki znaleźliśmy, jest już wykorzystany albo widziany, więc następna runda wymaga zdjęć, które sami zrobimy i opiszemy etykietami, a problemy bladego tuszu i wygiętych stron trzeba będzie naprawić i zmierzyć właśnie na nich.

Jak uzyskać najlepszy skan

  • Trzymaj telefon prosto nad łamigłówką, tak aby cała siatka mieściła się w kadrze.
  • Rozprostuj książkę lub gazetę: wygięte strony powodują większość nieudanych odczytów drukowanych łamigłówek.
  • Przy cienkim papierze gazetowym podłóż pod stronę czystą kartkę papieru, aby nie prześwitywała druga strona.
  • Zeskanuj łamigłówkę, zanim wpiszesz w niej notatki ołówkiem.
  • Przed rozwiązaniem porównaj komórki oznaczone przez solver ze swoją łamigłówką.

Dane i źródła

Wypróbuj solver →

Ikona aplikacji Sudoku

Chcesz więcej takich plansz?

Tworzymy też aplikację Sudoku na iPhone, iPad, Mac i Android. Nie ma w niej żadnych reklam, działa offline, a gdy poprosisz o podpowiedź, pokazuje technikę zamiast po prostu wpisywać cyfrę.

Sudoku Flow tworzy Rubigo Games, twórca aplikacji Sudoku polecanej na tej stronie.