A local AI utility for cleaning up whiteboard photographs using image-to-image processing models via Replicate.
Whiteboard Processor transforms messy whiteboard photos into clean, professional diagrams. It uses various image generation models through Replicate's API to redraw whiteboard content with:
- Clean white backgrounds (no glare or reflections)
- Legible, clear text
- Professional lines, arrows, and shapes
- Preserved layout and spatial relationships
- CLI-based workflow - Drop images into a queue folder and process them interactively
- Multiple model support - Switch between different image models (FLUX, Qwen, Google Nano-Banana)
- Evaluation framework - Compare model outputs side-by-side to find the best results
- Batch processing - Process multiple whiteboard images in one run
cd app
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtCreate a .env file in the project root with your Replicate API key:
REPLICATE_API_KEY=your_key_here
# Run the processor
./run.sh
# Or directly with Python
cd app && python process_whiteboard.py
# Specify a model
python process_whiteboard.py -m nano-banana-pro
# List available models
python process_whiteboard.py --list-modelsPlace whiteboard images in images/originals/queue/<folder-name>/ and run the processor. Enhanced outputs are saved to images/enhanced/.
The tool currently includes configurations for:
nano-banana- Google Gemini 2.5 Flash (default, fast)nano-banana-pro- Google Gemini 3 Pro (highest quality)flux-kontext-pro- FLUX Kontext Proflux-1.1-pro- FLUX 1.1 Proqwen-image-edit- Qwen Image Editqwen-image-edit-plus- Qwen Image Edit Plus
Note: Image generation models evolve rapidly. The current model selection will likely become outdated. Swap in newer/better models as they become available on Replicate by editing the MODELS dict in app/process_whiteboard.py.
An evaluation script is included to compare model outputs:
cd eval
python run_eval.pyPlace test images in eval/source/ and the script will run them through all configured models, saving results to timestamped folders in eval/runs/.
Original whiteboard with text annotations:
Pseudotext: high Misinterpretation of system prompt
No pseudotext - excellent replication of handwriting
Pseudotext: Clawpe could have been inferred around. Followed colorisation instruction.
Best Overall
Inferred Claude from Clawpe (non-Pro version didn't!)
Highest level of pseudotext in any of the models
MIT







