Adaptive and Explainable Search for Comics โ An intelligent comic book search system with personalization, explainable AI, and interactive relevance feedback.
This is research-backed comic book search system that:
โจ Searches Beyond Metadata โ Use visual & textual content, not just titles/genres
โจ Explains Results โ Understand why results were returned with interactive explanations
โจ Learns From You โ Personalization via implicit user feedback (mouse hover tracking)
โจ 6 Research Systems โ Compare different approaches: Wayne, Stark, Croft, Butcher, Gray, BM25
โจ Production Ready โ Optimized Docker images, API documentation, full stack setup
For setup instructions, see:
- Easiest: INSTALLATION_DOCKER_HUB.md โ 5 minutes with pre-built images
- Build Locally: INSTALLATION_LOCAL.md โ Build from source
| Feature | Details |
|---|---|
| ๐ Content Search | Search by text, visual features, color, texture, artistic style |
| ๐ก Explainability | Weights-based local explanations, feature importance analysis |
| ๐ค Personalization | Learns from hover patterns, adapts results per user |
| ๐๏ธ Rich Faceting | Filter by genre, character, year, color palette, topics |
| ๐ Comparison | Compare books side-by-side with explanations |
| ๐ฃ๏ธ Feedback | Non-obtrusive relevance feedback via UI interactions |
| Layer | Technologies |
|---|---|
| Backend | FastAPI โข Python 3.8+ โข scikit-learn โข Transformers โข PyTorch |
| Frontend | React 18 โข Material-UI โข Axios โข React Router |
| Deployment | Docker โข Docker Compose โข Nginx โข Ubuntu/Linux |
| ML/AI | Sentence-Transformers โข PyTorch โข scikit-learn |
| Data | Pandas โข NumPy โข 1700+ Comic Books โข 1700+ Cover Images |
escomic/
โโโ README.md โ Start here
โโโ docs/ โ All documentation
โ โโโ INSTALLATION_DOCKER_HUB.md (recommended setup)
โ โโโ INSTALLATION_LOCAL.md (local build setup)
โ โโโ SYSTEMS.md (Wayne/Stark/Croft/etc)
โ โโโ TROUBLESHOOTING.md (known issues)
โ โโโ DOCKER_COMMANDS.md (Docker reference)
โ โโโ FILE_STRUCTURE.md (detailed directory guide)
โ
โโโ python_backend_api/ โ FastAPI Backend
โโโ react_frontend_ui/ โ React Frontend
โโโ docker-compose*.yml โ Docker configs
- Docker & Docker Compose (easiest option) OR
- Python 3.8+ + Node.js 18+ (local development)
- 6GB+ RAM (8GB+ recommended)
- 8-10GB disk space (more with data files)
Choose your setup method:
Option 1: Docker Hub Images (5 minutes - Easiest)
docker-compose up -f ./docker-compose.remote-pull.yaml -d๐ Full guide โ
Option 2: Build Locally (30 minutes)
docker-compose up -d๐ Full guide โ
Option 3: Manual Development (Advanced)
- Backend:
cd python_backend_api && python -m venv venv && source venv/bin/activate && pip install -r requirements.txt - Frontend:
cd react_frontend_ui && npm install && npm start
๐ Full guide โ
- Frontend: http://localhost:3000
- API Docs: http://localhost:8000/docs
- Check status:
docker-compose ps
All documentation is in the docs/ folder:
| Document | Purpose |
|---|---|
| COMPLETE_REFERENCE | Additional information |
| PRESENTATION_SLIDES | Presentation Slides |
| INSTALLATION_DOCKER_HUB.md | Quick setup with pre-built images |
| INSTALLATION_LOCAL.md | Local build & development setup |
| SYSTEMS.md | Wayne, Stark, Croft, Butcher, Gray explained |
| TROUBLESHOOTING.md | Known issues & solutions |
| DOCKER_COMMANDS.md | Docker command reference |
| FILE_STRUCTURE.md | Detailed directory guide |
- Search: Enter book (e.g., "book name")
- Browse: See results with explanations
- Filter: Apply facet filters (genre, color, etc.)
- Interact: Hover over results to provide feedback
- Explore: Click for detailed explanations
- Content-Based: Search visual & textual features
- Explainable: Understand why results appear
- Personalized: System learns from your interactions
- Comparable: Side-by-side book comparisons
- Faceted: Rich filtering options
- The facet control filter switch is sometimes finicky and needs 2-3 clicks to toggle properly. This is a known bug of the research implementation.
- If you hover on same book twice, then you may see different set of keywords. This is because we have mined multiple keywords based on 5W(Who/When/What/Why/Where)1H(How). Keywords shown randomly across each category.
Select from Wayne, Stark, Croft, Butcher, Gray, or BM25:
- Wayne โญ (Recommended) - Full features
- Stark - Test comparison quality
- Croft - Test explanation quality
- Butcher - Baseline (no personalization)
- Gray - Random personalization control
- BM25 ๐ (Added April 10 2026) - Probabilistic text ranking + free-text search
BM25 variant note (April 10 2026): A BM25-based search variant was added alongside a free-text search capability. Unlike all other variants which require selecting a book as the query, any variant can now accept raw text input in the search bar (e.g. "batman detective crime") โ results are powered by BM25 ranking. The BM25 variant additionally uses BM25 for query-by-example book-click searches, replacing TF-IDF cosine similarity.
๐ System Details โ
Interactive API docs available at http://localhost:8000/docs (Swagger UI)
| Endpoint | Method | Used By | Description |
|---|---|---|---|
/book_search |
POST | Wayne, Stark, Croft | Book-click search with personalization & reranking |
/book_search_with_no_personalization |
POST | Butcher | Book-click search, no personalization |
/book_search_with_random_serp_results |
POST | Gray | Book-click search, random reranking |
/book_search_with_random_explanation_feedback |
POST | Croft | Book-click search, random explanation |
/book_search_with_bm25 |
POST | BM25 | Book-click search using BM25 probabilistic ranking |
| Endpoint | Method | Used By | Description |
|---|---|---|---|
/book_search_with_searchbar_inputs |
POST | Wayne, Stark, Croft, Butcher | Search bar (book select or free-text via BM25) |
/book_search_with_searchbar_inputs_and_random_serp |
POST | Gray | Search bar with random reranking (or free-text via BM25) |
/book_search_with_bm25_searchbar |
POST | BM25 | Search bar with BM25 for both book-select and free-text |
Free-text search (all variants): All searchbar endpoints accept
type: "free text"queries โ BM25 is used as the engine, all facet weights default to 1.0, and a random explanation is generated.
| Endpoint | Method | Description |
|---|---|---|
/local_explanation |
POST | Explain similarity between two books |
/compare_books |
POST | Compare two books with explanation |
/compare_books_with_random |
POST | Compare two books, randomized explanation (Stark) |
/view_comic_book |
GET | Get full book details |
/start_session |
GET | Create new user session |
Due to size (~1.5GB), are also provided separately to help local builds. If you are using dockerhub based docker images then this is not necessary for you as images and feature vector files are already included inside docker image on hub.
โ Comic Book Covers (~1700+ JPEGs, 1GB)
โ Download from: https://1drv.ms/u/c/ca9d6b4b08cafad5/IQAOXakqjpCoT6uoGtMJDYJ7AZ49rat6QJoCWk2XH8jpakI?e=hYwPQE
โ Extract to: react_frontend_ui/public/comic_book_covers_ui/
โ Metadata Files (CSV/XLSX, 300MB)
โ Download from: https://1drv.ms/u/c/ca9d6b4b08cafad5/IQB5sn0zhH3PR4AxnKQsWkfbASejNBIrv0a4Ra-2lRGH8pk?e=3nR3pi
โ Extract to: python_backend_api/data/metadata/
See DOCKER_OPTIMIZATION_GUIDE.md for details.
- Setup issues? โ TROUBLESHOOTING.md
- Docker commands? โ DOCKER_COMMANDS.md
- System selection? โ SYSTEMS.md
- File structure? โ FILE_STRUCTURE.md
@article{escomic_2026,
title={ESCOMIC: User Adaptive Explainable Search for Comic Books},
author={Suraj Shashidhar, Sayantan Polley, Mounit Roy, Andreas Nurnberger},
journal={SIGIR 2026},
year={2026}
}- ๐ TROUBLESHOOTING.md
- ๐ Create an issue on GitHub
- ๐ง Contact maintainers