Android で CloudVision API を使ってウェブ検出する

[Android で CloudVision API を使ってラベル検出する](https://qiita.com/ohwada/items/b34718df6a6362e493dc)
の続きです。


前回の記事では、ラベル検出を行った。
今回は、ウェブ検出を行う。

下記を参考にした。

[docs : ウェブ検出のチュートリアル](https://cloud.google.com/vision/docs/internet-detection)


参考 : [Android : Google Cloud Vision APIを用いてWEB_DETECTIONする](https://qiita.com/tarotaro0/items/4ec82151f9ab656e358b)

### リクエストを作成する

基本的な処理は、ラベル検出と同じです。

違いは、機能のタイプにウェブ検出を指定すること。

[docs : Feature 機能](https://cloud.google.com/vision/docs/features)


```
                Feature feature = new Feature();
// ウェブ検出を指定する
                feature.setType("WEB_DETECTION");
```

### ウェブ検出のレスポンス

ラベル検出では、取得できるアノテーションはラベルだけでした。

ウェブ検出では、下記のアノテーションが取得できる。

- ウェブから取得したラベル
- 一致する画像のあるサイト URL
- リクエスト中の画像に部分一致または完全一致するウェブ画像を参照する URL
- 視覚的に類似している画像を参照する URL


### WebDetection

ウェブ検出のレスポンスのクラス

[documentation : WebDetection](https://developers.google.com/resources/api-libraries/documentation/vision/v1/java/latest/com/google/api/services/vision/v1/model/WebDetection.html)

```
        AnnotateImageResponse response

        WebDetection webDetection = response.getWebDetection();

// 最も適切に推測したラベル
        List<WebLabel>	bestGuessLabels = webDetection.getBestGuessLabels();
// ウェブから取得したラベル
        List<WebEntity> webEntities = webDetection.getWebEntities();
// 一致する画像のあるサイト
        List<WebPage>	pagesWithMatchingImages = webDetection.getPagesWithMatchingImages();
// 完全一致する画像
        List<WebImage>	 fullMatchingImages = webDetection.getFullMatchingImages();
// 部分一致する画像
        List<WebImage>	 partialMatchingImages = webDetection.getPartialMatchingImages();
// 類似している画像
        List<WebImage> visuallySimilarImages = webDetection.getVisuallySimilarImages();
```

### WebLabel

ウェブラベルのメタデータ
ラベルが取得できる

[documentation : WebLabel](https://developers.google.com/resources/api-libraries/documentation/vision/v1/java/latest/com/google/api/services/vision/v1/model/WebLabel.html)

### WebEntity

ウェブエンティティのメタデータ
ラベルとスコアが取得できる

[documentation : WebEntity](https://developers.google.com/resources/api-libraries/documentation/vision/v1/java/latest/com/google/api/services/vision/v1/model/WebEntity.html)

### WebPage

ウェブページのメタデータ
- 一致する画像のあるサイトのURLと、
- 一致する画像のURLが取得できる


[documentation : WebPage](https://developers.google.com/resources/api-libraries/documentation/vision/v1/java/latest/com/google/api/services/vision/v1/model/WebPage.html)

### WebImage

オンライン画像のメタデータ
- 一致する画像のURLが取得できる

[documentation : WebImage](https://developers.google.com/resources/api-libraries/documentation/vision/v1/java/latest/com/google/api/services/vision/v1/model/WebImage.html)

### レスポンスの処理

- 一致する画像のあるサイトのURLから
ウェブブラウザアプリでそのサイトを表示する。
- 一致する画像のURLから
その画像を表示する。

### 実行例

スクリーンショット
![cloud_vision2_image_list.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64075/37bf322b-2302-f443-4e12-e3e8383e53f2.png)

テキスト

> I found these things:
> bestGuessLabels:
> google cloud vision api label direction
> webEntities:
> Google Cloud Platform: 0.825
> Application programming interface: 0.703
> American Cocker Spaniel: 0.569
> Cloud computing: 0.567
> Google: 0.526
> Application software: 0.460
> Google APIs: 0.391
> Library: 0.378                                                                         
> pagesWithMatchingImages: 10
> fullMatchingImages: 4
> partialMatchingImages:　3
> visuallySimilarImages: 0

レスポンス

> 写真に写っているのは、アメリカンコッカースパニエル。
> 推測したラベルは、
> google cloud vision api label direction 。
> 一致する画像のあるサイトは、
> https://cloud.google.com/vision/docs/detecting-labels
> 一致する画像は、
> https://cloud.google.com/vision/docs/images/faulkner.jpg

サンプルコードをgithub に公開した。
https://github.com/ohwada/Android_Samples/tree/master/CloudVision2