Find duplicate PDF books in your Piwigo library — even when they're different scans of the same work, differently named, or byte-identical copies.
The plugin scans your PDF gallery items using three complementary detection signals: byte-identical fingerprints, cover-image perceptual hashing (dHash, with optional SSIM verification), and normalized/fuzzy title matching. Matches are grouped into candidate clusters and presented in an admin review screen for a human decision — nothing is ever deleted automatically. Review, confirm, or dismiss each group at your own pace.
Scanning runs in small batched AJAX passes (configurable batch sizes for probing, cover hashing, and metadata indexing) so it stays responsive even on large libraries, with an optional Ghostscript fallback for page-count extraction. Thresholds (fuzzy title similarity, hash distance, stopwords, etc.) are all tunable from the plugin's settings page.
Key points:
- Report-and-review only — no destructive actions, ever
- Three detection methods: exact hash, cover phash, fuzzy title
- Batched background scanning suited to large collections
- Configurable thresholds via admin settings
- Web service methods (pwg.pdfdup.*) for the scan/review UI
I'm a web developer with 20+yr experience yet I'm using Claude to assist coding this project.
Released on czwartek 3 wrzesień 2026
4
Compatible with Piwigo 16
2 days- New: a green "Run all" button on the Scan tab runs steps 1 to 5 back to back, so the whole pipeline is one click instead of five. Each step's result is listed on its own line under the progress bar as it finishes, and the run stops there if a step fails or is cancelled.
- Change: on the Decided view, "Keep this one" now defaults to the copy held on S3, so the hosted copy is never the one queued for deletion. Where several copies are on S3 (or none are), the old order still decides: most pages, then biggest file, then oldest.
- Change: "Use meta" no longer simply follows the keeper. It now defaults to whichever copy has the fullest catalogue record, since the copy worth hosting is often not the one that was catalogued - previously the better metadata was the default casualty.
Released on czwartek 13 sierpień 2026
25
Released on czwartek 13 sierpień 2026
26
Released on czwartek 13 sierpień 2026
19
Released on wtorek 28 lipiec 2026
27
Released on środa 22 lipiec 2026
42
Released on środa 22 lipiec 2026
39
Released on środa 22 lipiec 2026
37
Released on środa 22 lipiec 2026
38
Released on środa 15 lipiec 2026
60