RubyからGoogleCloudVisionを使ってOCRをしてみる

今回APIキーを使用したかったためgoogle-api-clientを使用してOCRしてみました。

画像

今回はこの画像を作りOCRしました。

吾輩は猫である。

コード

こんな感じのクラスを作ってみました。jsonでの出力とtextでの出力ができます。

準備

$ echo "gem 'google-api-client'" >> Gemfile
$ bundle

実行方法

テキストで出力

クラスをrequireして、APIキーと画像パスを渡すとOCRした文字列が返ってきます。

require './gcv_api'

gcv = GcvApi.new "xxxxxxxxxxxx"
p gcv.text 'wagahai.jpg'

#=> ["吾輩\n名前はまだ\nわがはいは猫である。\n無い。\nどこで生れたかとんと見当けんとうがつかぬ。何でも薄暗いじめじめした所で\nニャーニャー泣いていた事だけは記憶している。\n吾輩はここで始めて人間とい\nうものを見た。しかもあとで聞くとそれは書生という人間中で一番獲悪どうあ\nくな種族であったそうだ。この書生というのは時々我々を捕つかまえて煮にて\n食うという話である。しかしその当時は何という考もなかったから別段恐しい\nとも思わなかった。ただ彼の掌てのひらに載せられてスーと持ち上げられた時\n何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生\nの顔を見たのがいわゆる人間というものの見始みはじめであろう。この時妙な\nものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの\n顔がつるつるしてまるで薬缶やかんだ。その後ご猫にもだいぶ逢あったがこん\nな片輪かたわには一度も出会でくわした事がない。のみならず顔の真中があま\nりに突起している。そうしてその穴の中から時々ぶうぷうと煙けむりを吹く。\nどうも咽むせぽくて実に弱った。これが人間の飲む煙草たばこというものであ\nる事はようやくこの頃知った。\n"]

JSONで出力

解析した結果をJSON文字列で出力します。この文字列をファイルに書き出すことでgcv2hocrなどで使えます。

require './gcv_api'

gcv = GcvApi.new "xxxxxxxxxxxx"
p gcv.text 'wagahai.jpg'
#=> "{\"responses\":[{\"fullTextAnnotation\":{\"pages\":[{\"blocks\":[{\"blockType\":\"TEXT\",\"boundingBox\":{\"vertices\":[{\"x\":76,\"y\":56},{\"x\":193,\"y\":56},{\"x\":193,\"y\":115},{\"x\":76,\"y\":115}]},\"paragraphs\":[{\"boundingBox\":{\"vertices\":[{\"x\":76,\"y\":56},{\"x\":193,\"y\":56},{\"x\":193,\"y\":115},{\"x\":76,\"y\":115}]},\"property\":{\"detectedLanguages\":[{\"confidence\":1,\"languageCode\":\"ja\"}]},\"words\"・・・