おはようございます!マネジメントオフィスいまむらの今村敦剛です。
手書きの日報から情報を自動で読み取り、データ化してくれたらすごく便利だと思いません?これをGoogle Apps Script (GAS) と Google Cloud Vision AI を連携させて実現してみました。
前回の記事はこちら
GASのcode.gs作成
前回はGoogle Cloudの設定とGAS・Googleスプレッドシートの準備をしました。今回はその続きで、GASのコード作成からです。
コードはGemini 2.5 Proに作ってもらったのですが、そのコードを参考までに貼っておきます。
このGASスクリプトの主な特徴を簡単に示しておきます。
- Google Cloud Vision APIとの連携
- 大規模ファイルに対応する非同期処理の実装(一旦APIに処理をリクエスト(asyncBatchAnnotate)し、完了するまで待機する「非同期処理」モデルを採用)
- Google Cloud Storage (GCS) の活用(GoogleドライブのPDFをGCSへアップロードし、OCR結果(JSON形式)をGCSからダウンロードし、処理後にこれらの一時ファイルを削除する、という一連の流れを自動で行う)
- 正規表現による柔軟なデータ抽出(OCRで読み取った長文テキストの中から、「日付」「担当者名」「良品数」「不良品数」といった必要な情報だけを正規表現(RegExp)を使って抜き出し)
- 再利用性と安全性を高めるスクリプトプロパティ(APIキーやフォルダIDなどの設定値をコード内に直接書き込む(ハードコーディングする)のではなく、「スクリプトプロパティ」という別の場所で管理)
- Googleドライブ上のファイル自動整理機能(処理が完了したPDFファイルを、指定された「処理済みフォルダ」へ自動的に移動させます)
いよいよ実行!
これで設定は全て完了です。
いよいよ実行ですが、初めてスクリプト(関数)を実行すると、必ず権限の承認を求められます。「詳細」→「(安全でないページ)に移動」をクリックし、権限を承認します。
こんな感じの手書き日報をPDFにして、設定をしたGoogleドライブのフォルダへ格納します。

すると、所定のGoogleスプレッドシートに、確かに保存されます。

この状態になったら、読み込んだPDFは「処理済み」のフォルダへ移動することになります。
今後の課題
今回は、たった4つの情報をOCRで読み取り、データ化する試みでした。しかし実際に企業で使われている手書き日報は、もっと情報量が多く、されにはフォーマットも複雑な場合が一般的です。
これを正しく読み取るのは至難の業です。解決の方向性としては、Googleの「Document AI」を活用するという方法があります。これは、単なるOCRではなく、あらかじめ日報のフォーマットをAIに学習させておく認識の方法です。ある程度のファインチューニングが必要です。ちょっと試してみたのですが、小さい文字や狭い入力欄などでは読み取りに難がありそうです。
それ以前の問題として、設定やAIのトレーニングが非常に難しいです。ある程度の専門知識が必要で、解読するのに精一杯です。(こんなことなら、人間が手書き日報を見て、一つ一つ手入力したほうが早いと、たぶんほとんどの人が思うはずです)
もうちょっといろいろ試してみて、良い方法があればまた皆さんに共有しますね。

