Dwight P. ThompsonAgentic Systems & AI Engineering

ScanReady — Document Image Quality Gate

Project overview.

/projects/scan-ready
Project
CAP415 Computer Vision — final project
Status
Complete. Submitted September 28, 2026.
Technologies
Python 3.11, OpenCV, NumPy, Pillow, pypdfium2, Streamlit, pytest, Conda

Summary

I built ScanReady as a modular, local-first utility for the agentic autonomous development control plane I’m building: a component its autonomous workflows can call to check document images before they’re used. It was also my final project for CAP415 Computer Vision. With a seven-day lead time, I didn’t want a throwaway project just for a grade. I wanted something I could keep optimizing after the class and grow into my portfolio’s hero project.

ScanReady checks a scanned or photographed document before it’s used. Upload a JPEG, PNG or PDF and it checks for blur, skew, glare, shadow, low contrast and cropped edges, then returns one decision: READY, READY AFTER CORRECTION or RETRY CAPTURE. Every decision comes with labeled evidence on the image and plain-language next steps. Where a fix is safe (straightening, lighting, contrast), it offers it, applies it to a copy, and re-checks.

It runs entirely on your own computer. One script per platform sets up a bundled Python environment, with no install and no administrator rights. Bundles exist for Windows, macOS (Intel and Apple Silicon) and Linux. Everything is classical OpenCV, with no deep learning.

The project was also a test of a way of building. It was built across several AI models (OpenAI Codex models, Claude Code models and a local model), handed off through sprint sheets and progress logs so each one could pick up where the last left off. See How it was built in the documentation.

The evaluation is reported as it came out: 61.7% accuracy on 47 held-out scans, below the 80% bar the project set for itself. The shortfall is disclosed in the app and the README rather than tuned away.

Code: github.com/mr9t3n/ScanReady · Download: ScanReady 1.0 release

Sections