Sudoku is a classic number puzzle that challenges logical thinking. But what if we could build an AI-powered web app to solve Sudoku puzzles instantly? In this article, weβll walk through how I built a Sudoku Solver using Flask, OpenCV, and scikit-learn, and made it live on Render.
π Live Demo
You can try out the live Sudoku Solver here:
π Sudoku Solver
π How It Works
The application provides two ways to solve Sudoku puzzles:
πΈ Image Upload
- Upload a clear image of a Sudoku puzzle.
- The app extracts the Sudoku grid using OpenCV.
- A trained machine learning model recognizes the digits.
- The puzzle is solved using a backtracking algorithm.
- The final solution is displayed and available for download.
βοΈ Manual Input
- Enter numbers into an interactive grid.
- Click "Solve" to get the completed Sudoku.
- Errors are handled gracefully if the puzzle is unsolvable.
π οΈ Tech Stack
- Backend: Flask (Python)
- Frontend: HTML, CSS, JavaScript
- Computer Vision: OpenCV, NumPy
- Machine Learning: scikit-learn (Digit Recognition Model)
- Sudoku Solver Algorithm: Backtracking
- Deployment: Render
π Machine Learning Model
The app utilizes a scikit-learn model trained on digit datasets like MNIST. The key steps:
- Preprocessing: Images are converted to grayscale and processed with OpenCV.
- Feature Extraction: Digits are isolated from the Sudoku grid.
- Prediction: The trained model classifies digits accurately.
π‘ You can fine-tune the model by retraining it with train_model.py in the project directory.
ποΈ Project Architecture
/sudoku-solver
βββ /static
β βββ /css (Styles)
β βββ /images (Sample images)
β βββ /js (Frontend scripts)
βββ /templates
β βββ index.html (Main UI)
βββ /utils
β βββ image_processor.py (Handles image extraction)
β βββ solver.py (Solves Sudoku with backtracking)
βββ /model
β βββ train_model.py (Trains the digit recognition model)
βββ app.py (Flask application)
βββ README.md
π Running the Project Locally
- Clone the repository (if you have access):
git clone your-repo-link
cd sudoku-solver
- Set up a virtual environment (optional but recommended):
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Run the application:
python app.py
- Open in your browser:
http://127.0.0.1:5000
π― Future Enhancements
β
Improve OCR with deep learning models like CNNs.
β
Add a difficulty classifier for Sudoku puzzles.
β
Implement a mobile-friendly UI for better accessibility.
π Follow Me for More!
If you found this project useful, follow me for more AI & Python content:
π GitHub: https://github.com/Amit-Chandra
π LinkedIn: https://www.linkedin.com/in/connect-amit-chandra/
π Twitter/X: https://x.com/CodeByAmit
π― Home Screen
π Solving an Uploaded Puzzle
βοΈ Solve By Manual Input The Sudoku Problem
π Conclusion
This Flask-based Sudoku Solver showcases the power of machine learning and computer vision in solving real-world problems. Whether you're an AI enthusiast or a Python developer, building such projects enhances your skills significantly.
Want more AI-powered projects? Stay connected! β¨
Top comments (2)
Thanks for sharing. I haven't tried the app yet but i am really impressed with the blog.
Very well strucutred and detailed.
Thank you, try with the manual input for your sudoku problem, you will be amazed to see the results, for uploading it is still in development, I have created the OCR, but not make it live yet, so by uploading will not work now, so let me know your experience whenever you try my sudoku solver.
Thank you, for your support.