Recollect scans images with Tesseract OCR, indexes extracted text in a local SQLite database (via Gom), and provides a fast search UI built with GTK4 and libadwaita.
- OCR-powered image text search: direct Tesseract C API, no CLI dependency
- Fast local search: SQLite database via Gom ORM
- List and grid view modes: toggle between compact results and thumbnail tiles
- Image preview sidebar: extracted OCR text and file properties at a glance
- Flexible search filters: fuzzy, case-sensitive, whole-word, and diacritics matching
- Sort by name or date: ascending or descending
- Date range filtering: narrow results by scan date
- Incremental file monitoring: folders are watched for changes and re-indexed automatically
- Downloadable language models: fast, balanced, and best Tesseract variants
- Onboarding wizard: guides first-time setup of folders and models
- Keyboard shortcuts: full shortcut reference available in-app (Ctrl+?)
- Background scanning: continues indexing even when the window is closed
- Internationalization: gettext-based translations
- 13 image formats supported: PNG, JPEG, TIFF, BMP, WebP, GIF, AVIF, HEIC/HEIF, JPEG XL, SVG
Recollect watches your chosen folders and runs each image through Tesseract OCR to extract its text. That text is stored in a local SQLite database, so searching is instant, with no re-scanning needed. When you type a query, Recollect matches against the indexed text and shows the matching images with a snippet of the recognized content.
Precompiled flatpak bundles are attached to each GitHub release. Download recollect.flatpak and install it:
flatpak install --user recollect.flatpaksudo pacman -S vala meson ninja gtk4 libadwaita sqlite tesseract \
glycin glycin-gtk4 json-glib libsoup3Other distributions: install the equivalent packages for each dependency.
A Gom-Vala fork is auto-fetched via meson wrap, so no manual setup is needed.
meson setup build --prefix="$HOME/.local"
meson compile -C build
meson install -C buildThe binary is installed to ~/.local/bin/recollect.
If you see this error at runtime, the dynamic linker can't find the Gom library. Rebuild with the rpath fix applied (already included if you're using the latest build files):
meson setup build --prefix="$HOME/.local" --reconfigure
meson compile -C build
meson install -C buildAlternatively, set LD_LIBRARY_PATH:
export LD_LIBRARY_PATH="$HOME/.local/lib:$LD_LIBRARY_PATH"
~/.local/bin/recollectIf meson setup fails with this error, it means the subprojects/gom-vala/
directory is missing its top-level meson.build. Ensure the repository includes
subprojects/gom-vala/meson.build and subprojects/gom-vala/gom/meson.build
with the correct include directory (pointing to '.', not '..').
Use a separate application ID (org.laine.Recollect.Devel) so development builds
don't interfere with the installed release:
meson configure build -Dprofile=development
meson compile -C buildSwitch back to the release profile with:
meson configure build -Dprofile=default
meson compile -C build| Flag | Description |
|---|---|
--reset |
Reset all settings to defaults |
--no-system-models |
Skip system Tesseract models; only use downloaded ones |
This program was written with the assistance of large language models (LLMs). The UI/UX design, visual layout, and application icon were created entirely by human effort (aka me, laine). OpenCode made working on this project a breeze, shoutout <3
Recollect is licensed under the GNU General Public License v3.0.