Sudoku Flow

O que aprendemos ao medir nosso leitor de fotos de Sudoku

Atualizado em 5 de novembro de 2026

O que conta como leitura correta

Um quebra-cabeça só é lido corretamente se todas as 81 células estiverem certas: um único dígito errado resulta em outro quebra-cabeça. Por isso contamos quebra-cabeças inteiros, não células. As duas medidas podem contar histórias muito diferentes, como mostra esta página: em fotos de quebra-cabeças impressos, o leitor agora acerta 98,9% das células, mas a parcela de quebra-cabeças inteiros quase não se mexeu, porque a maioria das células erradas está em poucas imagens difíceis.

Também contamos o erro mais perigoso: um quebra-cabeça lido errado que ainda tem exatamente uma solução. Um Sudoku de verdade tem uma única solução, então uma leitura sem nenhuma ou com várias é detectada na hora. Um quebra-cabeça errado com uma única solução parece normal, e é por isso que o solucionador marca cada célula de que não tinha certeza e pede que você as compare com o seu quebra-cabeça antes de resolver.

Com 200 imagens, a precisão de um resultado tem limites. Para os resultados principais, damos um intervalo de 95% (um intervalo de Wilson): 89,5% de 200 imagens significa que o mais provável é que a taxa real esteja entre 84,5% e 93,0%.

As imagens que usamos nos testes

Começamos com dois conjuntos de dados abertos. O conjunto Sudoku Image Recognition, de Lexski (CC0), tem 1.400 imagens, a maioria capturas de tela e fotos que pessoas compartilharam on-line: apps de todos os estilos, temas escuros, anotações a lápis, quebra-cabeças resolvidos pela metade no papel. O conjunto de dados de Baptiste Wicht e Jean Hennebert (CC BY 4.0) tem Sudokus de jornal fotografados com celulares, alguns deles terminados à mão a caneta.

Antes de mudar qualquer coisa, separamos três conjuntos de teste: 200 imagens de Lexski, 40 fotos de jornal e 40 quebra-cabeças de jornal terminados à mão. Não treinamos com eles nem olhamos para eles durante o trabalho. Todas as decisões foram tomadas com outras 200 imagens de Lexski, o conjunto de ajuste, e os conjuntos de teste foram lidos uma única vez, no final.

Onde tudo começou

A primeira versão, de 31 de outubro, leu com exatidão 101 das 200 imagens de Lexski, 34 das 40 fotos de jornal e nenhum dos 40 quebra-cabeças terminados. A maior parte dos seus problemas vinha antes dos dígitos. Ela tomava como tabuleiro a maior forma de tinta mais ou menos quadrada, e numa captura de tela essa forma muitas vezes abrange um cabeçalho ou o teclado numérico, enquanto as linhas cinza finas de um tema escuro passam totalmente despercebidas. No conjunto de ajuste, ela situou a grade no lugar certo apenas 118 vezes em 200.

O que mudamos, passo a passo

Cada linha é uma mudança, e o número indica quantas das 200 imagens de ajuste passaram então a ser lidas com exatidão. As três últimas linhas são da segunda rodada.

MudançaImagens de ajuste lidas com exatidão (de 200)
Primeira versão, 31 de outubro99
Grade encontrada pelas linhas: dez linhas igualmente espaçadas em cada direção129
Grade avaliada lado a lado; testado um deslocamento de uma célula136
Linhas finíssimas e fracas usadas para encontrar a grade138
Células recortadas inteiras; dígitos aprendidos de células reais161
Uma pequena rede mapeia onde está o tabuleiro162
Linhas acompanhadas onde a página se curva163
Rede de dígitos melhor, anotações a lápis como classe própria173
Média de três redes de dígitos177
Regra cuidadosa da solução única; tabuleiros terminados lidos como um todo177
Segunda rodada: fotos em tamanho original reduzidas à metade antes de encolher178
Segunda rodada: tinta curta e fraca tratada como anotação a lápis179
Segunda rodada: fotos de lado avaliadas pelas três redes179

A maior parte do ganho veio de três mudanças. A grade agora é encontrada pelas suas linhas: cada hipótese de tabuleiro é encaixada em dez linhas igualmente espaçadas em cada direção e avaliada lado a lado com as outras, e uma pequena rede que mapeia onde está o tabuleiro também tem direito a voto. Cada célula é recortada inteira, de modo que uma anotação a lápis continua pequena no seu canto e um dígito claro numa célula escura parece tinta no papel. E as redes de dígitos aprenderam com células reais recortadas das imagens de treino de Lexski, com as anotações a lápis como uma classe própria. Três pequenas redes, treinadas separadamente, agora leem cada célula, e é feita a média das suas respostas, porque elas erram em células diferentes.

Um quebra-cabeça terminado recebe ajuda extra. Quando um tabuleiro tem 79 dígitos ou mais, o leitor procura a grade completa mais provável em que cada linha, coluna e bloco contenha os números de 1 a 9. Lidos célula por célula, apenas 7 dos 40 quebra-cabeças de teste escritos à mão saíram exatos; lidos como Sudokus terminados, saíram todos os 40.

A segunda rodada acrescentou três mudanças menores. Uma foto de celular em tamanho original é reduzida à metade, passo a passo, antes de ser encolhida, para que linhas finas e traços de lápis entrem na média em vez de serem pulados. Uma célula cuja tinta é ao mesmo tempo muito mais curta e muito mais fraca do que a dos dígitos seguros do tabuleiro é tratada como provável anotação a lápis. E a rotação de uma foto tirada de lado é avaliada pelas três redes, e não por uma só.

Uma captura de tela de Sudoku em tema escuro, com anotações a lápis e dígitos coloridos; o tabuleiro endireitado, com os cruzamentos das linhas marcados em verde; as 81 células como pequenas imagens; e os números lidos em azul, sem as anotações a lápis
Uma captura de tela em tema escuro gerada por nós: o tabuleiro endireitado, com os cruzamentos de linhas que o leitor encontrou; as 81 células como as redes as veem; e o que foi lido. As anotações a lápis ficam de fora.

O que não ajudou

Também medimos estas mudanças no conjunto de ajuste, e as deixamos de fora:

  • Uma rede de dígitos maior: 59.000 pesos em vez de 42.000 leram uma imagem de ajuste a mais e rodaram 3,8 vezes mais devagar no navegador.
  • 3.000 capturas de tela de apps geradas por nós, com anotações a lápis e temas escuros: a mesma pontuação com ou sem elas.
  • Ler em cores em vez de tons de cinza, para que uma caneta vermelha fique tão escura quanto tinta preta: duas imagens de ajuste a mais, mas a escrita à mão passou a ser lida pior.
  • Distorcer os dígitos de treino para que parecessem mais com escrita à mão: a escrita à mão passou a ser lida pior.
  • Deixar a regra da solução única alterar mais células: mais quebra-cabeças lidos corretamente, mas também mais dos perigosos quebra-cabeças errados com uma única solução.
  • Treinar de novo as três redes com dados novos, ou usar quatro ou seis delas: dentro do ruído, então as primeiras ficaram.
  • Tratar a borda da imagem como a borda do tabuleiro, para tabuleiros cortados pelo enquadramento: tantas imagens perdidas quanto ganhas.

Resultados nos primeiros conjuntos de teste

Quebra-cabeças lidos com exatidão em cada conjunto de teste, pela primeira versão e pelo leitor como está hoje:

Conjunto de teste31 de outubroAgora
Capturas de tela e fotos compartilhadas on-line (Lexski)Imagens: 20010150,5%17989,5%
Fotos de jornal (Wicht e Hennebert)Imagens: 403485,0%40100,0%
Quebra-cabeças de jornal terminados à mão (Wicht e Hennebert)Imagens: 4000,0%40100,0%

Nas imagens de Lexski, o leitor foi de 50,5% para 89,5% (84,5% a 93,0%), e os quebra-cabeças lidos errados mas com uma única solução caíram de 7 para 4. Em três desses quatro, o único dígito a mais é o dígito que pertence àquela célula, então o quebra-cabeça ainda leva à solução certa; o quarto é um 1 claramente impresso que o conjunto de dados deixa vazio. Dos 179, 177 vieram ao final da primeira rodada. Os dois últimos vieram na segunda rodada, depois de estudarmos o que falhou, então este conjunto já não está intocado.

Quarenta de quarenta parece perfeito, mas 40 imagens só conseguem mostrar que a taxa real está acima de cerca de 91%. E uma verificação que deveríamos ter feito primeiro: quatro das 40 fotos de jornal de teste também estão na parte de treino desse conjunto de dados, duas delas idênticas pixel a pixel. Sem elas, 36 de 36.

Um novo teste: 200 fotos que nenhuma versão tinha visto

Àquela altura, os primeiros conjuntos de teste já tinham sido lidos e suas falhas estudadas, então não podiam mais nos dizer como o leitor se sai em imagens que nunca viu. Procuramos mais fotos de Sudoku rotuladas no Hugging Face, no Kaggle, no GitHub, no Zenodo, no Figshare e no AIcrowd. A maioria dos conjuntos era de tabuleiros gerados, dígitos isolados ou cópias das fotos de Wicht. Três coleções do GitHub tinham fotos reais rotuladas, todas de quebra-cabeças impressos: 100 fotos de um livro de quebra-cabeças aberto (NatalijaPetric/SudokuDataset), 80 fotos, na maioria de jornais (mineshpatel1/sudoku-solver, depois de retirar 49 que são fotos do próprio Wicht e uma cópia), e 20 folhas impressas de um projeto de um curso de visão computacional da Universidade de Bucareste (danielsociu/SudokuRecognition).

Nenhum dos três informa uma licença, então os usamos apenas para medir: nunca para treinar, e eles não são mostrados aqui. A lista de imagens foi fixada e salva antes de qualquer mudança, escolhida por regra a partir de hashes e rótulos dos arquivos, e as imagens só foram abertas depois da última mudança da segunda rodada. Então cada versão do leitor as leu uma vez. A tabela conta os quebra-cabeças lidos com exatidão.

Fonte31 de outubroPrimeira rodadaAgora
Um livro de quebra-cabeças aberto (NatalijaPetric)Fotos: 1007979,0%7676,0%7878,0%
Na maioria jornais (mineshpatel1)Fotos: 806581,3%6885,0%6986,3%
Folhas impressas (curso da Universidade de Bucareste)Fotos: 2020100,0%20100,0%20100,0%
Todas as 200Fotos: 20016482,0%16482,0%16783,5%

Em quebra-cabeças impressos que o leitor nunca tinha visto, todo o trabalho das duas rodadas mudou pouco. A primeira versão leu 82,0% deles com exatidão; a atual, 83,5% (77,7% a 88,0%): ganhou 14 quebra-cabeças e perdeu 11. O que de fato melhorou foram as células: 98,9% são lidas corretamente, em vez de 94,2%, e a grade é encontrada em todas as fotos, em vez de em 195 de 200. Quebra-cabeças lidos errados mas com uma única solução: 5 antes, 6 agora.

As perdas têm uma causa clara. Para ler anotações a lápis e temas escuros, cada célula agora é recortada inteira e a tinta fraca conta. Em jornal fino, o verso da página aparece por transparência, fraco e espelhado, e o novo leitor lê essas sombras como dígitos; a primeira versão olhava apenas para a maior forma de tinta numa célula e nunca as via. Em páginas de livro curvadas, a linha externa do tabuleiro ou uma linha de bloco pode cair dentro de uma célula e ser lida como um 1.

Duas das falhas são erros nos rótulos: a foto mostra um 3 e um 9 onde o rótulo diz 9 e 8, e um 4 onde diz 2. Contados corretamente, o leitor atual lê 84,5%.

O que ainda dá errado

Das 200 fotos novas, 33 não foram lidas com exatidão. Delas, 22 são páginas do livro de quebra-cabeças aberto: perto da lombada, a página se curva mais do que o leitor consegue acompanhar, então uma linha acaba dentro de uma célula e é lida como um 1, ou uma célula do canto é recortada atravessando uma linha. Outras 7 são jornais com o verso da página aparecendo por transparência. O restante são uma foto de uma tela com efeito moiré, uma borda de tabuleiro lida como um 1 e os dois erros de rótulo.

Das 200 imagens de Lexski, 21 não foram lidas com exatidão: anotações a lápis lidas como dígitos, incluindo lápis apagado que deixou dígitos fracos para trás (7); um dígito a mais, na maioria das vezes uma anotação a lápis isolada lida como número preenchido (5); a grade no lugar errado ou não encontrada, em temas de app sem linhas entre as células ou com grade desenhada à mão (5); e estilos de célula e cores incomuns (4).

Por que não 97%, e o que vem a seguir

Tudo roda no seu navegador: um modelo de 224 KB e cerca de 850 linhas de JavaScript, uma mediana de cerca de 300 milissegundos por foto num notebook e cerca de 1,2 segundo com o processador desacelerado quatro vezes, como num celular lento. Uma rede maior não ajudou dentro desse orçamento. O que resta é uma cauda longa: páginas curvadas, transparência do verso, anotações a lápis e estilos incomuns de app. Todos os conjuntos públicos rotulados que encontramos já foram usados ou vistos, então a próxima rodada precisa de fotos que nós mesmos tiremos e rotulemos, com os problemas de tinta fraca e de páginas curvadas corrigidos e medidos nelas.

Para escanear melhor

  • Segure o celular reto, logo acima do quebra-cabeça, com a grade inteira no enquadramento.
  • Deixe o livro ou o jornal plano: páginas curvadas causam a maioria das falhas em quebra-cabeças impressos.
  • Em jornal fino, coloque uma folha de papel em branco atrás da página para que o outro lado não apareça por transparência.
  • Escaneie antes de escrever anotações a lápis no quebra-cabeça.
  • Antes de resolver, compare as células que o solucionador marca com o seu quebra-cabeça.

Dados e fontes

Experimente o resolvedor →

Ícone do app de Sudoku

Quer mais grades como esta?

Também desenvolvemos um app de Sudoku para iPhone, iPad, Mac e Android. Ele não tem nenhum anúncio, funciona offline e, quando você pede uma dica, mostra a técnica em vez de apenas preencher um número.

O Sudoku Flow é criado pela Rubigo Games, desenvolvedora do app de Sudoku recomendado neste site.