RailsでGoogle Cloud Visionを使って画像とテキスト認識をしてみる

水谷です。

前回の記事でTensorFlowをアプリから呼び出して画像に何が写っているか認識するアプリを紹介しました。

その後、Google Could Vision APIの発表があり、より画像認識を使いやすいかたちで提供されることになりました。

発表ブログ

Could Vision APIが何なのかやそのすごさはこちらの動画を参照してください。

先行プレビューの登録ができたので、ここではRailsアプリに組み込んで使ってみたいと思います。

画像認識

前回の記事と同じように、写真にあるものを認識してみましょう。

まず、APIには以下の形式で送信します。

{
  "requests": [
    {
      "image": {
        "content": "jisYIujijJIUJI...."
      },
      "features": [
        {
          "type": "LABEL_DETECTION",
          "maxResults": 10
        }
      ]
    }
  ]
}

contentにはBase64でエンコードした画像ファイルをいれます。typeには写真の中に何があるかを認識されるためのLABEL_DETECTIONを指定します。

レスポンスは下記のようなJSONになります。

{
  "responses": [
    {
      "labelAnnotations": [
        {
          "mid": "/m/07dm6",
          "description": "tiger",
          "score": 0.9995195
        },
        {
          "mid": "/m/01280g",
          "description": "wildlife",
          "score": 0.96001059
        },
        {
          "mid": "/m/09686",
          "description": "vertebrate",
          "score": 0.85704827
        },
        {
          "mid": "/m/04rky",
          "description": "mammal",
          "score": 0.85094059
        },
        {
          "mid": "/m/089v3",
          "description": "zoo",
          "score": 0.788213
        },
        {
          "mid": "/m/0cdnk",
          "description": "panthera",
          "score": 0.73796427
        },
        {
          "mid": "/m/0307l",
          "description": "felidae",
          "score": 0.57086021
        },
        {
          "mid": "/m/01lrl",
          "description": "carnivora",
          "score": 0.56989247
        },
        {
          "mid": "/m/0891tx",
          "description": "toyger",
          "score": 0.52950406
        }
      ]
    }
  ]
}

labelAnnotationsに認識した物体をその物体である可能性を示すscoreとともに配列で返ってきます。

今回は簡単にscoreが高いものを表示するようにします。実際のコードはこちらを参照ください。

GitHub

それでは結果をみてみましょう。

虎

ちゃんとtiger(虎)と認識しましたね。

もう一つやってみましょう。

クマ

これも、brown bear(クマ)と認識してくれます。

テキスト認識

Google Cloud Visionのもう一つ文字を認識する機能があります。それを試してみましょう。

まず、リクエストからみてみましょう。

{
  "requests": [
    {
      "image": {
        "content": "Yjiijijii54ji...."
      },
      "features": [
        {
          "type": "TEXT_DETECTION",
          "maxResults":10
        }
      ]
    }
  ]
}

先ほどの画像認識と同じような内容で、typeにTEXT_DETECTIONを指定します。

レスポンスは次のようになります。

{
  "responses": [
    {
      "textAnnotations": [
        {
          "locale": "ja",
          "description": "アルバイト募集\\n一緒にお店を盛り上げてくれる\\n仲間を募集しています。\\n業 務内容:ホール·厨房\\n年 齢:18歳以上\\n時給:アルバイト希望900円以上\\n社員希望相談\\n●シフト制\\n昇給あり\\n食事付き\\n·制服貸与\\n/※まずは、お電話またはスタッフまでお問い合わせください。\\nTEL : 04674485n担 当体木\\n",
          "boundingPoly": {
            "vertices": [
              {
                x: 275,
                y: 742
              },
              {
                x: 1910,
                y: 742
              },
              {
                x: 1910,
                y: 2908
              },
              {
                x: 275,
                y: 2908
              }
            ]
          }
        }
      ]
    }
  ]
}

descriptionに認識したテキストがはいります。

それでは、実際に写真をあげた結果はこのようになります。

0

ほぼ、認識できてますね。

手書きの場合も試してみましょう。

1

おしいですね。やはりところどころ認識できてないです。ただ、数字はちゃんと認識できてます。

まとめ

今回ご紹介した機能以外にも、顔、ロゴや建物などのランドマークなども認識することができます。

いままでも画像認識やOCRなどの技術はあったものの精度の面で不安があり、実際にサービスに使うためにはいくつもの壁を越える必要がありました。このGoogle Cloud VisionではGoogleのサービスの中で蓄積されたデータを基にしているので高い精度を期待できるのではないでしょうか。

そういえば、Google Photoがでた当初、「結婚式」と入力して結婚式で撮った写真が一覧にでたあの衝撃を思い出します。その技術がこんなにも手軽に使えるのはとてもわくわくしますね。

この記事を読んでギルドワークスに興味を持たれた方はお気軽に【ギルドワークスに依頼する】をご覧の上、お問合せください。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中