2018年5月19日土曜日

Google Vision API で OCR 入門

概要

Google Vision API は OCR が API 経由で使えるサービスです
1000 ユニットまでは無料で使えます
ユニットは画像に含まれる解析対象の情報の単位です (例えば 1 枚の画像から 1 つのテキストと 1 つの顔認識をする場合は 2 ユニット)
今回は API を使うためのセッティングから Ruby で呼び出すところまでやってみました

環境

  • macOS 10.13.4
  • Google Vision API 2018/05/11 時点
  • Ruby 2.4.1p111

API を有効にする

その前に Google Cloud Platform でプロジェクトを作成しプロジェクトの課金を有効にしましょう
詳しくはこちらの手順に従ってください
無料で使うことはできますが無料分があるだけなのでプロジェクトの課金を有効にする必要があります
もしかするとこの手順が一番大変かもしれません (クレカの登録必須)

このページに Cloud Vision API を有効にする ボタンがあるので選択します
まずプロジェクトを選択する画面になるので選択します
google_vision_api1.png

そのまま認証情報を作成する画面になるので進みます
google_vision_api2.png

認証情報を設定する

サービスアカウントを作成します
App Engine or Compute Engine は使わないので「いいえ」を選択する
google_vision_api3.png

アカウント名は好きな名前を設定してください
役割は今回「オーナー」を選択しましたが必要に応じて変更してください
google_vision_api6.png

これで「次へ」を選択すると認証用の JSON がダウンロードされます

ライブラリインストール

  • bundle init
  • vim Gemfile
gem "google-cloud"
  • bundle install --path vendor

テキスト検出するサンプルスクリプト

今回使用する画像はこれを使用します

  • vim sample.rb
project_id = "1234567890"
image_path = "./sample.gif"
key_file = "./project-name-xxxxxxxxxxxx.json"

require "google/cloud/vision"

vision = Google::Cloud::Vision.new(project: project_id, credentials: key_file)
image  = vision.image image_path

puts image.text
  • bundle exec ruby sample.rb

リターンした image オブジェクトは bounds, locale, pages, text, to_h, words が参照できます
words を使えば更に座標などの情報も取得できます

image.text.words.each { |word|
  p word.text
  p word.bounds
}

最後に

Google Vision API を使ってテキスト検出をしてみました
Vision API には他にもラベル検出やロゴ検出、顔検出なども可能です

割りと精度良く取得出来ると思います
ただテキスト解析の場合は文字単位で取得できるのでそれを座標を元に適当な単語につなげるなどの処理は必要です
画像内に必要な文字列が含まれているかどうかくらいの判断であればかなり使えると思います

参考サイト

0 件のコメント:

コメントを投稿