This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady.
I often save screenshots of things I find interesting or useful, and too often it’s like collecting Pokémon cards & forgetting about them later amongst the pile of screenshots!
So I built ScreenArch to help me find those screenshots again.
What it does
ScreenArch scans a folder of screenshots, reads the text in them with OCR, and lets me search that text. I can also ask a local Gemma model to suggest categories. For example:
Sort screenshots into Job Search, Engineering, Content Creation, and Miscellaneous.
The model only gets the OCR text and basic file details, not the screenshot itself. It suggests a category and gives a reason and a quote from the text.
I can change a category and approve files myself before organizing them. Copy is selected by default, so the originals stay put. Moving files is an option, but it needs a separate confirmation.
Demo
Code
The README has the setup instructions. The app, OCR index, and database run locally, as does the Ollama model used for classification.
How I built it
The main pieces are Python and Streamlit for the app, Tesseract for OCR, SQLite for storing the index and results, and Ollama running Gemma 3 4B locally.
The flow is simple: scan a folder, extract and save the text, then search it or ask Gemma to suggest categories. ScreenArch checks that the model’s category is one I asked for and that its evidence appears in the OCR text. It saves the results, so running the same prompt again on unchanged screenshots can use the cached results. There’s also an option to run classification again.
I tried it on my own screenshots. One run over seven images took about 313 seconds on my machine. Definitely not instant. The model also leaned too heavily on one category in a run, even though the labels were restricted. I had to correct some results myself. That’s why I wanted approval to stay in the user’s hands.
Why run it locally?
Screenshots can contain personal conversations, financial details, schoolwork, or work material. I didn’t want to send that content to a hosted AI service.
ScreenArch sends OCR text and basic metadata to my local Ollama service. The image pixels don’t go to the model. The downside is that setup takes a little work, and speed depends on your computer.
Keeping the user in control
The model makes suggestions; it doesn’t get the final say. I can check the reason and evidence, change a category, and approve files one at a time. Anything I don’t approve stays untouched.
I don’t have a reliable time-saving number yet, so I won’t pretend I do. I’ve tested it on my own screenshots, but I’d like to try it on a bigger collection and see how useful it is in day-to-day use.
Building with Copilot
I used GitHub Copilot while building and debugging ScreenArch. It helped me work through the classification flow, storage, progress reporting, organization, and tests. I still had to run the app, check what the model actually did, and test the fixes.
The most useful part was being able to iterate, then verify the changes against the app and my own files.
What I might add next
I’d like to explore image understanding for screenshots where OCR isn’t enough, search by meaning, and maybe a safe way to find redundant screenshots on a phone. Those are ideas for later, not features in this version.
Prize categories
- Best Use of Gemma
- Best Use of GitHub Copilot
If you’ve got a screenshot graveyard too, give ScreenArch a try and let me know what you think. 😄
Had fun building this. Thanks to DEV and the Hacktoberfest community for the opportunity!
Signing off for now,
Parth :)
Top comments (0)