Skip to content

saccofrancesco/crosswords

Crosswords App

Crosswords: Crossword Puzzle Answer Finder

A fast and intuitive crossword solver powered by OpenAI and web scraping — built with Streamlit.

Contributors Forks Stars

TL;DRKey FeaturesQuickstartCreditsLicense


📌 TL;DR

Crosswords helps you solve puzzles by recognizing text with ChatGPT OCR and scraping answer databases.
It runs locally or online via Streamlit — fast, lightweight, and cross-platform.

👉 Try it online: crosswords.streamlit.app


🔑 Key Features

  • AI-Powered Clue Recognition – Uses ChatGPT’s image model to read and structure crossword clues from screenshots or scans
  • Efficient Solver – Web scraping + AI clue parsing finds answers fast
  • Real-Time Generation – Instant suggestions from your clues
  • Simple UI – Clean Streamlit interface
  • Cross-Platform – Runs on Windows, macOS, and Linux

⚡ Quickstart

You’ll need Git, Python, and pip.

# Clone this repository
git clone https://github.com/saccofrancesco/crosswords.git
cd crosswords

# Install dependencies
pip install -r requirements.txt

# Run the app
streamlit run main.py

This will start a local server (for your device) and a network server (accessible across devices on your network).


🖼️ How It Works: Clue Recognition with ChatGPT Vision

  1. Upload or paste a screenshot/photo of your crossword puzzle.
  2. ChatGPT’s image model automatically detects and extracts the clues (e.g., “12 Across: Capital of Norway (4)”).
  3. The app structures them into JSON format for easy processing:
[
  { "number": "12", "direction": "Across", "clue": "Capital of Norway", "length": 4 },
  { "number": "7", "direction": "Down", "clue": "Opposite of cold", "length": 3 }
]
  1. The solver uses these parsed clues to query answer databases and return suggestions.

No more messy OCR post-processing — just clean, structured clues straight from the puzzle image.


🧠 Credits & Acknowledgements

Crosswords uses these great tools:


📎 You Might Also Like...

Explore more by the same author:


📜 License

This project is licensed under the MIT License — feel free to use it in your own projects!


GitHub @saccofrancesco