この記事では、Google Apps Scriptを利用して、Google Drive内の画像ファイルにOCRを適用し、テキストを抽出する方法を説明します。
特に、手書きや印刷された文書が含まれる画像ファイルが多く、これらを自動的にテキスト化することで、内容の検索や分析を効率的に行うことが可能になります。
Google Apps Scriptの準備
まず、Google Apps Scriptの新しいプロジェクトを作成します。Google Driveにアクセスし、新規
> Google Apps Script
で新しいプロジェクトを作成します。
Google Driveから画像ファイルを取得
Google Apps Scriptを使って、Google Drive上の特定のフォルダから画像ファイルを取得するためのコードを記述します。画像ファイルのタイプとしてJPEGやPNGを指定します。
function processImages() {
var folderId = 'あなたのフォルダID'; // 対象のフォルダIDを指定
var folder = DriveApp.getFolderById(folderId);
var images = folder.getFilesByType('image/jpeg'); // JPEG画像を取得(PNGも追加可能)
var outputText = ''; // テキストデータを格納する変数
while (images.hasNext()) {
var image = images.next();
var imageName = image.getName();
// OCR処理を実行
var docText = ocrImage(image);
outputText += 'ファイル名: ' + imageName + '\n' + docText + '\n\n';
// 処理後の画像を削除または他の操作を実施する場合
// image.setTrashed(true); // 画像をゴミ箱に移動
}
// 最終的に抽出したテキストを1つのファイルとして保存
var textFile = folder.createFile('extracted_text.txt', outputText, MimeType.PLAIN_TEXT);
Logger.log('OCR処理が完了しました。出力ファイル: ' + textFile.getUrl());
}
OCR処理の実行
OCR処理を行うには、Google Drive APIを使って画像をGoogleドキュメントに変換します。以下の関数で画像ファイルをOCR処理します。
function ocrImage(image) {
var docName = image.getName().split('.')[0]; // ファイル名を取得
var requestBody = {
title: docName, // 変換後のGoogleドキュメント名
mimeType: 'image/jpeg'
};
// OCR処理を実行(画像をGoogleドキュメントに変換)
try {
var newDoc = Drive.Files.insert(requestBody, image, { ocr: true });
// 変換後のGoogleドキュメントを開き、テキストを取得
var doc = DocumentApp.openById(newDoc.id);
var text = doc.getBody().getText();
// ドキュメントをゴミ箱に移動してクリーンアップ
DriveApp.getFileById(newDoc.id).setTrashed(true);
return text;
} catch (e) {
Logger.log('OCR処理中にエラーが発生しました: ' + e.message);
return '';
}
}
Drive APIを使います。
AppScriptのサービスからDrive APIを選択し、v2を有効にしてください。
(v3では動きません)
4. OCRのレート制限を避けるためのインターバル
Google APIのレート制限に引っかからないように、OCRリクエスト間に適切な間隔を空ける必要があります。Utilities.sleep()
を使用して、リクエスト間に遅延を挿入することができます。例えば、1秒間隔でOCR処理を行う場合は以下のようにします。
Utilities.sleep(1000); // 1秒待機
これを画像処理のループ内に挿入することで、過剰なリクエストを防ぐことができます。
抽出したテキストをファイルに保存
最後に、OCRで抽出したテキストを1つのテキストファイルにまとめて保存します。Google Drive APIを使って、生成したテキストをファイルとして保存します。
var textFile = folder.createFile('extracted_text.txt', outputText, MimeType.PLAIN_TEXT);
Logger.log('OCR処理が完了しました。出力ファイル: ' + textFile.getUrl());
まとめ
このスクリプトでは、指定したGoogle Driveのフォルダ内にあるJPEG画像を順次OCR処理し、抽出したテキストを1つのファイルにまとめて出力します。Drive.Files.insert()
を使って画像をGoogleドキュメントに変換し、その後ドキュメントからテキストを抽出します。レート制限を避けるために、各OCR処理の間に待機時間を入れることを忘れないようにしましょう。