ForHosting KIT · Immagini e foto

Rileva immagini duplicate tramite hash percettivi (distanza di Hamming)

Se già calcola gli hash percettivi delle Sue immagini, questo endpoint trasforma quell'elenco piatto in gruppi di duplicati.

● BetaGratis · nel tuo browser
Usalo da WebAPIEmailTelegramApp presto

Invia una voce per immagine — un nome e il relativo hash, come stringa esadecimale o come stringa di bit 0/1 — insieme a una distanza di Hamming massima in bit. Ogni coppia di hash entro quella distanza viene collegata e le coppie collegate confluiscono in gruppi connessi, così una catena di quasi-duplicati si riduce a un unico cluster invece di restare un insieme di coppie sovrapposte. Il risultato elenca ogni gruppo con i suoi membri, le distanze interne coppia per coppia e la distanza massima all'interno del gruppo, oltre ai totali: quante immagini sono duplicate e quante restano uniche. Nulla viene caricato: gli hash che già possiede sono tutto l'input necessario.

Da un elenco di hash a gruppi di duplicati

Un hash percettivo come un pHash a 64 bit codifica l'aspetto di un'immagine, quindi due foto che differiscono solo per compressione, dimensioni o una filigrana producono hash che differiscono di pochi bit. Confrontare quegli hash a coppie è facile; la parte noiosa è ciò che viene dopo. L'immagine A corrisponde a B, e B corrisponde a C, ma A non corrisponde del tutto a C: sono un solo insieme di duplicati o due? Questa capacità risolve la questione nel modo standard: tratta ogni immagine come un nodo, traccia un arco tra due hash qualsiasi la cui distanza di Hamming sia al massimo pari alla soglia che Lei sceglie, e restituisce le componenti connesse come gruppi di duplicati. Riceve una voce per gruppo con i nomi dei membri, ogni coppia entro la soglia con la sua distanza esatta e la distanza massima interna al gruppo, così può verificare perché due immagini sono finite insieme. Poiché il raggruppamento avviene per transitività, una catena di risalvataggi che deriva di un bit alla volta finisce comunque in un unico cluster, che è esattamente il comportamento atteso dal rilevamento di quasi-duplicati sulle librerie fotografiche reali.

Scegliere la soglia e il formato dell'hash

La soglia è una distanza di Hamming massima in bit e il valore predefinito è 5, un punto di partenza comune per gli hash a 64 bit: le immagini identiche danno 0 e le ricodifiche visivamente indistinguibili restano di solito sotto 5. La abbassi verso 0 quando vuole solo corrispondenze esatte o quasi esatte, la alzi con cautela quando la Sua pipeline ridimensiona in modo aggressivo o ritaglia i bordi, perché ogni bit di tolleranza in più moltiplica il rischio di falsi positivi sulle collezioni grandi. Gli hash sono accettati in due formati: stringhe esadecimali, decodificate a quattro bit per carattere, oppure stringhe letterali di bit 0/1. L'unica regola ferrea è la coerenza: ogni hash in una richiesta deve usare lo stesso formato e decodificare alla stessa lunghezza in bit, altrimenti una distanza tra di essi non avrebbe senso e la richiesta viene rifiutata con un errore chiaro. Una soglia negativa è parimenti rifiutata come input non valido. Può calcolare gli hash stessi con la capacità gemella image.phash, che produce esattamente le stringhe esadecimali di 16 caratteri che questo endpoint si aspetta.

Un output deterministico da confrontare e archiviare

La risposta è progettata per essere archiviata accanto al Suo catalogo e confrontata nel tempo. I gruppi sono ordinati in base alla posizione del loro primo membro nell'elenco di input, i membri mantengono l'ordine di input e le coppie interne sono elencate con entrambi i nomi e la distanza esatta, così due esecuzioni sullo stesso elenco producono un output byte per byte identico e le regressioni emergono come diff puliti. Insieme ai gruppi riceve i conteggi utili alle dashboard: totale delle immagini elaborate, lunghezza in bit degli hash, numero di gruppi di duplicati, quante immagini rientrano in un gruppo qualsiasi e quante restano uniche. Non c'è casualità, né orologio, né rete: lo stesso input dà sempre la stessa risposta, nell'API e nell'esecutore gratuito nel browser su questa pagina, che esegue esattamente lo stesso codice. Questo la rende sicura da usare nelle pipeline CI che fanno fallire una build quando nuovi duplicati si insinuano in un repository di asset, e nei lavori di pulizia programmati che inviano via email un rapporto di deduplicazione.

Deduplicare un catalogo prodotti

Fornisca i pHash di ogni foto prodotto e unisca le schede che riutilizzano la stessa immagine con nomi di file o dimensioni diverse.

Verificare una libreria di foto stock

Individui gli scatti quasi identici della stessa sessione, così i revisori conservano un solo rappresentante invece di dodici riesportazioni.

Proteggere una pipeline di caricamento

Rifiuti o segnali un nuovo caricamento quando il suo hash rientra nella soglia di un'immagine che già archivia.

Quanto costa?

$0.002 a richiesta. È inoltre gratuito da eseguire nel Suo browser su questa pagina con lo stesso codice.

Devo caricare le immagini stesse?

No. Invia solo gli hash percettivi che ha già calcolato, più un nome per immagine. I file binari non lasciano mai il Suo lato.

Quali formati di hash sono accettati?

Stringhe esadecimali (quattro bit per carattere, senza distinzione tra maiuscole e minuscole) e stringhe letterali di bit 0/1. Tutti gli hash di una richiesta devono condividere lo stesso formato e la stessa lunghezza in bit.

Quale soglia dovrei usare?

Il valore predefinito è 5 bit, un punto di partenza sensato per i pHash a 64 bit. Usi 0 per sole corrispondenze esatte e lo alzi con cautela: valori più alti catturano più risalvataggi ma anche più falsi positivi.

Come si formano i gruppi quando le corrispondenze si sovrappongono?

Per componenti connesse: se A corrisponde a B e B corrisponde a C entro la soglia, tutte e tre finiscono in un unico gruppo anche se A e C distano più della soglia. Le distanze esatte coppia per coppia sono elencate affinché Lei possa verificare ogni collegamento.

Cosa succede con una soglia negativa?

La richiesta viene rifiutata come input non valido, poiché una distanza di Hamming non può essere negativa, e non Le viene addebitato nulla.

Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.

POSThttps://api.kit.forhosting.com/image/duplicate-detect-hash

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

curl -X POST https://api.kit.forhosting.com/image/duplicate-detect-hash \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"images":[{"name":"hero-a.jpg","hash":"ff8f8383c3c3c3ff"},{"name":"hero-b.jpg","hash":"ff8f8383c3c3c3f7"},{"name":"hero-c.jpg","hash":"ff8f8383c3c3c3f3"},{"name":"logo.png","hash":"007c7c7c7c7c7c00"}]}'
{
  "images": [
    {
      "name": "hero-a.jpg",
      "hash": "ff8f8383c3c3c3ff"
    },
    {
      "name": "hero-b.jpg",
      "hash": "ff8f8383c3c3c3f7"
    },
    {
      "name": "hero-c.jpg",
      "hash": "ff8f8383c3c3c3f3"
    },
    {
      "name": "logo.png",
      "hash": "007c7c7c7c7c7c00"
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "image.duplicate_detect_hash",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

max_items5000
HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Leggi la documentazione completa del KIT →