OCR List Maker
Snap a photo of a handwritten list, OCR it with a local vision model, and print a formatted checklist on a thermal receipt printer.
This one came from a very specific workflow: I write grocery lists by hand, and I wanted to turn them into nicely formatted checklists printed on my Rongta thermal receipt printer. Take a photo, get a checklist with checkboxes, printed on a little strip of receipt paper I can take to the store.
The Pipeline
The system is a small FastAPI server that chains two things together:
-
OCR via a local vision model — send an image (upload, URL, or local path) and a vision-capable model running on llama.cpp extracts a JSON list of items from it. The prompt constrains the model to return
{"items": ["..."]}and nothing else. -
Formatted printing via the Rongta API — the extracted items get assembled into a checklist print job with a title, checkboxes, optional icon, and configurable fonts/sizes. The job gets sent to my Rongta printer’s HTTP API, which renders and prints it.
There’s a debug mode that renders the checklist as an image instead of printing, so you can preview the layout in a browser before wasting paper.
Why This Exists
It’s a dumb project and I love it. There’s something satisfying about the physical output — a handwritten scrawl goes in, a clean formatted checklist comes out on thermal paper. The whole round trip takes a few seconds with a local model, and it works entirely offline.
The Rongta printer integration is the part that makes it feel real. Receipt printers are underrated as output devices for local AI projects. They’re cheap, fast, silent, and the output is tangible in a way that a screen isn’t.