Automated Sudoku puzzle solver using computer vision for grid extraction and deep learning for digit recognition.
| Original Image | Extracted Grid | Solved Sudoku |
|---|---|---|
![]() |
![]() |
![]() |
| Raw input image | Detected & warped grid | Final solution overlaid |
- Image Processing: Automatic Sudoku grid detection and cell extraction
- Digit Recognition: CNN and ResNet152 models for handwritten digit classification
- Sudoku Solving: Backtracking algorithm for puzzle solving
- Transfer Learning: Pre-training on MNIST with fine-tuning on Sudoku datasets
src/
├── common/ # Utility functions (config, pickle)
├── core/ # Training logic
├── data/ # Dataset loaders (MNIST, Sudoku)
├── evaluate/ # Model evaluation scripts
├── model/ # Model architectures (ConvNet, ResNet152)
├── preprocess/ # Image processing pipeline
└── scripts/ # Main executable scripts
├── train.py # Universal training script
└── pipeline.py # End-to-end Sudoku solver
Train ConvNet on MNIST:
python src/scripts/train.py --model convnet --dataset mnist --epochs 10Train ConvNet on Sudoku:
python src/scripts/train.py --model convnet --dataset sudoku --epochs 50Fine-tune MNIST model on Sudoku:
python src/scripts/train.py --model convnet --dataset sudoku --epochs 40 \
--finetune models/10epochs_convnet_mnist.pkl --lr 0.0005See TRAINING.md for more training examples.
python src/scripts/pipeline.pyOr use in Python:
from src.scripts.pipeline import main_pipeline
solution = main_pipeline(
image_path="path/to/sudoku.jpg",
model_path="models/50epochs_convnet_sudoku.pkl",
save_images=True,
show_images=True
)Evaluate all models in the models directory:
python src/evaluate/evaluate_all_models.py- Simple CNN architecture for 28x28 digit images
- 2 conv layers + 2 FC layers
- Fast training and inference
- Pre-trained on ImageNet with custom classification head
- Fine-tuned for digit recognition
- Higher accuracy but slower
- PyTorch
- OpenCV (cv2)
- NumPy
- Pandas
- scikit-learn
- PyYAML
Install with:
poetry installModels are automatically evaluated and saved in results/ directory with timestamps.
Pipeline outputs (original image, extracted grid, solution) are saved in results/pipeline_outputs/.


