表題の通り、Google Apps Script(以後GAS)で、

指定の画像から文字列を取得できるか?試してみた。

Google Apps ScriptのHTML ServiceでGoogle Calendarの予定を取得してみる


先に画像から文字列を取得あたりだけど、

以前、Googleドキュメントで画像ファイルから文字列を抜き取ってみるの記事でGoogleドキュメントを活用して、画像から文字列を取得してみた。


この技術を光学文字認識(Optical character recognition:OCR)と呼ぶ。

光学文字認識 - Wikipedia


ここらへんの話はオライリーから出版されている


picture_large978-4-87311-607-5


実践コンピュータビジョン


picture_large978-4-87311-758-4


ゼロから作るDeep Learningが良いかも




試す画像は、


blog_cap_sample


SOY Shopの管理画面の注文一覧ページで表示速度周りを改修していますの文章の箇所のキャプチャで、

この画像を/site/sample/blog_cap.jpgにアップロードしておいた。


それでは早速コードを書いてみる。

Googleドライブの任意の箇所でGoogle Apps Scriptのファイルを作成する。


作成後、下記のようなコードを記述した。


function myFunction() {
  var imageBlob = UrlFetchApp.fetch("https://saitodev.co/site/sample/blog_cap.jpg").getBlob();
  var resource = {
    title: imageBlob.getName(),
    mimeType: imageBlob.getContentType()
  };
  var options = {
    ocr: true
  };
  Drive.Files.insert(resource, imageBlob, options);
}

コードの序盤で画像を取得し、後半でGoogleドライブ内に画像を挿入する。

挿入の際にoptionでocrをtrueにすれば、Googleドキュメント内に画像が貼り付けられ、

下に画像から抜き出した文章がペーストされるらしい。


コードを作成した後、コードを実行してみるけれども、

Driveがないというエラーで実行が止まってしまう。


Google Apps Script内でOCRを利用する場合は、Googleの拡張サービスでDrive APIを有効にする必要があるらしい。


というわけで、


gas_api_ocr


リソース > Googleの拡張サービス...を選択して、


gas_api_ocr_drive


Drive APIをONにする。

この画面に記載されている注釈にあるようにGoogle API コンソールでもDrive APIを有効にする必要があるので、

記載されているリンクからGoogle Cloud Platformのダッシュボードを開く。


gas_api_ocr_drive_dash


gas_api_ocr_drive_dash1


画面上部のダッシュボードの表記の横にあるAPIとサービスの有効化を選択し、


gas_api_ocr_drive_lib


Google Drive APIを探し、APIを有効にする。




Drive APIを有効にした後、スクリプトエディタから再び実行してみると、

エラーはなくなり無事に実行された。


実行後はGoogleドライブ内に画像のファイル名と同名のGoogleドキュメントのファイルが生成されていた。


結果は下記の通り、

SOYShopの管理画面の注文一覧ページで表示速度 周りを改修しています
2018 Οι 25 SOY CMS SOYSEορ
最近のSOYShopの開発状況ですが、 月商数千万円のネットショップのメンテナンスの依頼が増え、管理画面の表示速度が気になるショップが増 えてきました。
半年程前から管理画面にところどころに潜む無駄な処理を改修しています。
具体的にどの箇所の改修を行っているかを挙げると、
注文量瑚 -
- 沮文**- ride **「**入力】 -性円 ■書xールア*レ入 - se - - -*** 」ー**** - Iー**** *載-の計書 n - 赴翼
-李韋--c* --
#x- 注文- ä - s г. в са затвата в зван kop na na si а нионе занестива винтдь mo assa on esse i snimas st = 4цагч | zoатагана аз Na h- saan na ana titled suit ------ n - - t d 2. 量LAL וושינוייץ וויוני בבחלב - и вные митии в то винтан 15 | * ■ SS S S S S S S SS 0 SS L S S S 0 MM SS SSL S S S S S CC S L L L t L S S S L S S S L CM S KKSLS LS в изност от тази и въвта. 蚤*飞 t
注文一覧ページの見直しが主です。
自由を求めてオープンソースのネットショップパッケージへ。軌道に乗った頃に遭遇する問題についてに記載 してある通り、
ネットショップにおいてデータベースが肥大化しやすいのは注文であって、 ショップを運営していると注文一覧から顕著に表示速度が低下してきます。
コードを確認していると、
顧客名の箇所にあるように顧客IDからDAOを介して、顧客情報をすべて取得した後、名前だけ取り出すとい うコードの行数は大幅に減るけれども、計算量としては多くなるような処理がいくつかあった。
SOY2DA○でデータベースから値を取り出す

Googleドキュメントで画像ファイルから文字列を抜き取ってみるの記事と比較してみると、

日付や挿入されている文字入りの画像の認識は難しかったみたいだけれども、本文の箇所はほぼ確実に取得できていた。