RからGoogle Cloud Vision APIを使う

Google Cloud Vision APIが高性能らしいので使いたいのだが私はRしか使えないのでRから使う。
とりあえず手持ちのこの画像のOCRをしたい。

前準備としてAPIキーの取得などがあるので以下を参考にされたし。
http://qiita.com/takaheraw@github/items/e2d8ac9edad4655596a2

コードは以下の通り。

getResult <- function(f, type = "TEXT_DETECTION"){
  library("httr")
  library("base64enc")
  CROWD_VISION_KEY <- "あなたのキー"
  u <- paste0("https://vision.googleapis.com/v1/images:annotate?key=", CROWD_VISION_KEY)
  img <- readBin(f, "raw", file.info(f)[1, "size"])
  base64_encoded <- base64encode(img)
  body <- list(requests = list(image = list(content = base64_encoded),
                               features = list(type = type,
                                               maxResults = 10))
  )
  
  res <- POST(url = u,
              encode = "json",
              body = body,
              content_type_json())
}

結果は以下の通り。ちょっと訛ってる。

f_satoyanagi <- "satoyanagi.png"
res <- getResult(f_satoyanagi, "TEXT_DETECTION")
content(res)$responses[[1]]$textAnnotations[[1]]$description
[1] "データ芝イ ンテ\nさどようへいさん\n\n"

ほかにも色々できる

たとえば物体認識もできる。
お好み焼きを認識させてみよう。

f_okonomiyaki <- "okonomiyaki.jpg"
res2 <- getResult(f_okonomiyaki, "LABEL_DETECTION")
jsonlite::fromJSON(content(res2, as = "text"))$responses$labelAnnotations

ちゃんとお好み焼きが候補にでてくる。

[[1]]
         mid  description     score
1 /m/02q08p0         dish 0.9867435
2   /m/02wbm         food 0.9811904
3  /m/02ln79     yakisoba 0.8415857
4   /m/0dxn2     roasting 0.7471840
5   /m/0772h    spaghetti 0.7463352
6  /m/012x_n  okonomiyaki 0.7116117
7  /m/09y2k2 italian food 0.6926621
8  /m/0f4s2w    vegetable 0.5964628
9  /m/07xgrh   ingredient 0.5623973

一応もんじゃ焼きも認識させてみる。

f_gero <- "monjayaki.jpg"
res3 <- getResult(f_gero, "LABEL_DETECTION")
jsonlite::fromJSON(content(res3, as = "text"))$responses$labelAnnotations

信じられないことにもんじゃ焼きですら食べ物として認識され、さらに候補にさえ出てくる。
すげえなGoogle

[[1]]
          mid  description     score
1   /m/018_z5     meat pie 0.9999765
2    /m/02wbm         food 0.9927497
3  /m/02q08p0         dish 0.9914593
4    /m/0krfg         meal 0.9097335
5   /m/02ln79     yakisoba 0.8457233
6   /m/01_545    jambalaya 0.7069302
7    /m/0hz4q    breakfast 0.6837853
8   /m/020t4k     stuffing 0.6493556
9   /m/0f010_    monjayaki 0.6427853
10  /m/09y2k2 italian food 0.6076508

Enjoy!!