是否有反向搜索的API?如果没有,我该如何从Android应用程序发起反向图像搜索请求?
是否有反向搜索的API?如果没有,我该如何从Android应用程序发起反向图像搜索请求?
我已经使用Google图像搜索通过HTTP实现了“反向搜索JSON REST API”。
使用“httpunit”框架实际上非常简单,甚至可以在服务器上运行javascript。这是执行Google图像搜索请求所必需的。
https://images.google.com/searchbyimage?image_url=
它运行得非常好。我们将其集成到一个应用程序中,该应用程序只需:
服务器
你从Google得到的内容
使用这些信息,你可以轻松地显示检测到的标签和相似的在线图片及其文本。
但是:不幸的是,Google的机器检测非常好,找到了我的REST-API并关闭了它。
因此目前为止 - 即使它已经包含在现有的Google应用程序中 - Google也没有宣布针对此的API,真的很遗憾。
反向图像搜索API已过时: https://developers.google.com/image-search/?hl=it
新的搜索API可以进行图像搜索查询。
https://developers.google.com/custom-search/v1/overview?hl=it
您可以尝试使用名为Camfind的反向图像搜索API。
以下是来自Camfind API的图像请求输入和图像响应输出的示例。
{
"name": "crystal geyser bottle",
"status": "completed"
}
谷歌提供了一个非常好用的API——Google Vision API - web detection,它比自定义搜索好多了。以下是使用批处理请求进行反向搜索图片的 Kotlin 代码示例:
val feat = Feature.newBuilder().setType(Type.WEB_DETECTION).build()!!
val settings = ImageAnnotatorSettings.newBuilder().setCredentialsProvider(provider.get()).build()
val req = images.stream()
.map { Image.newBuilder().setSource(ImageSource.newBuilder().setImageUri(it)).build() }
.map { AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(it).build() }
.toList()
val res = ImageAnnotatorClient.create(settings)
.use { c -> req.chunked(GOOGLE_BATCH_LIMIT).map { c.batchAnnotateImages(it).responsesList }.flatten() }
.map { it.webDetection.fullMatchingImagesCount }
很遗憾,谷歌没有提供反向图像搜索API。我找到的唯一一个提供此服务的是TinEye(请参见https://api.tineye.com)。我听说他们的数据库中没有那么多图片,但它似乎对大多数用途都有效。但它不是免费的,实际上它是一个昂贵的API。目前,他们每次搜索收取$0.04。