WABS - v1.0.0
WABS v1.0.0
We are thrilled to announce the official v1.0.0 stable release of WABS! This milestone release represents months of optimization, architectural modularity, performance enhancements, and the addition of major features like offline OCR, system tray execution, automatic startup launch, and advanced hardware acceleration.
🚀 Key Highlights & Major Features
🔍 Offline OCR (Optical Character Recognition) Integration
WABS now features fully local, offline RapidOCR text extraction powered by PaddleOCR models (paddleOCR_det.onnx, paddleOCR_rec.onnx).
- Full-Text Search (FTS5): Text from images, photos, and scanned PDFs is automatically extracted and indexed into SQLite's FTS5 engine, making receipts, invoices, screenshots, and documents instantly searchable.
- Smart Photo Filtering (
ocr_only_no_ai_tags): Prevents scanning family or scenic photos by automatically skipping OCR on files with detected faces/objects (enabled by default), drastically optimizing database size and scan time. - Scale-On-Decode (OCR): Large images (>3000px) are decoded at 1/2 size using OpenCV's scale-on-decode capabilities to save substantial memory and CPU/GPU cycles.
- Image Scaling Safety: Automatically skips OCR on extremely small images (<20px) and pads tiny photos (<150px) to prevent PaddleOCR engine upscaling crashes.
⚙️ Hardware & GPU Acceleration
Unleash the full speed of your hardware:
- ONNX DirectML & CUDA support: Automatic detection and configuration of GPU acceleration. On Windows, execution is routed to DirectML (
DmlExecutionProvider) and CUDA if present, falling back gracefully to CPU. - OpenCV DNN OpenCL target: Activates OpenCL (
cv2.ocl.haveOpenCL()) for DNN model operations when no CUDA-compatible card is found. - GPU Stability Fallback: WABS performs self-check test runs for the Face Detector, Face Recognizer, and Object Classifier on startup. If a GPU driver error occurs, it dynamically falls back to CPU to ensure uninterrupted service.
📦 Optimized Memory Management & Startup
- Lazy Deferred Imports: Startup time has been slashed from ~8 seconds to under 2 seconds by deferring heavy imports (OpenCV, fitz, docx, mutagen, etc.) to runtime execution.
- Idle Memory Monitor: A background thread monitors application idle states. It automatically unloads unused libraries from the Python module cache and vacuums SQLite caches when inactive, releasing memory on a configurable timer (5m, 10m, 30m, 1h).
- Single-Decode Pipeline: Loads and decodes image files exactly once, reusing the same memory-mapped representation for Face, Object, and OCR detectors.
🖥️ Desktop Integration
- System Tray (Taskbar) Support: WABS now runs as a system tray app using
pystray. Right-clicking the tray icon lets you open the dashboard, open Settings, or gracefully shutdown the backend. - Auto Run on Startup: Configurable toggle to automatically launch WABS on user login in background mode (hidden terminal console and
--no-browser) for Windows (Registry startup keys) and Linux (XDG autostart entry).
🛠 Bug Fixes, Refinements & Build Assets
- EXIF Portrait Photo Rotation: Portrait photos are rotated natively inside OpenCV based on their EXIF orientation headers, improving detection rates for YuNet face models and PaddleOCR.
- Vectorized Face Similarity: Stacked face embeddings into a 2D NumPy array to perform matrix-vector dot products via
np.dotin matching loops, accelerating face-search routines. - In-Memory Batch Buffering: Newly found face clusters are buffered in-memory (
new_embs/new_ids) during scanner runs, allowing subsequent photos in the same batch to be matched against them immediately without hitting the database. - Custom PyInstaller Build Spec: Introduced
WABS-Windows.exe.specto slim down the compiled Windows installer by excluding unused large libraries (likepyarrowandtzdata) while bundling resources properly. - Cleaner Diagnostics: Added user-friendly log reports when scanning or indexing backup paths and when invalid roots are encountered.
Full Changelog against v1.0.0-beta.8: v1.0.0-beta.8...v1.0.0