This site is still being tuned — check back soon for more.
← Projects
Research & Product · 2026

Pokémon Card Scanner & Pricing Tool

Photograph a Pokémon card, get its identity and live market price back — computer vision pipeline with a locally fine-tuned EfficientNet model.

Photograph a Pokémon card and get its identity and live market price back. The identification pipeline runs in two tiers: a vision-language model (Gemini, or a local Ollama model like qwen2.5vl when running offline) reads the card name, set number, and HP directly from the photo in a single pass; if that's unavailable or returns a partial read, it falls back to EasyOCR against a normalized crop of the card, with separate passes tuned for the name region and the set-number region since holographic foil breaks OCR confidence differently in each. Card detection itself uses classical CV first — Canny edge detection into a perspective warp to isolate the card rectangle, then an HSV color-border mask as a fallback when edges are unclear — followed by a 4-rotation pass to auto-correct orientation before OCR ever runs. Separately, I trained and fine-tuned an EfficientNet model locally as an image embedder: it turns a card photo into a feature vector and matches it against known card embeddings by similarity, which catches cases OCR alone can't — heavy glare, off-angle shots, foil distortion. Matched cards get priced via the Pokémon TCG API, with the result page showing exactly what the OCR read (raw text, parsed query, matched card) so the pipeline stays debuggable instead of a black box. Not deployed yet — still training and testing locally.

Django Python PyTorch EfficientNet EasyOCR Gemini Vision API