google driveのOCRを試すWebアプリを作ってみた

Ruby 認定資格Gold合格したので、何か作ろうかなと考えていた所、
Google DriveのOCRって使い物になるのかなと思い、
ファイルをアップロードしたらGoogle Driveに登録して、OCRのテキストを取得するような物を作ってみた。

Trying Google Drive OCR
利用するにあたって、GoogleのアカウントとDriveの利用、OAuth認証が必要です。
また、ここでアップロードされたファイルは、Driveに保存されます。

イメージはこちら

見て分かる通り、Driveに元画像とOCRの解析結果テキストが一つになった文書が作成されます。
テキストだけの取得は、色々調べたけどどうしてもページ内に埋め込めず断念。
というか、 OCRの精度は低い。あと日本語もまだ対応してないっぽい。


以下は作成時のメモ

Google Drive SDKのドキュメントはこちらにある。
Google Drive SDK — Google Developers
SDKAPIがあって、SDKChrome Web Storeに色々登録しろとか書いてあるけど、今回みたいなDriveへのファイルの登録とか取得だけだったらAPIだけでいい。SDKはDriveのUIに作成したアプリのメニューを追加したり連携したりする場合に使う。


APIを使う場合は、Google API ConsoleGoogle Accounts から、Drive APIを有効にし、Client IDとsecretを発行する。

今回作ったソースは https://github.com/kencharos/google-drive-oc-ruby に。
初めてGitをまともに使ったので、色々と変な事している気がする。
個人で実行する場合は上記のClient IDとsecretを、crient_secret.jsonに記載する。


アプリケーションは、heroku上で、sinatra,datamapper,haml などで作りました。
sinatraとてもいいです。


なお、herokuではファイルアップロードが一切できないと勘違い*1しており、最初はブラウザ側でFile APIを使用してbase64エンコードしてサーバーに送り、サーバー側でエンコードするような処理をしてた。
ファイル選択時にプレビュー出るのはその名残。


今回、初めてgit,github,ruby,herokuを使ってみました。
職場の、java, 占有ロックが基本の某バージョン管理ツール、起動するまで5分かかるサーバーという環境に比べると
色々と快適すぎて涙が出ます。


今後は、Rspec, Scala、html5の各API、ましなUI などもやってみる。


作成にあたり、以下のページを参考にさせていただきました。ありがとうございます。
Heroku上でSinatraアプリを動かすまでのまとめ - まちゅダイアリー(2011-10-02)
HerokuアプリをGitHubにもプッシュする - アインシュタインの電話番号
HerokuとGitHubの両方にプッシュする時の秘密にしたい値の扱い - アインシュタインの電話番号

*1:ファイルを書き込める領域が無いだけで、tmpfileは使える