グーグルドライブの検索で、PDFのテキストを読み取る方法

皆さん、こんにちは!

Google App Scriptの素晴らしい機能を使って、PDFファイルのテキストを自動的に説明欄に入力する方法をご紹介します。

最近、私はPDFファイルを整理している際に、その中身を素早く検索できる方法を模索していました。
そこで、GoogleのOCR(Optical Character Recognition)技術を利用して、PDF内のテキストを読み取り、それをGoogle App Scriptを使ってPDFの説明欄に入力するコードを作成しました。

このコードを使うことで、例えばGoogleドライブ上でPDFファイルを検索する際に、その中身のテキストをもとに検索できるようになります。これにより、PDFファイルの内容を把握しやすくなり、効率的な管理が可能となります。

この方法を試してみたい方は、ぜひ以下のコードをお試しください。

function convertPDFandUpdateDescription() {
  var folderId = "フォルダID"; // フォルダIDを指定してください
  var folder = DriveApp.getFolderById(folderId);
  var files = folder.getFilesByType(MimeType.PDF);

  var today = new Date(); // 今日の日付を取得

  while (files.hasNext()) {
    try{
      var file = files.next();
      
      // ファイルの最終更新日を取得
      var lastUpdated = file.getLastUpdated();

      // 最終更新日が今日の日付と一致する場合は処理をスキップ
      if (!isSameDay(lastUpdated, today)) {
        var pdfBlob = file.getBlob();
        console.log(file.getName());
        var pdfText = extractTextFromPDF(pdfBlob);

        // PDFの説明欄にテキストを記入
        file.setDescription(pdfText);
      }
    }catch(e){
      console.log('エラーを検知しました。');
      console.log('エラー内容:'+e.message);
    }
  }
}

// PDFからテキストを抽出する関数
function extractTextFromPDF(pdfBlob) {
  var pdfText = "";
  var tempFile = Drive.Files.create({title: "temp", mimeType: MimeType.GOOGLE_DOCS}, pdfBlob, {ocr: true});
  var doc = DocumentApp.openById(tempFile.id);
  var docText = doc.getBody().getText();
  pdfText += docText;
  doc.saveAndClose();
  Drive.Files.remove(tempFile.id);
  return pdfText;
}

// 2つの日付が同じ日であるかをチェックする関数
function isSameDay(date1, date2) {
  return date1.getFullYear() === date2.getFullYear() &&
         date1.getMonth() === date2.getMonth() &&
         date1.getDate() === date2.getDate();
}

注意!:フォルダのID に該当する箇所に、pdfファイルが入っているグーグルドライブのフォルダIDを入力してください。

このコードを使えば、PDFファイルの中身を手動で入力する手間が省けます。ぜひお試しください!


この記事が気に入ったらサポートをしてみませんか?