谷歌反向图片搜索API

16

是否有反向搜索的API?如果没有,我该如何从Android应用程序发起反向图像搜索请求?


你好,我用PHP制作了一个爬虫。这取决于您想要关于图片的哪些信息。如果您需要标题或描述,那么您可以从我的xpath查询中获取它,并轻松地将代码从PHP重写为Java。 我在这里发布了一篇博客文章,其中包含更多信息:http://skyzerblogger.blogspot.com/2013/01/google-reverse-image-search-scraping.html - Skyzer
从我所看到的情况来看,上传后最终页面上的大部分内容都是由JavaScript生成的,而您在文章中似乎没有提到。除非我弄错了,不然您能否对此进行一些解释? - Drazen Bjelovuk
6个回答

15

我已经使用Google图像搜索通过HTTP实现了“反向搜索JSON REST API”。

使用“httpunit”框架实际上非常简单,甚至可以在服务器上运行javascript。这是执行Google图像搜索请求所必需的。

https://images.google.com/searchbyimage?image_url=

它运行得非常好。我们将其集成到一个应用程序中,该应用程序只需:

  • 拍照片,
  • 缩小图片,
  • 上传到公共服务器,
  • 使用此URL,
  • 调用REST API + 获取JSON响应(见下文),
  • 显示文本和相似的图片。

服务器

你从Google得到的内容

  • 标签/标题,
  • 带有所有元数据的相似图片(文本片段、html片段、原始URL、缩略图URL、大小、尺寸等)

使用这些信息,你可以轻松地显示检测到的标签和相似的在线图片及其文本。

但是:不幸的是,Google的机器检测非常好,找到了我的REST-API并关闭了它。

因此目前为止 - 即使它已经包含在现有的Google应用程序中 - Google也没有宣布针对此的API,真的很遗憾。


2
如果你没有URL,只有图片怎么办?另外,你能否在Github上发布一个示例项目? - android developer

8
您可能会发现以下项目非常有用。它本质上是一个爬虫服务器,您可以使用curl等工具将图像的url发送到该服务器,并返回一个包含各种有用信息的json数组。 http://mrisa.mage.me.uk/

1
如果没有URL,只有图片怎么办? - android developer

4

11
它能进行反向图片搜索吗?我查看了文档,似乎需要输入文本查询。 - emkman
2
我想你需要将图像编码为Base64(如果支持反向图像搜索) - sherpya
1
谢谢,如果我有机会尝试,我会回报告的。 - emkman
3
把图片进行Base64编码后,可以用来进行反向图像搜索吗? - Karl Glennon
2
据我所知,谷歌目前还不支持通过他们的API实现这种功能,抱歉。 - emkman
@emkman 真遗憾。感谢您在这么长时间后的友善和快速回复! - DragonGamer

3

您可以尝试使用名为Camfind的反向图像搜索API。

以下是来自Camfind API的图像请求输入和图像响应输出的示例。

图像请求

alt text

图像响应

{
   "name": "crystal geyser bottle",
   "status": "completed"
}

1
Camfind在某些方面表现不错,但由于它们是人工支持的,所以对于某些应用程序并不是非常出色。 - tiagosilva

2

谷歌提供了一个非常好用的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 }


它不是真正的反向图像搜索,而是使用人工智能识别图像上的内容,对吧? - android developer
有图像搜索选项。我刚刚更新了我的回复。 - shark
一样的。这个功能在Google API上是可用的,但现在已经被弃用了。Vision可以做同样的事情,而且更多。所以我鼓励你使用Vision。 - shark
但是谷歌的反向图像不是免费的吗?或者至少比这个便宜吗? - android developer
1
我不知道这个链接。它可能被称为Google自定义搜索API。 - shark
显示剩余5条评论

0

很遗憾,谷歌没有提供反向图像搜索API。我找到的唯一一个提供此服务的是TinEye(请参见https://api.tineye.com)。我听说他们的数据库中没有那么多图片,但它似乎对大多数用途都有效。但它不是免费的,实际上它是一个昂贵的API。目前,他们每次搜索收取$0.04。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接