FindDocs
Lokalna wyszukiwarka dokumentów korporacyjnych dla Windows 11. Indeksuje dokumenty z SharePointa i z katalogów lokalnych, a następnie pozwala je przeszukiwać dokładnie, semantycznie i hybrydowo. Wszystko dzieje się na komputerze użytkownika: dokumenty, zapytania i embeddingi nie opuszczają maszyny.
Co to potrafi
- Wyszukiwanie dokładne zwraca wszystkie dokumenty zawierające podane słowo,
frazę, nazwisko, datę, kwotę lub numer rachunku. Bez ukrytego limitu wyników.
Numer
00 1234 5678 9012 3456 7890 1234,00-1234-...i zapis ciągły trafiają w te same dokumenty. Data24.07.2015,2015-07-24i24 lipca 2015również. - Wyszukiwanie semantyczne znajduje dokumenty powiązane znaczeniowo, nawet jeśli nie zawierają tych samych słów. Model jest polski i działa na CPU.
- Wyszukiwanie hybrydowe łączy oba podejścia metodą Reciprocal Rank Fusion, zachowując wartości dosłowne z zapytania jako warunek obowiązkowy.
- OCR uruchamiany tylko wtedy, gdy dokument nie ma użytecznej warstwy tekstowej. Wynik jest oznaczany, żeby dało się odróżnić go od tekstu natywnego.
- Raport pokrycia pokazuje, czego nie udało się zaindeksować i dlaczego. Jeśli choć jeden dokument jest niewyszukiwalny, aplikacja nie twierdzi, że zbiór jest kompletny.
Obsługiwane formaty
PDF (z warstwą tekstową i skanowany), DOCX, DOC, XLSX, XLS, CSV, TSV, TXT, HTML, RTF, EML, MSG wraz z załącznikami, PNG, JPEG, TIFF, BMP, GIF, WEBP.
Szczegóły, poziom wsparcia i ograniczenia każdego formatu: docs/formaty.md.
Instalacja dla użytkownika
Uruchom instalator FindDocs-0.3.1-instalator.exe. Instalacja nie wymaga
uprawnień administratora. Po zakończeniu aplikacja jest dostępna w menu Start.
Nie trzeba uruchamiać żadnego serwera ani wpisywać adresu w przeglądarce.
Pełna instrukcja: docs/instrukcja-uzytkownika.md.
Instalacja przez pip
Wymagany Python od 3.11 do 3.14 na Windows 11.
pip install finddocs
Silnik OCR jest opcjonalny i instaluje się jako dodatek:
pip install "finddocs[ocr-rapid]"
Dodatek all instaluje komplet dla samodzielnego stanowiska: silnik OCR
oraz narzędzia importu i konwersji modeli embeddingów:
pip install "finddocs[all]"
Typowe stanowiska instaluje się jedną nazwą presetu:
| Preset | Przeznaczenie |
|---|---|
preset-standard |
stanowisko biurowe: obliczenia na CPU, OCR skanów |
preset-gpu |
dowolna karta graficzna na Windows (DirectML), OCR |
preset-nvidia |
karta NVIDIA: embeddingi przez CUDA, OCR |
preset-server |
indeksowanie do wspólnej bazy PostgreSQL (pgvector), OCR |
Przykład dla stanowiska z kartą NVIDIA; presety z GPU wymagają drugiego polecenia, które przywraca wariant GPU pakietu onnxruntime:
pip install "finddocs[preset-nvidia]"
pip install --force-reinstall --no-deps onnxruntime-gpu
Opis presetów, wymagań i wydajności GPU: docs/instalacja-pip.md oraz docs/embeddingi-gpu-api.md.
Po instalacji polecenie finddocs-gui uruchamia interfejs graficzny,
a finddocs daje dostęp do poleceń administracyjnych. Wyszukiwanie dokładne
działa od razu. Wyszukiwanie semantyczne i hybrydowe wymaga lokalnego modelu
embeddingów, który instaluje jedno polecenie (za jawną zgodą pobiera model
z Hugging Face i konwertuje do ONNX):
finddocs model import --use
Polecenie finddocs model import przyjmuje też katalog z własnym modelem albo
dowolne repozytorium Hugging Face. Pełny opis instalacji, konfiguracji i modeli:
docs/instalacja-pip.md.
Wektory fragmentów mogą opcjonalnie trafiać do bazy PostgreSQL z rozszerzeniem
pgvector zamiast do pliku lokalnego (dodatek finddocs[pgvector], włączany
świadomie w ustawieniach). Opis i zasady bezpieczeństwa:
docs/baza-wektorowa.md.
Rozpoznawanie tekstu ze skanów działa domyślnie na procesorze. Przy dużych
zbiorach skanów można je oddać serwerowi z kartą graficzną (model
PP-OCRv6_medium, gotowy kontener w deploy/ppocr). Funkcja jest domyślnie
wyłączona, bo wysyła obrazy stron poza komputer. Opis:
docs/ocr-gpu-api.md.
Szybki start bez SharePointa
Aplikacja ma wbudowany zbiór demonstracyjny z fikcyjnymi polskimi dokumentami. Na ekranie Źródła i konfiguracja naciśnij Zbiór demonstracyjny, potem przejdź na ekran Indeksowanie i naciśnij Skanuj źródła. Po chwili można wyszukiwać.
To samo z wiersza poleceń:
finddocs demo --register
finddocs index
finddocs search "procedura przelewów 24.07.2015"
Uruchomienie developerskie
Wymagany Python od 3.11 do 3.14 na Windows 11.
py -3.11 -m venv .venv
.venv\Scripts\python.exe -m pip install -e ".[dev,ocr-rapid]"
Model embeddingów pobiera się raz z Hugging Face i eksportuje do ONNX:
git clone https://huggingface.co/sdadas/mmlw-retrieval-roberta-base models/mmlw-retrieval-roberta-base
.venv\Scripts\python.exe -m pip install torch transformers onnx onnxscript
.venv\Scripts\python.exe tools/export_model_onnx.py models/mmlw-retrieval-roberta-base --quantize
Uruchomienie interfejsu:
.venv\Scripts\python.exe -m finddocs.gui
Uruchomienie poleceń administracyjnych:
.venv\Scripts\python.exe -m finddocs --help
Kontrola jakości
.venv\Scripts\python.exe -m ruff check src tests packaging tools
.venv\Scripts\python.exe -m ruff format --check src tests packaging tools
.venv\Scripts\python.exe -m mypy src
.venv\Scripts\python.exe -m pytest -q
Budowanie pakietu i instalatora
.venv\Scripts\python.exe packaging/build_app.py --with-model
.venv\Scripts\python.exe packaging/build_installer.py
Pierwsze polecenie tworzy katalog packaging/output/FindDocs z plikiem
wykonywalnym i wykonuje test dymny. Drugie buduje instalator przy pomocy
Inno Setup 6. Gdy Inno Setup nie jest zainstalowany, skrypt wypisuje instrukcję
instalacji zamiast kończyć pracę bez komunikatu.
Rozmiary wyniku: 409 MB bez modelu, 534 MB z modelem w wersji INT8,
191 MB dla samego instalatora. Przełącznik --full-precision-model dokłada
wagi FP32, co powiększa pakiet o około 470 MB i nie jest potrzebne do
domyślnej konfiguracji.
Architektura w skrócie
connectors -> extractors / ocr -> normalization / chunking -> indexing
|
search <--------+
|
jobs -+-> gui
- metadane, fragmenty i indeks pełnotekstowy: SQLite w trybie WAL z FTS5 w wariancie external content;
- indeks wektorowy: FAISS HNSW z mapą identyfikatorów, usunięcia przez nagrobki i okresową kompaktację;
- embeddingi: ONNX Runtime na CPU, opcjonalnie na karcie graficznej (DirectML
albo CUDA), model
sdadas/mmlw-retrieval-roberta-base(Apache-2.0, 768 wymiarów, pooling CLS); - interfejs: PySide6 (LGPL).
Szczegóły i diagramy: docs/architektura.md.
Dokumentacja
| Dokument | Zawartość |
|---|---|
| Instrukcja użytkownika | obsługa aplikacji |
| Instalacja z PyPI | pip, presety instalacyjne, konfiguracja, lokalny model embeddingów |
| Embeddingi na GPU i zdalne API | DirectML i CUDA, batch, zdalny dostawca z kluczem API |
| Instrukcja administratora | wdrożenie, konfiguracja, CLI |
| Integracja z SharePoint | Microsoft Graph, Entra ID, uprawnienia |
| Architektura | warstwy, diagramy, decyzje |
| System wizualny | tokeny, kontrolki wspólne, reguły interfejsu |
| Schemat danych | tabele, kolumny, wersjonowanie |
| Odbudowa indeksu | przebudowa, kopie, kompaktacja |
| Aktualizacja | procedura aktualizacji |
| Diagnostyka | logi, kody błędów, typowe problemy |
| Formaty | obsługiwane formaty i poziomy wsparcia |
| OCR | silniki, jakość, wydajność |
| OCR na GPU przez zdalne API | serwer PP-OCRv6 w kontenerze, konfiguracja, bezpieczeństwo |
| Znane ograniczenia | czego aplikacja nie robi |
| Raport bezpieczeństwa | model zagrożeń i kontrole |
| Raport PoC | porównanie modeli i pomiary |
| Raport testów | zakres i wyniki testów |
| Licencje | komponenty i licencje, SBOM w sbom.cdx.json |
| Plan RAG i GPU | przyszły rozwój |
| ADR | decyzje architektoniczne |
Prywatność
Aplikacja nie zawiera telemetrii. Domyślnie cały ruch wychodzący jest zablokowany. Połączenia z Microsoft Graph włączają się dopiero po skonfigurowaniu źródła SharePoint, a pobieranie modelu wymaga osobnej zgody. Lista dozwolonych adresów jest wpisana w kod i widoczna na ekranie Diagnostyka.
Indeks zawiera treść dokumentów, więc katalog %LOCALAPPDATA%\FindDocs podlega
tej samej klauzuli poufności co dokumenty źródłowe.
Licencja
Kod aplikacji: licencja MIT, patrz LICENSE. Licencje komponentów i modeli: docs/licencje.md.
Metadata
Release files for finddocs 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| finddocs-0.3.1.tar.gz | 476.2 kB | With provenance | Details for finddocs-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| finddocs-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for finddocs-0.3.1-py3-none-any.whl |
Total release size: 1.1 MB
Release files / finddocs-0.3.1.tar.gz
| Download URL | finddocs-0.3.1.tar.gz |
|---|---|
| Size | 476.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c3756ec98838f8246d0bc6155027c6c6d613544b6cbe9e3f0747bedda7dee74e
|
|
BLAKE2b-256 checksum How to use checksums |
1939cc3890a175c35c9ddfd0564dd81e21b065ddced1e914889c1015c2a3d924
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logRelease files / finddocs-0.3.1-py3-none-any.whl
| Download URL | finddocs-0.3.1-py3-none-any.whl |
|---|---|
| Size | 604.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b696829ef669ea6f7da78b8962d8e76256e33f7fd203b0312cbc4d1895e2a031
|
|
BLAKE2b-256 checksum How to use checksums |
fed57d1d080363ffa69ca4ea6535bd5626a84ce3073616bd765f18fc597db74b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logSecurity for finddocs 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for finddocs-0.3.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.