Lo que aprendimos al medir nuestro lector de fotos de sudoku
Actualizado el 5 de noviembre de 2026
Qué cuenta como lectura correcta
Un sudoku está bien leído solo si las 81 casillas son correctas: un solo dígito erróneo da como resultado otro sudoku. Por eso contamos sudokus enteros, no casillas. Las dos cifras pueden contar historias muy distintas, como muestra esta página: en las fotos de sudokus impresos, el lector acierta ahora el 98,9 % de las casillas, pero la proporción de sudokus enteros apenas se movió, porque la mayoría de las casillas erróneas se concentran en unas pocas imágenes difíciles.
También contamos el error más peligroso: un sudoku mal leído que aun así tiene exactamente una solución. Un sudoku de verdad tiene una sola solución, así que una lectura sin ninguna solución o con varias se detecta enseguida. Un sudoku erróneo con una sola solución parece correcto; por eso el solucionador marca cada casilla de la que no estaba seguro y te pide que las compares con tu sudoku antes de resolverlo.
Con 200 imágenes, la precisión de un resultado es limitada. Para los resultados principales damos un intervalo del 95 % (un intervalo de Wilson): un 89,5 % de 200 imágenes significa que lo más probable es que la tasa real esté entre el 84,5 % y el 93,0 %.
Las imágenes con las que probamos
Empezamos con dos conjuntos de datos abiertos. El conjunto Sudoku Image Recognition de Lexski (CC0) tiene 1400 imágenes, la mayoría capturas de pantalla y fotos que la gente compartió en internet: aplicaciones de todos los estilos, temas oscuros, anotaciones a lápiz, sudokus resueltos a medias en papel. El conjunto de datos de Baptiste Wicht y Jean Hennebert (CC BY 4.0) contiene sudokus de periódico fotografiados con teléfonos, algunos de ellos terminados a mano con bolígrafo.
Antes de cambiar nada, apartamos tres conjuntos de prueba: 200 imágenes de Lexski, 40 fotos de periódico y 40 sudokus de periódico terminados a mano. No entrenamos con ellos ni los miramos mientras trabajábamos. Todas las decisiones se tomaron con otras 200 imágenes de Lexski, el conjunto de ajuste, y los conjuntos de prueba se leyeron una sola vez, al final.
El punto de partida
La primera versión, del 31 de octubre, leyó sin errores 101 de las 200 imágenes de Lexski, 34 de las 40 fotos de periódico y ninguno de los 40 sudokus terminados. La mayoría de sus problemas surgían antes de llegar a los dígitos. Tomaba como tablero la forma de tinta casi cuadrada más grande, y en una captura de pantalla esa forma a menudo abarca una cabecera o el teclado numérico, mientras que las finas líneas grises de un tema oscuro se pasan por alto por completo. En el conjunto de ajuste solo situó la cuadrícula en el lugar correcto 118 veces de 200.
Qué cambiamos, paso a paso
Cada fila es un cambio, y el número indica cuántas de las 200 imágenes de ajuste se leyeron después sin errores. Las tres últimas filas corresponden a la segunda ronda.
| Cambio | Imágenes de ajuste leídas sin errores (de 200) |
|---|---|
| Primera versión, 31 de octubre | 99 |
| Cuadrícula encontrada por sus líneas: diez líneas equidistantes en cada dirección | 129 |
| Hipótesis de cuadrícula comparadas lado a lado; se prueba un desplazamiento de una casilla | 136 |
| Líneas finas y tenues usadas para encontrar la cuadrícula | 138 |
| Casillas recortadas enteras; dígitos aprendidos de casillas reales | 161 |
| Una pequeña red localiza dónde está el tablero | 162 |
| Líneas seguidas donde la página se curva | 163 |
| Mejor red de dígitos, con las anotaciones a lápiz como clase propia | 173 |
| Tres redes de dígitos promediadas | 177 |
| Regla prudente de la solución única; tableros terminados leídos como un todo | 177 |
| Segunda ronda: fotos a tamaño completo reducidas a la mitad antes de encogerlas | 178 |
| Segunda ronda: tinta corta y tenue tratada como anotación a lápiz | 179 |
| Segunda ronda: fotos de lado evaluadas por las tres redes | 179 |
La mayor parte de la mejora vino de tres cambios. Ahora la cuadrícula se encuentra por sus líneas: cada hipótesis sobre el tablero se ajusta a diez líneas equidistantes en cada dirección y se comparan lado a lado, y una pequeña red que localiza dónde está el tablero también tiene voto. Cada casilla se recorta entera, de modo que una anotación a lápiz sigue siendo pequeña en su esquina y un dígito claro sobre una casilla oscura parece tinta sobre papel. Y las redes de dígitos aprendieron de casillas reales recortadas de las imágenes de entrenamiento de Lexski, con las anotaciones a lápiz como una clase propia. Ahora, tres redes pequeñas entrenadas por separado leen cada casilla y sus respuestas se promedian, porque cometen sus errores en casillas distintas.
Un sudoku terminado recibe ayuda adicional. Cuando un tablero tiene 79 dígitos o más, el lector busca la cuadrícula completa más probable en la que cada fila, columna y caja contenga del 1 al 9. Leídos casilla por casilla, solo 7 de los 40 sudokus de prueba escritos a mano salieron sin errores; leídos como sudokus terminados, salieron bien los 40.
La segunda ronda añadió tres cambios menores. Una foto de teléfono a tamaño completo se reduce a la mitad paso a paso antes de encogerla, de modo que las líneas finas y los trazos de lápiz se promedian en lugar de perderse. Una casilla cuya tinta es a la vez mucho más corta y mucho más tenue que los dígitos seguros del tablero se trata como una probable anotación a lápiz. Y el giro de una foto tomada de lado lo evalúan las tres redes en lugar de una.

Lo que no sirvió
También medimos estos cambios en el conjunto de ajuste, y los descartamos:
- Una red de dígitos más grande: 59 000 pesos en lugar de 42 000 leyeron una imagen de ajuste más y funcionaron 3,8 veces más lento en el navegador.
- 3000 capturas de aplicaciones generadas, con anotaciones a lápiz y temas oscuros: la misma puntuación con ellas que sin ellas.
- Leer en color en lugar de en gris, para que un bolígrafo rojo resulte tan oscuro como la tinta negra: dos imágenes de ajuste más, pero la escritura a mano se leyó peor.
- Deformar los dígitos de entrenamiento para que se parecieran más a la escritura a mano: la escritura a mano se leyó peor.
- Dejar que la regla de la solución única cambiara más casillas: más sudokus bien leídos, pero también más de los peligrosos sudokus erróneos con una sola solución.
- Volver a entrenar las tres redes con datos nuevos, o usar cuatro o seis: dentro del ruido, así que se quedaron las primeras.
- Tratar el borde de la imagen como el borde del tablero, para los tableros cortados por el encuadre: se perdieron tantas imágenes como se ganaron.
Resultados en los primeros conjuntos de prueba
Sudokus leídos sin errores en cada conjunto de prueba, con la primera versión y con el lector tal como es ahora:
| Conjunto de prueba | 31 de octubre | Ahora |
|---|---|---|
| Capturas de pantalla y fotos compartidas en internet (Lexski)Imágenes: 200 | 10150,5 % | 17989,5 % |
| Fotos de periódico (Wicht y Hennebert)Imágenes: 40 | 3485,0 % | 40100,0 % |
| Sudokus de periódico terminados a mano (Wicht y Hennebert)Imágenes: 40 | 00,0 % | 40100,0 % |
En las imágenes de Lexski, el lector pasó del 50,5 % al 89,5 % (del 84,5 % al 93,0 %), y los sudokus mal leídos pero con una sola solución pasaron de 7 a 4. En tres de esos cuatro, el único dígito de más es justo el que corresponde a esa casilla, así que el sudoku sigue llevando a la solución correcta; el cuarto es un 1 claramente impreso que el conjunto de datos deja vacío. De los 179, 177 llegaron al final de la primera ronda. Los dos últimos llegaron en la segunda ronda, después de estudiar los fallos, así que este conjunto ya no está intacto.
Cuarenta de cuarenta suena perfecto, pero 40 imágenes solo pueden mostrar que la tasa real está por encima de aproximadamente el 91 %. Y una comprobación que deberíamos haber hecho primero: cuatro de las 40 fotos de periódico de prueba también están en el conjunto de entrenamiento de ese conjunto de datos, dos de ellas idénticas píxel a píxel. Sin ellas, 36 de 36.
Una nueva prueba: 200 fotos que ninguna versión había visto
Para entonces, los primeros conjuntos de prueba ya se habían leído y se habían estudiado sus fallos, así que ya no podían decirnos cómo funciona el lector con imágenes que nunca ha visto. Buscamos más fotos de sudoku etiquetadas en Hugging Face, Kaggle, GitHub, Zenodo, Figshare y AIcrowd. La mayoría de los conjuntos eran tableros generados, dígitos sueltos o copias de las fotos de Wicht. Tres colecciones de GitHub tenían fotos reales etiquetadas, todas de sudokus impresos: 100 fotos de un libro de sudokus abierto (NatalijaPetric/SudokuDataset), 80 fotos, en su mayoría de periódicos (mineshpatel1/sudoku-solver, tras descartar 49 que son las propias fotos de Wicht y una copia), y 20 hojas impresas del proyecto de un curso de visión artificial de la Universidad de Bucarest (danielsociu/SudokuRecognition).
Ninguna de las tres indica una licencia, así que las usamos solo para medir: nunca para entrenar, y no se muestran aquí. La lista de imágenes se fijó y se guardó antes de cualquier cambio, elegida mediante una regla a partir de los hashes de los archivos y de las etiquetas, y las imágenes no se abrieron hasta el último cambio de la segunda ronda. Después, cada versión del lector las leyó una vez. La tabla cuenta los sudokus leídos sin errores.
| Fuente | 31 de octubre | Primera ronda | Ahora |
|---|---|---|---|
| Un libro de sudokus abierto (NatalijaPetric)Fotos: 100 | 7979,0 % | 7676,0 % | 7878,0 % |
| Sobre todo periódicos (mineshpatel1)Fotos: 80 | 6581,3 % | 6885,0 % | 6986,3 % |
| Hojas impresas (curso de la Universidad de Bucarest)Fotos: 20 | 20100,0 % | 20100,0 % | 20100,0 % |
| Las 200Fotos: 200 | 16482,0 % | 16482,0 % | 16783,5 % |
En sudokus impresos que el lector nunca había visto, todo el trabajo de ambas rondas cambió poco. La primera versión leyó sin errores el 82,0 % de ellos, y la actual, el 83,5 % (del 77,7 % al 88,0 %): ganó 14 sudokus y perdió 11. Lo que sí mejoró son las casillas: se leen correctamente el 98,9 % en lugar del 94,2 %, y la cuadrícula se encuentra en todas las fotos en lugar de en 195 de 200. Sudokus mal leídos pero con una sola solución: 5 entonces, 6 ahora.
Las pérdidas tienen una causa clara. Para leer anotaciones a lápiz y temas oscuros, ahora cada casilla se recorta entera y la tinta tenue cuenta. En el papel de periódico fino se transparenta el reverso de la página, tenue y en espejo, y el nuevo lector toma esas sombras por dígitos; la primera versión solo miraba la forma de tinta más grande de cada casilla y nunca las veía. En las páginas curvadas de un libro, la línea exterior del tablero o una línea de caja puede caer dentro de una casilla y leerse como un 1.
Dos de los fallos son errores en las etiquetas: la foto muestra un 3 y un 9 donde la etiqueta dice 9 y 8, y un 4 donde dice 2. Contados correctamente, el lector actual lee el 84,5 %.
Lo que todavía falla
De las 200 fotos nuevas, 33 no se leyeron sin errores. De ellas, 22 son páginas del libro de sudokus abierto: cerca del lomo, la página se curva más de lo que el lector sigue, así que una línea acaba dentro de una casilla y se lee como un 1, o una casilla de esquina queda recortada atravesando una línea. Otras 7 son periódicos en los que se transparenta el reverso de la página. El resto son una foto de una pantalla con efecto muaré, un borde del tablero leído como un 1 y los dos errores de etiqueta.
De las 200 imágenes de Lexski, 21 no se leyeron sin errores: anotaciones a lápiz leídas como dígitos, incluido lápiz borrado que dejó dígitos tenues (7); un dígito de más, en su mayoría una anotación a lápiz aislada leída como un número introducido (5); la cuadrícula en el lugar equivocado o sin encontrar, en temas de aplicaciones sin líneas entre las casillas o con una cuadrícula dibujada a mano (5); y casillas y colores poco habituales (4).
Por qué no el 97 %, y qué viene después
Todo se ejecuta en tu navegador: un modelo de 224 KB y unas 850 líneas de JavaScript, una mediana de unos 300 milisegundos por foto en un portátil, y alrededor de 1,2 segundos con el procesador ralentizado cuatro veces, como en un teléfono lento. Una red más grande no ayudó dentro de ese presupuesto. Lo que queda es una larga cola: páginas curvadas, transparencias del reverso, anotaciones a lápiz y estilos de aplicación poco habituales. Todos los conjuntos públicos etiquetados que encontramos ya se han usado o visto, así que la siguiente ronda necesita fotos que hagamos y etiquetemos nosotros mismos, con los problemas de la tinta tenue y de las páginas curvadas corregidos y medidos sobre ellas.
Para obtener el mejor escaneo
- Sostén el teléfono directamente encima del sudoku, con toda la cuadrícula dentro del encuadre.
- Aplana el libro o el periódico: las páginas curvadas causan la mayoría de los fallos en sudokus impresos.
- En papel de periódico fino, pon una hoja de papel en blanco detrás de la página para que no se transparente el otro lado.
- Escanea antes de escribir anotaciones a lápiz en el sudoku.
- Antes de resolver, compara las casillas que marca el solucionador con tu sudoku.
Datos y fuentes
- 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), sin licencia declarada, usado solo para medir
- mineshpatel1, sudoku-solver (GitHub), sin licencia declarada, usado solo para medir
- danielsociu, SudokuRecognition (GitHub), University of Bucharest course project, sin licencia declarada, usado solo para medir
- Cómo lee el solucionador una foto, paso a paso (English)