
hashsearch - Pesquisa de imagem reversa usando hashes perceptivos. ?O HashSearch é um mecanismo de pesquisa de imagem reversa leve e fácil de usar, que utiliza hashes perceptivos.
A maneira mais fácil é baixar dos lançamentos.
Você também pode construir hashsearch a partir do código -fonte:
git clone https://github.com/burntcarrot/hashsearch
cd hashsearch
go build -o ./bin/hashsearch api/v1/main.go hashsearch -config <CONFIG_FILE_PATH>
Se -config não for fornecido, hashsearch inadimplente para <HOME_DIR>/.hashsearch/config.yml .
hashsearch executa o servidor no endereço configurado e expõe uma API para interagir.
A API é muito simples. Duas rotas, uma para pesquisa e outra para obter a lista de imagens.
/v1/searchPublique uma imagem usando dados do formulário, obtenha a lista de imagens (classificadas pelo menos para a maior parte da distância):
curl --location --request POST ' localhost:8081/v1/search '
--form ' file=@"star.png" 'Resposta:
[
{
"path" : " files/star.png " ,
"distance" : 0 ,
"hash" : " 0000000000010000111100001111110011111100111100000001000000000000 "
},
{
"path" : " files/star-new.png " ,
"distance" : 4 ,
"hash" : " 0001000000110000111100001111110011111100111100000011000000010000 "
},
{
"path" : " files/random.png " ,
"distance" : 28 ,
"hash" : " 0000000110000000110000100010001111110010010001100000011110000110 "
}
]/v1/listObtenha a lista de todas as imagens:
curl --silent 'localhost:8081/v1/list'
Resposta:
[
{
"path" : " files/random.png " ,
"distance" : 0 ,
"hash" : " 0000000110000000110000100010001111110010010001100000011110000110 "
},
{
"path" : " files/star-new.png " ,
"distance" : 0 ,
"hash" : " 0001000000110000111100001111110011111100111100000011000000010000 "
},
{
"path" : " files/star.png " ,
"distance" : 0 ,
"hash" : " 0000000000010000111100001111110011111100111100000001000000000000 "
}
] O arquivo de configuração é um arquivo .yaml simples:
db :
url : " data.db " # Database URL.
server :
addr : " localhost:8081 " # Server address.
files :
dir : " /files " # Directory where the images would be saved.
cors :
allow_origin : " * " # CORS Allow-Origin value.
logging :
file : " /hashsearch.log " # Log file path. Você carrega uma imagem usando /v1/search :
hashsearch faz uma cópia da sua imagemhashsearch armazena a imagem copiada em FILES_DIR , que é configurávelhashsearch gera o hash quando você posta a imagem e a salva no banco de dadoshashsearch calcula as distâncias entre a imagem postada e outras imagens e retorna o resultado como uma resposta JSONSe você possui um aplicativo em pequena escala e não deseja usar grandes dependências/sistemas, isso deve funcionar bem.
É a melhor solução? Na verdade não, mas se você quiser uma solução rápida e fácil, isso deve ser bom o suficiente.
Está em chamas rápido? Novamente, não tenho certeza sobre isso; Eu não testei em grandes conjuntos de imagens.
hashsearch está licenciado sob a licença do MIT.
Parece que é uma das inspirações por trás deste projeto.
Não é assim que a pesquisa de imagem reversa é implementada na maioria das áreas; Eu só queria me divertir com hashes perceptivos.
O hash médio é bom para a maioria dos casos, mas luta em algumas áreas; portanto, a melhor opção seria usar o dhash/phash.
Estou trabalhando ativamente na pesquisa de vídeo reversa ; Espere que faça parte dos lançamentos futuros.
Uma bela e pequena interface da web também seria adicionada em breve.