GASで複数の画像をOCR処理してテキストファイルに保存するスクリプト

Google Apps Scriptコンピュータ
Google Apps Script

始めてGoogle Apps Script(GAS)に触れてみました。

スクリプトの内容はGoogleドキュメントによる複数の画像ファイルへのOCR処理の自動化になります。
Googleドライブのフォルダに複数の画像ファイルをアップロードしスクリプトを実行。結果がテキストファイル(OCR_日時.txt)で保存されます。

スクリプトを実行するために、Apps Scriptのメニュー「サービス」から「Drive」を追加する必要がありす。
また、初回スクリプトを実行する際実行権限についての問い合わせがありますので応答する必要がありました。

スクリプト内でフォルダーIDを指定する場所がありますが、フォルダIDはGoogleドライブでフォルダを開いた際のURLの一番左部分(ローカルファイルのパスで言うところファイル名、例のxxxxx)がフォルダIDになります。

https://drive.google.com/drive/folders/xxxxx
function myFolderOCR() {
  const ocrFolderID = 'OCRする画像ファイルが保存されたフォルダID';

  // 画像ファイルの一覧を取得
  let files = DriveApp.getFolderById(ocrFolderID).getFiles();
 
  // OCRの設定
  let option = {
    'ocr': true,
    'ocrLanguage': 'ja',
  }

  // 結果のテキストを格納する変数
  let result = '';

  // 画像ファイル処理ループ
  while(files.hasNext()){
    let file = files.next();

    subject = file.getName(); // 件名
    let resource = { title: subject };
    
    let image = Drive.Files.copy(resource, file.getId(), option);
    let doc = DocumentApp.openById(image.id);
    let text = doc.getBody().getText();

    // ドキュメントファイルの削除
    Drive.Files.remove(doc.getId());
    result = result + text
  }

  // 結果を保存
  const textFolderID = 'テキストファイルを出力するフォルダID';

  // フォルダーオブジェクトの取得
  let folder = DriveApp.getFolderById(textFolderID);

  // 日時からファイル名を生成
  let date = new Date();
  let fileName = "ocr_" + Utilities.formatDate( date, 'Asia/Tokyo', 'yyyyMMddhhmmss') + ".txt";


  // テキストファイルに保存
  let contentType = 'text/plain'; // MIME
  let charSet = 'UTF8'; // 文字コード
  let blob = Utilities.newBlob("", contentType, fileName).setDataFromString(result, charSet);
  folder.createFile(blob);
  
  console.log(fileName);
} 

コメント