Skip to main content

difPy Duplicate Image Finder - automated search for duplicate or similar images.

Project description

Duplicate Image Finder (difPy)

Tired of going through all images in a folder and comparing them manually to check if they are duplicates?

The Duplicate Image Finder (difPy) Python package automates this task for you!

Read more on how the algorithm of difPy works in my Medium article Finding Duplicate Images with Python.

For a detailed usage guide, please view the official difPy Usage Documentation.

Try the difPy Web App!


Description

difPy searches for images in one or more different folders, compares the images it found and checks whether these are duplicates. It then outputs the image files classified as duplicates as well as the images having the lowest resolutions, so you know which of the duplicate images are safe to be deleted. You can then either delete them manually, or let difPy delete them for you.

difPy does not compare images based on their hashes. It compares them based on their tensors i. e. the image content - this allows difPy to not only search for duplicate images, but also for similar images.

Basic Usage

To make difPy search for duplicates within one folder:

from difPy import dif
search = dif("C:/Path/to/Folder/")

To search for duplicates within multiple folders:

from difPy import dif
search = dif(["C:/Path/to/Folder_A/", "C:/Path/to/Folder_B/", "C:/Path/to/Folder_C/",...])

Folder paths can be specified as standalone Python strings, or within a list.

Output

difPy returns various types of output that you may use depending on your use case:

A JSON formatted collection of duplicates/similar images (i. e. match groups) that were found, where the keys are a randomly generated unique id for each image file:

search.result

> Output:
{20220819171549 : {"location" : "C:/Path/to/Image/image1.jpg",
                   "matches" : {30270813251529 : "location": "C:/Path/to/Image/matched_image1.jpg",
                                                 "mse": 0.0},
                               {72214282557852 : "location": "C:/Path/to/Image/matched_image2.jpg",
                                                 "mse": 0.0},
                   ... }
 ...
}

A list of duplicates/similar images that have the lowest quality among match groups:

search.lower_quality

> Output:
["C:/Path/to/Image/duplicate_image1.jpg", 
 "C:/Path/to/Image/duplicate_image2.jpg", ...]

A JSON formatted collection with statistics on the completed difPy process:

search.stats

> Output:
{"directory" : ("C:/Path/to/Folder_A/", "C:/Path/to/Folder_B/", ... ),
 "duration" : {"start_date" : "2023-02-15",
               "start_time" : "18:44:19",
               "end_date" : "2023-02-15",
               "end_time" : "18:44:38",
               "seconds_elapsed" : 18.6113},
 "fast_search" : True,
 "recursive" : True,
 "match_mse" : 0,
 "px_size" : 50,
 "files_searched" : 1032,
 "matches_found" : {"duplicates" : 52, 
                    "similar" : 0},
 "invalid_files" : {"count" : 4},
 "deleted_files" : {"count" : 0},
 "skipped_files" : {"count" : 0}}

Additional Parameters

difPy supports the following parameters:

dif(*directory, fast_search=True, recursive=True, similarity='duplicates', px_size=50, 
    move_to=None, limit_extensions=False, show_progress=True, show_output=False, 
    delete=False, silent_del=False, logs=False)

CLI Usage

difPy can also be invoked through the CLI by using the following commands:

python dif.py -D "C:/Path/to/Folder/"

python dif.py -D "C:/Path/to/Folder_A/" "C:/Path/to/Folder_B/" "C:/Path/to/Folder_C/"

It supports the following arguments:

dif.py [-h] -D DIRECTORY [-Z OUTPUT_DIRECTORY] [-f {True,False}]
       [-r {True,False}] [-s SIMILARITY] [-px PX_SIZE] 
       [-mv MOVE_TO] [-le {True,False}] [-p {True,False}]
       [-o {True,False}] [-d {True,False}] [-sd {True,False}] 
       [-l {True,False}]

The output of difPy is then written to files and saved in the working directory, where "xxx" in the output filesnames is a unique timestamp:

difPy_results_xxx.json
difPy_lower_quality_xxx.csv
difPy_stats_xxx.json

For a detailed usage guide, please view the official difPy Usage Documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

difPy-3.0.10.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

difPy-3.0.10-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file difPy-3.0.10.tar.gz.

File metadata

  • Download URL: difPy-3.0.10.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for difPy-3.0.10.tar.gz
Algorithm Hash digest
SHA256 86733af210959db3d2ef678c98b58f09b4680c2d77608ab17d8770e68b67f90a
MD5 7e560f50002d97d6c0602c9ff63fc4f2
BLAKE2b-256 5fe62bde18de35494aa61c10e0a02f8003b07e3cd733de931a7cf5de47a7897b

See more details on using hashes here.

File details

Details for the file difPy-3.0.10-py3-none-any.whl.

File metadata

  • Download URL: difPy-3.0.10-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for difPy-3.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 1b66af2c8fbaeca3874d9ddc0430876f7a95f4479013127fba30465fc766e983
MD5 05fb557c54f16e9a9172074e4a3de103
BLAKE2b-256 5d7b3db56f7b9dff223ede496dfc60e52ce5894bef3cbd4427a2a6e9dd021a85

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page