Sudoku Flow

Vad vi lärde oss när vi mätte vår sudokufotoläsare

Uppdaterad 5 november 2026

Vad som räknas som rätt läst

Ett pussel är rätt läst bara om alla 81 rutor är rätt: en felaktig siffra gör det till ett annat pussel. Därför räknar vi hela pussel, inte rutor. De två måtten kan berätta mycket olika historier, som den här sidan visar: på foton av tryckta pussel får läsaren nu 98,9 % av rutorna rätt, men andelen hela pussel rörde sig knappt, eftersom de flesta felaktiga rutorna sitter i några få svåra bilder.

Vi räknar också det farligaste felet: ett felläst pussel som ändå har exakt en lösning. Ett riktigt sudoku har en lösning, så en avläsning utan lösning eller med många lösningar upptäcks direkt. Ett felaktigt pussel med en lösning ser bra ut, och därför markerar lösaren varje ruta den var osäker på och ber dig jämföra dem med ditt pussel innan det löses.

Med 200 bilder kan ett resultat bara bli så exakt. För huvudresultaten anger vi ett 95-procentigt intervall (ett Wilsonintervall): 89,5 % av 200 bilder betyder att den verkliga andelen med största sannolikhet ligger mellan 84,5 % och 93,0 %.

Bilderna vi testade på

Vi började med två öppna dataset. Datasetet Sudoku Image Recognition från Lexski (CC0) har 1 400 bilder, de flesta skärmbilder och foton som folk delat på nätet: appar i alla stilar, mörka teman, blyertsmarkeringar, pussel som är halvlösta på papper. Datasetet från Baptiste Wicht och Jean Hennebert (CC BY 4.0) har tidningssudokun som fotograferats med mobiltelefoner, några av dem lösta för hand med penna.

Innan vi ändrade något lade vi undan tre testuppsättningar: 200 bilder från Lexski, 40 tidningsfoton och 40 tidningspussel lösta för hand. Vi tränade inte på dem och tittade inte på dem medan vi arbetade. Varje beslut fattades utifrån 200 andra bilder från Lexski, justeringsuppsättningen, och testuppsättningarna lästes en gång, i slutet.

Utgångsläget

Den första versionen, från den 31 oktober, läste 101 av de 200 bilderna från Lexski exakt rätt, 34 av de 40 tidningsfotona och inget av de 40 lösta pusslen. De flesta av dess problem uppstod innan siffrorna lästes. Den tog den största ungefär kvadratiska bläckformen som spelplan, och på en skärmbild omfattar den formen ofta ett sidhuvud eller sifferknappsatsen, medan de tunna grå linjerna i ett mörkt tema missas helt. På justeringsuppsättningen placerade den rutnätet rätt bara 118 gånger av 200.

Vad vi ändrade, steg för steg

Varje rad är en ändring, och talet anger hur många av de 200 justeringsbilderna som sedan lästes exakt rätt. De tre sista raderna är den andra omgången.

ÄndringJusteringsbilder lästa exakt rätt (av 200)
Första versionen, 31 oktober99
Rutnätet hittas via sina linjer: tio jämnt fördelade linjer åt varje håll129
Rutnätet bedöms sida vid sida; en förskjutning på en ruta prövas136
Svaga hårfina linjer används för att hitta rutnätet138
Rutor klipps ut hela; siffror inlärda från riktiga rutor161
Ett litet nätverk kartlägger var spelplanen är162
Linjer följs där en sida böjer sig163
Bättre siffernätverk, blyertsmarkeringar som egen klass173
Medelvärde av tre siffernätverk177
Försiktig regel om en enda lösning; färdiga spelplaner läses som en helhet177
Andra omgången: foton i full storlek halveras innan de krymps178
Andra omgången: kort, svagt bläck behandlas som blyertsmarkering179
Andra omgången: foton som ligger på sidan bedöms av alla tre nätverken179

Det mesta av förbättringen kom från tre ändringar. Rutnätet hittas nu via sina linjer: varje gissning om var spelplanen ligger flyttas så att den ligger på tio jämnt fördelade linjer i varje riktning och bedöms sida vid sida, och ett litet nätverk som kartlägger var en spelplan finns får en röst. Varje ruta klipps ut hel, så att en blyertsmarkering förblir liten i sitt hörn och en ljus siffra på en mörk bricka ser ut som bläck på papper. Och siffernätverken lärde sig från riktiga rutor utklippta ur träningsbilderna i Lexski, med blyertsmarkeringar som en egen klass. Tre små nätverk, tränade var för sig, läser nu varje ruta och man tar medelvärdet av deras svar, eftersom de gör sina misstag på olika rutor.

Ett färdiglöst pussel får extra hjälp. När en spelplan har 79 siffror eller fler letar läsaren efter det mest sannolika kompletta rutnätet där varje rad, kolumn och block innehåller 1 till 9. Lästa ruta för ruta blev bara 7 av de 40 handskrivna testpusslen exakt rätt; lästa som färdiga sudokun blev alla 40 det.

Den andra omgången lade till tre mindre ändringar. Ett mobilfoto i full storlek halveras steg för steg innan det krymps, så att tunna linjer och blyertsstreck räknas in i medelvärdet i stället för att hoppas över. En ruta vars bläck är både mycket kortare och mycket svagare än spelplanens säkra siffror behandlas som en trolig blyertsmarkering. Och vridningen av ett foto som ligger på sidan bedöms av alla tre nätverken i stället för av ett.

En skärmbild av ett sudoku i mörkt tema med blyertsmarkeringar och färgade siffror, spelplanen uträtad med linjekorsningarna markerade i grönt, de 81 rutorna som små bilder och de avlästa siffrorna i blått utan blyertsmarkeringarna
En skärmbild i mörkt tema som vi genererade: spelplanen uträtad, med linjekorsningarna den hittade; de 81 rutorna som nätverken ser dem; och det som lästes. Blyertsmarkeringarna är utelämnade.

Vad som inte hjälpte

Dessa mätte vi också på justeringsuppsättningen, och vi lämnade dem utanför:

  • Ett större siffernätverk: 59 000 vikter i stället för 42 000 läste en justeringsbild till och körde 3,8 gånger långsammare i webbläsaren.
  • 3 000 genererade appskärmbilder med blyertsmarkeringar och mörka teman: samma resultat med eller utan dem.
  • Att läsa i färg i stället för gråskala, så att en röd penna blir lika mörk som svart bläck: två justeringsbilder till, men handskrift lästes sämre.
  • Att förvränga träningssiffrorna så att de mer liknade handskrift: handskrift lästes sämre.
  • Att låta regeln om en enda lösning ändra fler rutor: fler pussel lästes rätt, men också fler av de farliga felaktiga pusslen med en lösning.
  • Att träna om de tre nätverken på nya data, eller att använda fyra eller sex av dem: inom bruset, så de första fick vara kvar.
  • Att behandla bildens kant som spelplanens kant, för spelplaner som bildutsnittet skär av: lika många bilder förlorades som vanns.

Resultat på de första testuppsättningarna

Pussel som lästes exakt rätt i varje testuppsättning, av den första versionen och av läsaren som den är nu:

Testuppsättning31 oktoberNu
Skärmbilder och foton delade på nätet (Lexski)Bilder: 20010150,5 %17989,5 %
Tidningsfoton (Wicht och Hennebert)Bilder: 403485,0 %40100,0 %
Tidningspussel lösta för hand (Wicht och Hennebert)Bilder: 4000,0 %40100,0 %

På bilderna från Lexski gick läsaren från 50,5 % till 89,5 % (84,5 % till 93,0 %), och pussel som lästes fel men ändå hade en lösning gick från 7 till 4. I tre av de fyra är den enda extra siffran den siffra som hör hemma där, så pusslet leder fortfarande till rätt lösning; det fjärde är en tydligt tryckt 1:a som datasetet lämnar tom. 177 av de 179 fanns på plats i slutet av den första omgången. De två sista kom i den andra omgången, efter att vi hade studerat vad som misslyckades, så den här uppsättningen är inte längre orörd.

Fyrtio av fyrtio låter perfekt, men 40 bilder kan bara visa att den verkliga andelen ligger över ungefär 91 %. Och en kontroll som vi borde ha gjort först: fyra av de 40 tidningsfotona i testet finns också i det datasetets träningsuppsättning, två av dem pixel för pixel. Utan dem: 36 av 36.

Ett nytt test: 200 foton som ingen version hade sett

Vid det laget hade de första testuppsättningarna lästs och deras misslyckanden studerats, så de kunde inte längre visa hur läsaren klarar sig på bilder den aldrig har mött. Vi sökte på Hugging Face, Kaggle, GitHub, Zenodo, Figshare och AIcrowd efter fler etiketterade sudokufoton. De flesta uppsättningar var genererade spelplaner, enskilda siffror eller kopior av fotona från Wicht. Tre samlingar på GitHub hade riktiga etiketterade foton, alla av tryckta pussel: 100 foton av en öppen pusselbok (NatalijaPetric/SudokuDataset), 80 foton mestadels av tidningar (mineshpatel1/sudoku-solver, efter att vi tagit bort 49 som är foton från Wicht själv och en kopia) och 20 tryckta blad från ett kursprojekt i datorseende vid Universitetet i Bukarest (danielsociu/SudokuRecognition).

Ingen av de tre anger någon licens, så vi använde dem bara för att mäta: aldrig för att träna på, och de visas inte här. Listan över bilder fastställdes och sparades innan någon ändring gjordes, vald enligt en regel utifrån filernas hashvärden och etiketter, och bilderna öppnades inte förrän den andra omgångens sista ändring var gjord. Sedan läste varje version av läsaren dem en gång. Tabellen räknar pusslen som lästes exakt rätt.

Källa31 oktoberOmgång ettNu
En öppen pusselbok (NatalijaPetric)Foton: 1007979,0 %7676,0 %7878,0 %
Mestadels tidningar (mineshpatel1)Foton: 806581,3 %6885,0 %6986,3 %
Tryckta blad (kurs vid Universitetet i Bukarest)Foton: 2020100,0 %20100,0 %20100,0 %
Alla 200Foton: 20016482,0 %16482,0 %16783,5 %

På tryckta pussel som läsaren aldrig hade sett gjorde allt arbete i båda omgångarna liten skillnad. Den första versionen läste 82,0 % av dem exakt rätt, den nuvarande 83,5 % (77,7 % till 88,0 %): den vann 14 pussel och tappade 11. Det som faktiskt förbättrades är rutorna: 98,9 % läses rätt i stället för 94,2 %, och rutnätet hittas i varje foto i stället för i 195 av 200. Pussel som lästes fel men ändå hade en lösning: 5 då, 6 nu.

Förlusterna har en tydlig orsak. För att kunna läsa blyertsmarkeringar och mörka teman klipps varje ruta nu ut hel, och svagt bläck räknas. På tunt tidningspapper syns baksidan igenom, svag och spegelvänd, och den nya läsaren läser de skuggorna som siffror; den första versionen tittade bara på den största bläckformen i en ruta och såg dem aldrig. På böjda boksidor kan spelplanens yttre linje eller en blocklinje hamna inne i en ruta och läsas som en 1:a.

Två av missarna är fel i etiketterna: fotot visar en 3:a och en 9:a där etiketten säger 9 och 8, och en 4:a där den säger 2. Räknat korrekt läser den nuvarande läsaren 84,5 %.

Vad som fortfarande går fel

Av de 200 nya fotona lästes 33 inte exakt rätt. 22 är sidor ur den öppna pusselboken: nära bokryggen böjer sig sidan mer än läsaren följer, så en linje hamnar inne i en ruta och läses som en 1:a, eller så skärs en hörnruta ut tvärs över en linje. 7 är tidningar där baksidan syns igenom. Resten är ett foto av en skärm med moaré, en spelplanskant som lästs som en 1:a och de två etikettfelen.

Av de 200 bilderna från Lexski lästes 21 inte exakt rätt: blyertsmarkeringar lästa som siffror, inklusive raderad blyerts som lämnat svaga siffror efter sig (7); en extra siffra, oftast en ensam blyertsmarkering som lästs som en ifylld siffra (5); rutnätet på fel plats eller inte hittat, i appteman utan linjer mellan rutorna eller med ett handritat rutnät (5); och ovanliga brickor och färger (4).

Varför inte 97 %, och vad som kommer härnäst

Allt körs i din webbläsare: en modell på 224 kB och ungefär 850 rader JavaScript, en median på ungefär 300 millisekunder per foto på en bärbar dator och ungefär 1,2 sekunder med processorn fyra gånger långsammare, som på en långsam telefon. Ett större nätverk hjälpte inte inom den budgeten. Det som återstår är en lång svans: böjda sidor, baksidor som syns igenom, blyertsmarkeringar och ovanliga appstilar. Varje offentlig etiketterad uppsättning vi hittade är nu använd eller sedd, så nästa omgång behöver foton som vi själva tar och etiketterar, där problemen med svagt bläck och böjda sidor åtgärdas och mäts på dem.

För bästa skanning

  • Håll telefonen rakt ovanför pusslet, med hela rutnätet i bild.
  • Platta till en bok eller en tidning: böjda sidor orsakar de flesta missarna på tryckta pussel.
  • Om tidningspapperet är tunt, lägg ett tomt pappersark bakom sidan så att andra sidan inte syns igenom.
  • Skanna innan du skriver blyertsmarkeringar i pusslet.
  • Jämför rutorna som lösaren markerar med ditt pussel innan du löser det.

Data och källor

Prova lösaren →

Sudokuappens ikon

Vill du ha fler sådana här pussel?

Vi gör också en sudokuapp för iPhone, iPad, Mac och Android. Den är helt utan reklam, fungerar offline, och när du ber om en ledtråd visar den tekniken i stället för att bara fylla i en siffra.

Sudoku Flow är skapat av Rubigo Games, utvecklaren bakom sudokuappen som rekommenderas på den här webbplatsen.