はじめに
OCRを使って画像から文字を抽出したいことがありましたが、自前で作るのはしんどいので既存のサービスで良いものがないか探していました
Cloud Vision APIを使えばかなり簡単に実現できそうだったので紹介します
事前準備
googleのドキュメントを参考にCloud Vision APIを有効にしてください
https://cloud.google.com/vision/docs/detect-labels-image-client-libraries?hl=ja
jsonでcredential情報がダウンロードできるので、任意の場所において
環境変数GOOGLE_APPLICATION_CREDENTIALS
で指定してください
cloud vision APiのgemをインストール
gem install google-cloud-vision
使い方
今回はこちらの自分のQiitaのマイページの一部分に対してOCRを使ってみます
require "google/cloud/vision"
def image_annotator
@image_annotator ||= Google::Cloud::Vision.image_annotator
end
image = 'mypage.png'
response = image_annotator.text_detection(
image: image,
max_results: 1
)
response.responses.each do |res|
res.text_annotations.each do |text|
puts text.description
end
end
たったこれだけのコードでとりあえずは画像内の文字を取り出すことができます
実行した結果がこちらです
"9\n|投稿\nYoshiki Horikawa\n@yhorikawa\n45 Contributions\n1\nフォロー\nえんじにあさんねんめ\n1\nフォロワー\nプロフィールを編集する"
"9"
"|"
"投稿"
"Yoshiki"
"Horikawa"
"@yhorikawa"
"45"
"Contributions"
"1"
"フォロー"
"えんじにあ"
"さん"
"ねんめ"
"1"
"フォロワー"
"プロフィール"
"を"
"編集"
"する"
画像内の文字が認識されていますね!
まとめ
自分で実装するのは大変なOCRですが、Cloud Vision APIを使うことで簡単に実現することができました
今回は単純に画像内の文字を読み取るだけでしたが、文字の位置情報なども取れるので、できることが色々ありそうです