Small app that indexes PDFs and scanned images, and allow you to do a text search over them, there are 2 binaries available for each OS, the *-ocr version is slower and more resource intensive, so if you don't have PDFs or scanned images and instead just normal document PDF avoid it.
Download
Grab the latest build from the Releases page
| OS | Non-OCR (default) | OCR |
|---|---|---|
| Linux (x86-64) | docs-search-linux-amd64.zip |
docs-search-linux-amd64-ocr.zip |
| macOS (Apple Silicon) | docs-search-darwin-arm64.zip |
docs-search-darwin-arm64-ocr.zip |
| macOS (Intel) | docs-search-darwin-amd64.zip |
docs-search-darwin-amd64-ocr.zip |
| Windows (x86-64) | docs-search-windows-amd64.zip |
docs-search-windows-amd64-ocr.zip (experimental) |
Choose OCR only if your PDFs are scanned/image-only or you want to search inside image files (see OCR below).
Binaries are unsigned, so the first launch needs the one-time step noted below.
Run
Linux
unzip docs-search-linux-amd64.zip chmod +x docs-search-fyne ./docs-search-fyne
macOS
unzip docs-search-darwin-arm64.zip
xattr -dr com.apple.quarantine docs-search-fyne # clear the "unidentified developer" flag
./docs-search-fyneOr right-click the binary → Open the first time and confirm.
Windows
Unzip and double-click docs-search-fyne.exe. For the OCR build, keep the bundled *.dll files and the tessdata folder next to the .exe.
Requirements for the OCR build
The OCR build needs Tesseract and at least one language pack installed at runtime. Install the language packs that match your documents.
| OS | Install |
|---|---|
| Linux | sudo apt install tesseract-ocr tesseract-ocr-eng tesseract-ocr-ara, tesseract-ocr-chi-sim |
| macOS | brew install tesseract tesseract-lang (installs Tesseract + all language data) |
| Windows | The zip already bundles the Tesseract DLLs and an English tessdata/ keep them next to the .exe. For more languages, install Tesseract (UB Mannheim) and point TESSDATA_PREFIX at its tessdata. |
If Tesseract (or any language data) is missing, the OCR build will report an error instead of indexing. The non-OCR build never touches Tesseract.
Windows OCR is experimental, if you need OCR on Windows and the artifact isn't there, build from source.
Build from source
Requires Go 1.26+ and a C toolchain (the GUI uses OpenGL via cgo).
Install the build dependencies:
- Linux:
gcc pkg-config libgl1-mesa-dev xorg-dev libxkbcommon-dev, OCR alsog++ libtesseract-dev libleptonica-dev tesseract-ocr tesseract-ocr-eng - macOS: Xcode Command Line Tools (
xcode-select --install), for OCR alsobrew install tesseract leptonica - Windows: MSYS2 with
mingw-w64-x86_64-gcc, for OCR alsomingw-w64-x86_64-tesseract-ocr
Then build the app:
# non-OCR (self-contained) go build -o docs-search-fyne ./cmd/ui # OCR (links Tesseract; on Apple Silicon add: # CGO_CPPFLAGS=-I/opt/homebrew/include CGO_LDFLAGS=-L/opt/homebrew/lib ) go build -tags ocr -o docs-search-fyne-ocr ./cmd/ui
There's also a CGO-free command-line tool that prints matches as JSON:
go build -o docs-search . ./docs-search -q "your query" /path/to/folder
Acknowledgements
docs-search is built on these open-source projects:
- Fyne (BSD-3-Clause) — the desktop GUI toolkit.
- Bleve (Apache-2.0) — the full-text search index.
- PDFium (BSD-3-Clause, © The Chromium Authors) via go-pdfium (MIT) — PDF text extraction and page rendering.
- wazero (Apache-2.0) — the pure-Go WebAssembly runtime that runs PDFium (so the non-OCR build needs no native PDF library).
- Tesseract (Apache-2.0) with
Leptonica (BSD-2-Clause), via
gosseract (MIT) — OCR in the
-ocrbuilds. - golang.org/x/image (BSD-3-Clause) — image format decoders.
Full license texts for every bundled dependency (direct and transitive) are in THIRD_PARTY_LICENSES.md.
Thanks to their authors and contributors.