Captcha solver: the deployment-only half of a neural net pair
A serving layer for CNN+BLSTM+CTC captcha models that auto-loads new configs and speaks HTTP or gRPC.

What it does
This is the inference side of a two-repo captcha-cracking system. You bring a trained TensorFlow model (.pb file plus YAML config), drop it in the right folders, and get a REST or gRPC service that returns text from base64-encoded captcha images. The server auto-discovers models on startup and reloads when you add new configs.
The interesting bit
The model management is deliberately low-tech: add a YAML to model/ and a .pb to graph/ to load; delete both to unload; bump the version number in YAML to hot-swap. No database, no registry, just filesystem watching. The README also notes you must star the repo before using it — the SATA license (“Star And Thank Author”) enforces this socially rather than legally.
Key highlights
- Supports four server backends: Tornado (default, port 19952), Flask, Sanic, and gRPC (port 50054)
- CPU-only by default; GPU requires hand-editing
requirements.txtto swaptensorflow→tensorflow-gpu - Python 3.9 required; includes
demo.pyfor local prediction without standing up a server - Auto-loads all models in config; no restart needed for additions or version bumps
- Training happens in sibling repo
captcha_trainer; this repo is strictly deployment
Caveats
- Windows deployment docs are incomplete: “
python xxx_server.py” leaves the actual filename as an exercise - The gRPC proto regeneration command is documented but not explained — you’ll need
grpcio-toolsinstalled separately - No mention of concurrency limits, request size caps, or authentication in any server variant
Verdict
Worth a look if you’ve already trained a captcha model with the companion repo and need a quick serving layer. Skip it if you want training, monitoring, or anything beyond “receive image, return string.”