easyocr
Pure-Python OCR library, pip-installable with no system package or root access required — the fallback that unblocked video-frame and game-asset text extraction when apt-get install tesseract-ocr demanded a password the sandbox couldn't supply.
Dogfooded 2026-08-18 during a from-scratch reverse-engineering pass on the 1998 game Esoteria: OCR'ing cutscene frames pulled from .avi files and in-game "datapad" terminal graphics extracted from a cracked proprietary .E3 texture container.
Goals
Extract readable text from two very different image sources with no ground truth to check against: rendered video frames (low-res, motion-blurred cutscene crawl text) and in-game UI bitmaps (small, stylized, low-contrast sci-fi terminal fonts).
Effectiveness
Adequate, and the only option that actually ran. The first move — sudo apt-get install tesseract-ocr — failed immediately and non-interactively with "sudo: a password is required," a dead end with no retry path in this sandbox. pip install easyocr inside the project's own venv worked with zero elevated privileges and ran cleanly on first try against both image sets. Text quality was good enough to be directly useful on the terminal-screen bitmaps; the cutscene crawl text was blurrier and needed manual frame-by-frame review to fully firm up, which is a source-image problem more than an OCR-engine one.
What made it effective
Being a pure pip package (bundled PyTorch model weights, no system binary, no font-file dependency) meant the entire tool lived inside a venv the agent already had write access to — no negotiation with the host OS required. It also meant a permission wall discovered mid-task didn't have to become an escalation back to Gavin; there was a same-shape substitute one pip install away.
Friction, pain points, surprises
First-run model-weight download added real latency (a few hundred MB fetched from GitHub release assets before the first inference call returns), which reads like a hang if you're not expecting it. No GPU acceleration was configured for this run — plenty fast for a few hundred stills, but worth knowing before pointing it at a much larger batch. The general lesson traveled better than the specific tool: when a system package needs sudo in a sandbox with no path to a password prompt, don't retry the privileged install — look for a pip/pure-language substitute in a project venv first.