WEBスクレイピング(Selenium)で取得した画像の文字を解析して、テキストを取得したい案件があったので、その時の実装手順を備忘録として残します。

Google Cloud Vision APIについて

Google Cloud Vision APIとは、Google Cloud Platform提供する画像認識サービスです。GoogleのAPIということで個人的には、解析の精度も高いと思っています。毎月1000リクエストまでは、無料で利用できます。

実装手順

Google Cloud Vision APIの登録

Google Cloud Vision APIの登録は、以下の記事をご確認ください。
Cloud Vision APIの使い方まとめ (サンプルコード付き)

サーバー側の設定

今回、CentOS7とRubyを入れたサーバーを使っています。Cloud Vision APIの設定が済んだらgemでgoogle-api-clientをインストールします。

コマンドは以下のとおりです。

$ gem install google-api-client

Rubyのコード

私のブログから撮った、記事タイトルの画像を使って解析してみます。
ocr-test

以下のようにコードを書きます。

require 'google/apis/vision_v1'

vision = Google::Apis::VisionV1::VisionService.new
vision.key = 'xxxxx'
filename = '/test.png'

request = Google::Apis::VisionV1::BatchAnnotateImagesRequest.new(
  requests: [
    {
      image:{
        content: File.read(filename)
      },
      features: [
        {
          type: 'TEXT_DETECTION',
          maxResults: 1
        }
      ]
    }
  ]
)

result = vision.annotate_image(request) do |result, err |
  unless err then
    result.responses.each do | res |
      @str = res.text_annotations[0].description
    end
  else
    puts err
  end
  p @str
end

実行結果

実行結果は、問題なく画像解析が出来ていました。
ocr-test2

参考

今更だけどGoogle Cloud Vision APIでOCR その1
Ruby と Google Cloud Platform の Cloud Vision API で画像を解析して貰う