Zip-Solver is an automated tool designed to solve the "Zip" puzzle (commonly found on platforms like LinkedIn) using computer vision and interface automation techniques.
[IMPORTANT] Disclaimer: This project was developed for educational and learning purposes. It is intended to explore computer vision, OCR, and automation concepts. Please use it responsibly.
- Automatic Detection: Identifies the game grid directly from the screen capture using OpenCV.
- Optical Character Recognition (OCR): Extracts numbers from the grid using EasyOCR with image preprocessing.
- Wall Detection: Identifies barriers between cells to ensure valid solutions.
- Solve Algorithm: Uses a backtracking-based resolution engine to find the path that connects all numbers.
- Mouse Automation: Automatically executes the solution by simulating movements and clicks with PyAutoGUI.
- Confirmation Interface: Allows the user to review the grid detection before proceeding with the "Solve".
The project is organized modularly:
app.py: The main script that coordinates capture, detection, interface, and solution execution.visor/:visor.py: High-level logic to extract grid information (cells, walls, etc.).processor.py: Image processing utilities (filters, edges, contours).ocr.py: Integration with EasyOCR for number reading.
solver/:solver.py: Contains the solving algorithm and mouse movement functions.
interface/:interface.py: Implementation of the interface using Tkinter.
- Ensure you have Python 3.8 or higher installed.
- Download or clone this repository.
- Install the required dependencies:
pip install -r requirements.txtNote: EasyOCR may require the automatic download of language models during its first execution. An active internet connection is recommended at that time.
- Have the Zip game visible on your primary screen.
- Run the program:
python app.py- The program will capture the screen and search for the grid. Once detected, a preview window will appear.
- If the red grid matches the game, press "Solve". Otherwise, you can press "Recapture" to try again.
- If detection fails or no solution is found, try increasing the page size.
