hashsearch
v1.0.0

hashsearch - 使用感知哈希的反向图像搜索。 ?Hashsearch是一种轻巧,易于使用的反向图像搜索引擎,可利用感知哈希。
最简单的方法是从发行版中下载。
您还可以从源代码构建hashsearch :
git clone https://github.com/burntcarrot/hashsearch
cd hashsearch
go build -o ./bin/hashsearch api/v1/main.go hashsearch -config <CONFIG_FILE_PATH>
如果没有提供-config ,则hashsearch默认为<HOME_DIR>/.hashsearch/config.yml 。
hashsearch运行服务器在配置的地址上,并公开与API进行交互。
API非常简单。两条路线,一条用于搜索,另一条用于获取图像列表。
/v1/search使用表单数据发布图像,获取图像列表(至少对大多数距离进行排序):
curl --location --request POST ' localhost:8081/v1/search '
--form ' file=@"star.png" '回复:
[
{
"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/list获取所有图像的列表:
curl --silent 'localhost:8081/v1/list'
回复:
[
{
"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 "
}
]配置文件是一个简单的.yaml文件:
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. 您使用/v1/search路线上传图像:
hashsearch制作您的图像的副本hashsearch将复制图像存储在FILES_DIR中,该图像可配置hashsearch发布图像时会生成哈希,并将其保存到数据库hashsearch计算发布的图像与其他图像之间的距离,并作为JSON响应返回结果如果您有一个小规模的应用程序,并且不想使用大型依赖/系统,则可以正常工作。
是最好的解决方案吗?不是真的,但是如果您想要一个快速简便的解决方案,那应该足够好。
燃烧快吗?再次,不确定这一点;我没有在大量图像上测试过。
hashsearch已获得MIT许可证的许可。
看起来这是该项目背后的灵感之一。
这不是在大多数领域实施反向图像搜索的方式。我只是想在感知哈希上玩一些乐趣。
在大多数情况下,平均哈希是可以的,但是它在某些地区挣扎,因此更好的选择是使用Dhash/phash。
我正在积极进行反向视频搜索;期望它成为未来版本的一部分。
也很快就会添加一个不错的网络UI。