https://tile-extractor.onrender.com/
A web application to automatically extract all tile product images from PDF catalogues — losslessly, at high speed, unlimited times.
Built by Somya Bhalani
- ⚡ Lightning Fast — Processes large PDF catalogues in seconds using async background tasks
- 🔍 Smart Tile Detection — AI-powered filter rejects QR codes, logos, borders, and blank fills — keeping only real tile images
- 🖼️ Lossless Quality — All images extracted without any quality loss (JPEG byte-copied, others converted to web-safe PNG)
- 📦 Download All — Export every extracted tile as a single ZIP archive in one click
- 📊 Live Progress Bar — Real-time extraction progress tracked from backend to frontend
- 🪟 Masonry Gallery — Beautiful responsive grid layout with fullscreen lightbox viewer
- 📱 Mobile Friendly — Fully responsive design, works on all screen sizes
- 🎨 Liquid Glass UI — Premium frosted glass design with marble background
You will need the following installed on your machine:
- Python 3.9+ and
pip
Open your terminal or command prompt and run:
# Clone the repository
git clone https://github.com/somyabhalani/tile-extractor.git
# Navigate into the folder
cd tile-extractor
# Install the required Python libraries
pip install -r requirements.txtStart the local server using Uvicorn:
uvicorn app:app --reloadOnce the server is running, open your web browser and go to: http://localhost:8000
| Layer | Technology |
|---|---|
| Backend | Python, FastAPI, Uvicorn |
| PDF Engine | PyMuPDF (fitz) |
| Images | Pillow (PIL) |
| Frontend | HTML5, CSS3, Vanilla JS |
| Design | Glassmorphism / Liquid Glass |
tile-extractor/
├── app.py # FastAPI server & API endpoints
├── tile_extractor.py # Core PDF tile extraction engine
├── requirements.txt # Python dependencies
├── static/
│ ├── index.html # Main UI
│ ├── style.css # Liquid Glass design system
│ ├── script.js # Frontend logic & progress polling
│ └── marble-bg.png # Background texture
└── jobs/ # Auto-generated; stores extracted tiles per session
- Upload — Drop a PDF tile catalogue onto the upload area
- Extract — The backend spawns a background task, iterating through every image reference in the PDF
- Filter — Each image passes through a smart
TileFilterthat rejects non-tile content based on size, aspect ratio, edge density, and color statistics - Progress — The frontend polls
/api/progress/{job_id}every 500ms and animates a live progress bar - Display — Extracted tiles are served via
/api/imagesand displayed in a beautiful masonry gallery - Download — Optionally download all tiles as a ZIP archive via
/api/download/{job_id}
Somya Bhalani
- GitHub: @somyabhalani
- Phone: +91 8320408204
© 2025 Somya Bhalani. All rights reserved.