GASで画像データをOCRする方法!文章(英語+日本語)を読み取りテキスト化

Google Apps Script(GAS)には、画像データにある文章を読み取って、テキストデータを生成するOCRが可能です。

今回、画像データに含まれる英語と日本語の2種類の文章をOCRするGASスクリプトを解説します。

OCRとは画像データからテキスト読み取り

OCRとは、スキャンした書類やメモの画像データにある文章を読み取って、テキストデータとして抽出することです。

単に書類をスキャンすることで電子データにしても、画像データではデータ活用に不便です。

印刷された文章をスマホで撮影した画像データからOCRすればテキストを抽出できる

OCRを行うことで書類やスマホで撮影した文章を簡単にテキストに変換できます。

かつてはOCRは画像の読み取り能力が低く、認識率もまだまだでした。

しかし、AI技術の発展によって、OCRは飛躍的に性能が向上しました。

日本語は漢字などがあって難しいですが、アルファベット26文字しかない英語は、すでにかなり正確に読み取ることができるようになっています。

OCRすることで人間がパソコンで打ち直す手間を大幅に軽減可能です。

OCRがGASでも簡単に可能

そんな便利なOCRですが、Google Apps Script(GAS)では実は簡単に実装できます。

GASのスクリプトを記述するスクリプトエディタでOCR機能を持ったサービスを追加し、OCRのスクリプトを書くだけで画像にある文章を読み取って、テキスト化してくれます。

GASのOCRはGoogleのAIによる画像認識を活用しているので、読み取り精度も非常に高いです。

10数行程度のGASコードを書くだけで、OCRを自動で実行できることができます。

GASスクリプトでOCRする事前設定

実際にGoogle Apps Script(GAS)でOCRを行うには事前設定が必要となります。

それはDriveサービス(drive API)をGASプロジェクトで有効にすることです。

1.GASスクリプトエディタで、当該のプロジェクトで、「サービス」の右にある+アイコンを選択します。

Google Apps Script(GAS)によるOCRを行うスクリプトを実行するため、Driveサービスをプロジェクトに追加

2.「サービスを追加」でDrive APIを選択し、「追加」ボタンをクリックします。

Google Apps Script(GAS)のサービス一覧画面からDrive(drive API)を選択し、追加

※バージョンは自動入力される最新バージョンを選択しましょう。

以上でGASプロジェクトでDrive APIサービスが追加され、Driveサービスの様々なクラスやメソッドが使えるようになります。

Drive APIのメソッドの中にOCRを実行する機能があるので、それを活用して、GASでOCRを実行します。

GASで英語の画像データをOCR

Google Apps Script(GAS)でOCRを行う事前準備が完了したら、OCRを実行するスクリプトをサンプルコードで解説します。

まずは日本語ではなく、OCRの精度が高い英語の画像データからテキストを読み取ってみます。

Google Apps Script(GAS)のOCRで読み取りテストする英語(書籍より抜粋)

上記はとある英語の書籍をスマホで撮影した画像データです。

このスマホで撮影した画像に含まれている英語の文章を、GASによるOCRでテキスト抽出します。

事前に上記の画像をGoogleドライブにアップロードした上で、

下記の20行のGASサンプルコードが英語文章の画像をOCRするサンプルコードです。

Google Apps Script(GAS)で英語の文章が書かれた画像データをOCRしてテキストを抽出するサンプルスクリプト
function imageOcr() {
  //Googleドライブにアップした画像のファイルIDを変数で定義
  //サンプルコードを実行する場合は各自のファイルIDに書き換え
  let imageFileId = "1fe-EPbGWLlO_pigYQ9BY25FQ13cJ7-_e";
  //OCRのファイルを生成する際の名称
  let resource = {
    title: "OCR_TEST" 
  };
  //OCRファイル生成時のオプションを記載
  let option = {
    "ocr": true,// OCR設定で有効にするため、trueを設定
    "ocrLanguage": "en",// OCRを行う言語を英語で設定
  }
  //DriveAPIでファイルコピー時にOCRを実行する形で実行
  let imageData = Drive.Files.copy(resource, imageFileId, option);
  //DocumentAppクラスで画像を読み込み、テキストを取得
  let ocrData = DocumentApp.openById(imageData.id).getBody().getText();
  //OCRで取得したテキストデータをログ出力
  console.log(ocrData);
}

GASでOCRを行っているのは、15行目のDrive.Files.copyメソッドです。

このOCRのメソッドに、ファイル名と画像のGoogleドライブID、オプション設定を引数にすることで実行できます。

ファイル名やオプションはオブジェクト形式なので、記述方法はサンプルのように記述します。

GASによるOCRスクリプトを実行すると、ログ出力にOCR結果が表示されます。

Google Apps Script(GAS)のOCRプログラムを実行した結果、画像ファイルに含まれた英語をテキスト化してログ出力

今回は書籍をスマホ撮影したデータなのでは認識率は100%となっています。

さらに、Drive.Files.copyメソッドを実行したタイミングで、OCRした画像とテキスト抽出した結果が出力されたGoogleドキュメントが生成されます。

Google Apps Script(GAS)のOCRスクリプトを実行すると、OCRしたデータがGoogleドキュメントで生成

このようにOCR結果で画像と抽出したテキストデータがGoogleドキュメントにまとめられるのでとても便利です。

GASで日本語の画像データをOCR

続いて日本語の文章が写っている画像データでも、Google Apps Script(GAS)によるOCRを実行してみます。

印刷された文章をスマホで撮影した画像データからOCRすればテキストを抽出できる

日本語画像は前述した印刷物を撮影した画像を用います。

GASでOCRするスクリプトは先程と同様ですが、12行目のOCR言語設定を日本語「ja」に変更します。

Google Apps Script(GAS)で日本語のOCRを行うためには、OCRの言語設定を「ja」として設定する必要あり

GASスクリプトを実行すると、ログ出力にOCRした結果が出力されます。

Google Apps Script(GAS)による日本語OCRの実行結果

一部空白が含まれていますが、それさえ取り除けば、ほぼ正確に認識できています。

おそらく手書きだと、グッと認識精度が下がってしまいますが、プリントアウトした書類や、書籍を撮影した写真であれば、かなり正確に認識が可能です。

Google Apps Script(GAS)でOCRを実行したGoogleドキュメントの生成ファイル

ただ、Googleドキュメントでは、テキストの見出し設定が働いてしまい、文字が途中でおかしくなっています。

このあたりはテキストは問題ないものの、Googleドキュメントの整形が必要です。

まとめ・終わりに

今回、Google Apps Script(GAS)を使って英語/日本語の情報が撮影された画像をOCRする方法を紹介しました。

GASにはOCRを簡単に実現できるようになっており、今回はたった20行のGASスクリプトでOCRを実行しました。

まだまだ手書きの場合は認識率は厳しいかもしれませんが、印刷データであれば、かなり正確に認識できます。

書類やスマホで撮影した画像をGASでOCRできれば、色々な自動化・効率化に応用可能です。

GASでOCRに取り組みたい場合は、ぜひ紹介したスクリプトを参考にしてみてください。