Images are hard to organize, and sometimes it's easier to screenshot text to keep records. We needed a tool to sort images, much like
grep does with plain-text.
Probable use-cases include finding records of particular lecture slides, notes, conversations, etc.
What it does
On the command-line
imgrep uses tesseract-ocr to lift text out of images, and find files that match user queries. File listings are printed to
stdout so it can be used in shell-scripts.
To install, first install the tesseract-ocr dev packages then run
go get github.com/keeferrourke/imgrep go install github.com/keeferrourke/imgrep
Perform searches in your current working directory by running
imgrep s -n QUERY
In the browser
imgrep via a search-based web ui; enter keywords and watch as images from your hard disk show up in the results!
To install and start:
go get github.com/keeferrourke/imgrep-web go install github.com/keeferrourke/imgrep-web imgrep-web start &
Then visit this super awesome URI in your favourite browser:
How we built it
imgrep by leveraging the power of an Infinity Stone: the Tesseract!
imgrep is a go-cli app. It's built using Unix philosophies of program design, and works as an effective command-line tool through Unix pipes.
Challenges we ran into
Coming up with a viable hack is hard
After discovering that the Oculus Rift doesn't really support Unixes (sad-reacts only), we had to pivot. We pivoted four times before we came up with
imgrep. After that the code just flowed.
OCR is kind of slow, so we made
imgrep fast by caching the results of Tesseract OCR's processing in a small sqlite database.
Accomplishments that we're proud of
- We built a useful utility which feels at home in the shell.
- We bundled a web server and familiar search-based web interface, so that average users need not know the shell is even there
What we learned
- Tesseract is awesome
What's next for imgrep
- Flexible configuration
- Auto-indexing of files (currently
imgrep initmust be called to index new directory trees)
- Better web-ui
- Efficiency ™