Apex Duplicate Analyzer User Guide
Apex Duplicate Analyzer User Guide
Complete operational manual for scanning photo archives, fine-tuning perceptual thresholds, isolating duplicates to reversible staging, and running private local AI vision queries[cite: 4].
1. What Is Apex Duplicate Analyzer?
Apex Duplicate Analyzer (branded by Cybertek Dynamics) is a Windows desktop application that scans a folder of photos, finds exact and near-duplicate images, lets you review them side-by-side, and safely removes the copies you don’t want to keep — either to a reversible .quarantine folder or straight to the Recycle Bin[cite: 4].
It also includes an optional local AI assistant (powered by a locally-running Ollama server) that can chat about your images and search your photo library using natural language[cite: 4].
2. Getting Started
2.1 Launching the App
Run app_gui.py (or the packaged ApexDuplicateAnalyzer.exe if you’re using the installer build)[cite: 4]. The main window opens with[cite: 4]:
- A top header bar showing the Apex logo and app name, and a Help menu[cite: 4].
- A left sidebar for scanning controls, cluster navigation, and bulk actions[cite: 4].
- A center workspace for side-by-side duplicate comparison[cite: 4].
- An optional AI Assistant dock on the right (hidden by default)[cite: 4].
2.2 Scanning for Duplicates
You have two ways to bring images into the app[cite: 4]:
| Action | Button | Behavior |
|---|---|---|
| Add specific files | Add Files | Opens a file picker; you can multi-select individual .jpg/.jpeg/.png/.webp files from anywhere[cite: 4]. |
| Scan an entire folder | Select Folder | Recursively walks every subfolder (skipping any .quarantine folder and hidden/dot folders) looking for supported image types[cite: 4]. |
While scanning:[cite: 4]
- A progress bar and status label in the sidebar show the current file being processed[cite: 4].
- Previously-scanned, unchanged files are read from a local cache (by file size + modified time) so re-scans are fast[cite: 4].
- Unreadable or corrupt files are skipped and logged rather than crashing the scan[cite: 4].
- A scan log panel at the bottom of the sidebar records progress and results[cite: 4].
2.3 Understanding the Similarity Slider
The Similarity slider (0–15) controls how “close” two images must be (in perceptual-hash distance) to be grouped as near-duplicates[cite: 4]:
- Lower values (closer to 0) require images to be nearly pixel-identical[cite: 4].
- Higher values (closer to 15) will group visually similar but not identical images (e.g. slightly cropped, recompressed, or edited versions)[cite: 4].
- Exact binary duplicates (identical file content) are always grouped together regardless of the slider[cite: 4].
2.4 Choosing an Auto-Keeper Rule
The Auto-Keeper Rule dropdown decides which file in a duplicate group is automatically recommended to keep[cite: 4]:
| Rule | Keeps the file with… |
|---|---|
| Highest Resolution (default) | The most total pixels (width × height)[cite: 4] |
| Largest File Size | The biggest file on disk[cite: 4] |
| Newest File | The most recently modified timestamp[cite: 4] |
| Oldest File | The oldest modified timestamp[cite: 4] |
You can always override the automatic choice manually per-cluster[cite: 4].
3. Reviewing Duplicate Clusters
Once a scan finishes, every group of duplicate/near-duplicate images appears as a numbered entry in the Clusters list in the sidebar, along with a count of files in that group[cite: 4].
Selecting a cluster loads it into the center workspace, which shows two cards side by side[cite: 4]:
- KEEPER (left) — the file currently recommended/selected to keep[cite: 4].
- DUPLICATE (right) — one of the other files in the group being compared against the keeper[cite: 4].
Each card displays the image preview, file name, resolution, file size, and — on the duplicate card — the perceptual hash distance from the keeper[cite: 4].
3.1 Navigating Within a Cluster
If a cluster has more than 2 files, use the Previous / Next controls to step through each duplicate one at a time against the current keeper[cite: 4].
3.2 Swapping the Keeper
If you prefer to keep the file currently shown as “Duplicate” instead of the auto-selected “Keeper”, simply click anywhere on the Duplicate card[cite: 4]. It becomes the new keeper for that cluster, and your choice is remembered even if you switch clusters and come back[cite: 4].
3.3 Image Preview Tools
Right-click (or double-click) any preview image for[cite: 4]:
- Open in Default Viewer — opens the file in your OS’s default image viewer[cite: 4].
- Reveal in File Explorer — opens the containing folder with the file highlighted[cite: 4].
- Copy Path to Clipboard — copies the full file path[cite: 4].
4. Removing Duplicates
Apex offers three levels of destructiveness, from safest to permanent[cite: 4]:
4.1 Quarantine (Reversible — Recommended)
- Quarantine Duplicates (sidebar) moves every non-keeper file in every cluster into a
.quarantinesubfolder inside the folder you scanned, preserving the original relative folder structure[cite: 4]. - The app records each quarantined file’s original location in its local database, so it can be restored later[cite: 4].
- Files already inside a
.quarantinefolder cannot be quarantined again[cite: 4]. - You can also quarantine or trash one duplicate at a time from the comparison view instead of doing a bulk operation[cite: 4].
4.2 Trash (Recycle Bin)
- Trash All Duplicates sends every non-keeper file straight to the operating system’s Recycle Bin (not instantly deleted — still recoverable from the Recycle Bin) and removes it from the app’s tracking database[cite: 4].
- Individual duplicates can also be trashed one at a time from the comparison view[cite: 4].
4.3 Restoring or Permanently Deleting Quarantined Files
Click Restore Quarantined in the sidebar to open the Review Quarantine dialog, which lists every file currently sitting in quarantine with a thumbnail, original filename, original folder, and the date it was quarantined[cite: 4].
From this dialog you can[cite: 4]:
- Restore Selected — move file(s) back to their original folder location[cite: 4]. Restored files are automatically re-checked against the rest of the scanned folder for duplicates[cite: 4].
- Send Selected to Trash — permanently move quarantined file(s) to the Recycle Bin[cite: 4].
- Remove Missing Records — clean up quarantine entries whose underlying file no longer exists on disk (e.g. manually deleted)[cite: 4].
4.4 Reclaimable Space
The sidebar’s Reclaimable Space badge estimates how much disk space you’ll free up by removing all current non-keeper duplicates[cite: 4].
5. Using the AI Assistant (Optional)
The AI Assistant is a local chat panel that talks to a local Ollama server running a vision-capable model (default: llama3.2-vision)[cite: 4]. No image or text data ever leaves your machine.[cite: 4]
5.1 Prerequisites
1. Install and run Ollama locally (default address http://localhost:11434)[cite: 4].
2. Pull a vision-capable model, e.g.[cite: 4]:
ollama pull llava
ollama pull qwen2.5-vl
ollama pull bakllava
(Note: some Ollama builds don’t yet support llama3.2-vision‘s architecture — if you see an “unknown model architecture” error, switch to one of the models above.)[cite: 4]
5.2 Opening the Assistant
Click the 🤖 AI Assistant button above the comparison workspace to open the dock[cite: 4]. A colored status dot shows connectivity[cite: 4]:
- 🟢 Green — Ollama is online and at least one model is available[cite: 4].
- 🔴 Red — Ollama is unreachable or no models are installed[cite: 4].
Use the ⟳ button to refresh the connection/model list, and ⚙ to open AI Settings, where you can change the Ollama endpoint URL and select which installed model to use[cite: 4].
5.3 Chatting About Your Images
- Type a message and press Enter to send (Shift+Enter for a new line)[cite: 4].
- When “Include Active Images (Keeper & Duplicate)” is checked, the currently displayed keeper/duplicate images are sent along with your message as visual context — useful for asking things like “which of these two is better quality?” or “describe what’s in this photo.”[cite: 4]
- Responses stream in token-by-token[cite: 4]. Click Stop to cancel an in-progress response[cite: 4].
- If the assistant mentions a file that was part of your scan, a clickable thumbnail appears in the chat so you can jump straight to it in the main comparison view[cite: 4].
5.4 Searching Your Photos by Description
Start a message with a search verb (find / search / show me / locate / where is / where are) plus an image-related noun (image(s), photo(s), picture(s), pic(s)) — for example:[cite: 4]
This routes your query to the image search mode, which evaluates up to 50 of your scanned keeper images against the description one at a time using the vision model, and displays each match as a clickable card with the model’s stated reason for the match[cite: 4].
7. Tips & Best Practices
- Always review a handful of clusters manually before doing a bulk Trash All Duplicates — the automatic keeper rule is a good default but isn’t infallible for edge cases (e.g. a slightly cropped “better” version might not be the highest-resolution file)[cite: 4].
- Prefer Quarantine over Trash for your first pass on an unfamiliar folder; quarantine is fully reversible from within the app, and you can inspect files before making a final decision[cite: 4].
- Re-running a scan on the same folder is fast because unchanged files are served from the local cache instead of being re-hashed[cite: 4].
- The AI Assistant is entirely optional — all duplicate-detection and cleanup features work fully without it[cite: 4].





