"Find exact or near-duplicate images with perceptual, average,
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill hashing --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Hashing?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-hashing)More formats (shields.io, HTML) on the badges page.
---
name: hashing
description: "Find exact or near-duplicate images with perceptual, average,
difference, or wavelet hashing in imagededup."
metadata:
disco-role: operating
disable-model-invocation: true
license: Apache 2.0
---
# hashing
Use this sub-skill when the user wants hash-based duplicate detection or hash generation with `PHash`, `AHash`, `DHash`, or `WHash`.
## Best-fit tasks
- Generate a hash for one image or a whole directory.
- Find near duplicates by Hamming distance.
- Produce a list of files to remove from a duplicate map.
- Compare hash backends such as `bktree`, `brute_force`, and `brute_force_cython`.
- Work from a directory of images or from a precomputed encoding map.
## Read this sub-skill first when the request mentions
- `PHash`, `AHash`, `DHash`, or `WHash`
- `encode_image` or `encode_images`
- `find_duplicates` or `find_duplicates_to_remove`
- `max_distance_threshold`
- `search_method`
- `bktree`, `brute_force`, or `brute_force_cython`
- Hamming distance, exact duplicates, or near duplicates
## Workflow overview
1. Pick the hash family.
- `PHash` for perceptual hashing.
- `AHash` for average hashing.
- `DHash` for difference hashing.
- `WHash` for wavelet hashing.
2. Encode either a single image or a directory.
3. Search duplicates from the directory or from the encoding map.
4. If the user wants a removal list, turn the duplicate map into filenames to remove.
5. If the user is on Windows, keep the multiprocessing warning and main-guard behavior in mind.
## Common decisions
- Use `encode_image` when the user already has one image file or one image array.
- Use `encode_images` when the user has a directory.
- Use `find_duplicates` when the user needs a full duplicate map.
- Use `find_duplicates_to_remove` when the user wants one heuristic list of files to delete later.
- Use `encoding_map` when hashes were already computed earlier.
- Use `search_method` only when the user needs to compare backends or override the default.
## Helpful facts
- Hash encodings are hexadecimal strings.
- `find_duplicates` returns lists of duplicate filenames, or `(filename, score)` tuples when `scores=True`.
- `find_duplicates_to_remove` never deletes files; it only returns a candidate list.
- Hash thresholds are integer Hamming distances from `0` to `64`.
- The default hash search backend is `brute_force_cython` on Unix-like systems and `bktree` on Windows.
- Recursive directory scanning is optional and off by default.
## Image handling notes
- The hash path accepts either an image file path or a numpy image array.
- Invalid or unreadable images are skipped rather than crashing the whole directory workflow.
- Supported formats are the Pillow formats documented by the repo, but loadability still depends on the actual image file and Pillow plugins.
- If you pass an encoding map, directory-only flags such as `recursive` do not matter.
## Troubleshooting pointer
Read [`references/troubleshooting.md`](references/troubleshooting.md) for threshold errors, Windows multiprocessing, invalid image input, and Cython-backend issues.
## Script helper
Run [`scripts/hash_smoke.py`](scripts/hash_smoke.py) to exercise the hash workflow on synthetic images without depending on the original checkout.
## When to escalate elsewhere
- If the task is really about CNN features or custom PyTorch models, switch to the CNN sub-skill.
- If the task is about scoring or visualizing a retrieved duplicate map, switch to the evaluation sub-skill.
## Good output expectations
A good hash-oriented answer should usually include:
- the hash class selected
- the input type expected by the method
- the threshold semantics
- the search backend if it matters
- the shape or type of the returned value
- any Windows or multiprocessing caveat that appliesIs this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!