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.
Udgivet den Torsdag 3 September 2026
7
Kompatibel med Piwigo 16
3 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.
Udgivet den Torsdag 13 August 2026
38
Udgivet den Torsdag 13 August 2026
30
Udgivet den Torsdag 13 August 2026
31
Udgivet den Tirsdag 28 Juli 2026
39
Udgivet den Onsdag 22 Juli 2026
50
Udgivet den Onsdag 22 Juli 2026
44
Udgivet den Onsdag 22 Juli 2026
42
Udgivet den Onsdag 22 Juli 2026
46
Udgivet den Onsdag 15 Juli 2026
66