This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Rechercher les doublons

Téléversez plusieurs images pour détecter les doublons et quasi-doublons à l'aide du hachage perceptuel (dHash). Regroupe les images similaires, identifie la version de meilleure qualité dans chaque groupe et calcule les économies d'espace potentielles.

Point de terminaison de l'API

POST /api/v1/tools/image/find-duplicates

Accepte des données de formulaire multipart avec plusieurs images et un champ JSON settings facultatif.

Paramètres

ParamètreTypeRequisPar défautDescription
thresholdnumberNon8Distance de Hamming maximale pour considérer des images comme des doublons (0 à 20). Plus bas = correspondance plus stricte

Champs de fichier

Téléversez au moins 2 images dans la requête multipart (toutes avec le nom de champ file ou n'importe quel nom de champ pour les parties de fichier).

Exemple de requête

bash
curl -X POST http://localhost:1349/api/v1/tools/image/find-duplicates \
  -H "Authorization: Bearer si_your-api-key" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F 'settings={"threshold": 8}'

Exemple de réponse

json
{
  "totalImages": 4,
  "duplicateGroups": [
    {
      "groupId": 1,
      "files": [
        {
          "filename": "photo1.jpg",
          "similarity": 100,
          "width": 4032,
          "height": 3024,
          "fileSize": 2450000,
          "format": "jpeg",
          "isBest": true,
          "thumbnail": "data:image/jpeg;base64,/9j/..."
        },
        {
          "filename": "photo2.jpg",
          "similarity": 96.88,
          "width": 1920,
          "height": 1440,
          "fileSize": 850000,
          "format": "jpeg",
          "isBest": false,
          "thumbnail": "data:image/jpeg;base64,/9j/..."
        }
      ]
    }
  ],
  "uniqueImages": 2,
  "spaceSaveable": 850000,
  "skippedFiles": []
}

Champs de réponse

ChampTypeDescription
totalImagesnumberNombre d'images analysées avec succès
duplicateGroupsarrayGroupes d'images en double
uniqueImagesnumberNombre d'images ne faisant partie d'aucun groupe de doublons
spaceSaveablenumberTotal d'octets pouvant être économisés en supprimant les doublons non optimaux
skippedFilesarrayFichiers qui n'ont pas pu être traités (avec nom de fichier et raison)

Objet de groupe de doublons

ChampTypeDescription
groupIdnumberIdentifiant du groupe
filesarrayImages de ce groupe de doublons

Objet de fichier (au sein d'un groupe)

ChampTypeDescription
filenamestringNom de fichier d'origine
similaritynumberPourcentage de similarité avec l'image de référence (première du groupe)
widthnumberLargeur de l'image en pixels
heightnumberHauteur de l'image en pixels
fileSizenumberTaille du fichier en octets
formatstringFormat de l'image
isBestbooleanIndique s'il s'agit de la version de meilleure qualité (le plus de pixels, le plus gros fichier)
thumbnailstring ou nullMiniature JPEG en Base64 (200 px de large) pour l'aperçu

Notes

  • Utilise un dHash de 128 bits (64 bits en ligne + 64 bits en colonne) pour la détection de similarité perceptuelle. Cela détecte les doublons même à travers les redimensionnements, la recompression et les modifications mineures.
  • Le seuil représente la distance de Hamming maximale entre les hachages. La valeur par défaut de 8 détecte les quasi-doublons tout en évitant les faux positifs. Utilisez 0 pour une correspondance strictement identique au pixel près, ou 15-20 pour une correspondance très souple.
  • La « meilleure » image de chaque groupe est celle qui a le plus de pixels (largeur x hauteur), la taille du fichier servant de critère de départage.
  • Au moins 2 images sont requises. Les fichiers qui échouent à la validation ou au décodage sont signalés dans skippedFiles plutôt que de faire échouer l'ensemble de la requête.
  • Les miniatures sont des aperçus JPEG de 200 px de large encodés en URI de données.
  • Tous les formats courants sont pris en charge (HEIC, RAW, PSD, SVG décodés automatiquement).