Empreinte perceptuelle
L’empreinte perceptuelle résume une image en une valeur courte qui reflète son apparence. Deux photos identiques ou très ressemblantes produisent des empreintes proches, même après recompression ou redimensionnement. C’est l’outil pour repérer des doublons dans une collection, gratuitement et sans envoyer le fichier.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Une empreinte qui suit l’apparence
Contrairement à un hash classique, qui change du tout au tout au moindre octet modifié, le hash perceptuel varie peu quand l’image reste visuellement semblable. Recompresser un JPEG, le réduire ou changer légèrement sa luminosité donne une empreinte presque inchangée. En comparant deux empreintes, on mesure leur proximité : très proches, les images se ressemblent ; éloignées, elles diffèrent. C’est ce qui permet de retrouver le même visuel sous plusieurs formes, là où une comparaison octet par octet échouerait dès la première recompression.
Repérer doublons et variantes
Sur une bibliothèque de photos qui a grossi au fil des ans, les mêmes images reviennent souvent en plusieurs exemplaires : une version pleine résolution, une miniature, une capture partagée puis réenregistrée. Calculer l’empreinte de chaque fichier et regrouper les valeurs proches met en évidence ces répétitions, pour faire le tri et gagner de l’espace. La méthode sert aussi à vérifier qu’une image n’est pas une reprise modifiée d’une autre, un cas fréquent quand on gère un catalogue ou une banque de visuels.
Calcul local, gratuit, confidentiel
L’empreinte se calcule dans votre navigateur : l’image reste sur votre appareil, rien n’est transmis ni conservé, et l’usage est gratuit sans limite. Vous pouvez analyser des visuels privés sans les exposer, ce qui compte pour un travail sur des documents internes. Aucune inscription n’est nécessaire. Pour comparer de grands volumes automatiquement — dédupliquer une base entière —, la même capacité s’appelle via l’API ; l’usage manuel dans le navigateur, lui, reste gratuit.
Cas d’usage
Faire le tri dans une photothèque
Élodie Garnier a accumulé des milliers de photos avec de nombreux doublons. Les empreintes proches regroupent les mêmes images sous leurs différentes tailles, ce qui lui permet de supprimer les redondances en confiance.
Vérifier l’unicité d’un catalogue
L’Atelier Garnier SARL veut éviter que deux références partagent la même photo. La comparaison des empreintes signale les visuels réutilisés d’un produit à l’autre, à corriger avant la mise en ligne.
Retrouver une image recompressée
Le Studio Lumen SAS cherche l’original d’une photo circulant en basse qualité. L’empreinte perceptuelle rapproche la version dégradée de son fichier source malgré la recompression.
Questions fréquentes
En quoi est-ce différent d’un hash classique ?
Un hash classique change entièrement au moindre octet modifié. Le hash perceptuel, lui, suit l’apparence : deux images semblables gardent des empreintes proches, même après recompression ou redimensionnement.
L’empreinte détecte-t-elle une image recadrée ou retouchée ?
Une retouche légère ou une recompression garde une empreinte très proche. Un recadrage important ou une transformation forte l’éloigne davantage : la proximité mesurée reflète le degré de ressemblance visuelle réel.
Mon image est-elle envoyée pour le calcul ?
Non. L’empreinte se calcule dans votre navigateur ; le fichier reste local et n’est ni transmis ni conservé. Vous pouvez traiter des visuels confidentiels sans risque d’exposition.
Est-ce gratuit ?
Oui, sans limite dans le navigateur, car le traitement est local. Aucune inscription pour cet usage manuel : vous calculez autant d’empreintes que nécessaire.
Comment comparer un grand nombre d’images ?
Pour dédupliquer une base entière, l’API calcule les empreintes en série et vous les compare automatiquement. Cet usage automatisé est facturé à l’usage en dollars US ; le calcul manuel reste gratuit.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/image/phash \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/phash", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/phash",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/phash", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/phash", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"image": "https://ejemplo.com/imagen.jpg"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.phash",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 15 |
max_megapixels | 12 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |