GASでOCR
導入方法・使い方
入力フォルダと出力フォルダをGoogle Drive上に作る
自分として実行、自分のみ実行可能
URLをショートカットにしてデスクトップなどに置いておく
OCRしたいファイルを入力フォルダに置き、ショートカットを実行する
出力フォルダにOCR結果のテキストファイルができる
入出力フォルダをローカルと同期しておくと便利
10秒くらいかかる感じ
複数ファイルだともっとかかる?
コード
code:js
function main() {
const inputDirId = "入力フォルダのID";
const outputDirId = "出力フォルダのID";
const inputDir = DriveApp.getFolderById(inputDirId);
const outputDir = DriveApp.getFolderById(outputDirId);
const inputFiles = inputDir.getFiles();
while (inputFiles.hasNext()) {
const inputFile = inputFiles.next();
const inputFileName = inputFile.getName().split("\.")0; // Googleドキュメントを生成してOCRする
const requestBody = {
title: inputFileName,
// mimeType: "image/jpeg",
"parents": "id": outputDirId },
};
const docFile = Drive.Files.insert(requestBody, inputFile, { ocr: true });
const docId = docFile.getId();
const doc = DocumentApp.openById(docId);
let text = doc.getBody().getText();
// テキストの処理
// 日本語単語間の空白を除去
// TODO: 不要な改行を除去
Logger.log(text);
// 出力フォルダにOCR結果を保存する
outputDir.createFile(inputFileName + ".txt", text);
// 一時生成したドキュメントの削除
DriveApp.getFileById(docId).setTrashed(true);
// 入力ファイルを出力フォルダに移動
inputFile.moveTo(outputDir);
}
}
function doGet(e) {
// TODO: error handling?
main();
// var params = JSON.stringify(e);
// return HtmlService.createHtmlOutput(params);
return HtmlService.createHtmlOutput("OCR Completed!");
}