GASでWebページの画像をOCR機能を使用し文字を抜き出しシートに入れる【Google Apps Script】
下記サンプルページの画像を対象に、画像のsrcからURLを取得し、画像のURLを特定します。
そして特定したURLから画像をGoogleDriveに保存し、DriveAPIでコピー時にOCRを実行し文字を抜き出す。
抜き出した文字をシートに移すまでの一連の流れになります。
GAS Parsrer id → 1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw
実際に使用したサンプルコード--------------------------------
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sample');
function myFunction() {
//UrlFetchApp機能はWebサイトやURLからデータを取得する機能 → 文字コードを指定してWebのデータを取得する
//まずWebページのデータを文字コードを指定して取得する
let content = UrlFetchApp.fetch('https://vba.company/samplepage/11/').getContentText("utf-8");
//Parserを使用して指定したWebページから画像のsrcURLを取得する
//その情報の中から必要な部分を取得する
let temp = Parser.data(content).from('').to('').build();
//必要な部分src部分を抜き出す
let srcdata = Parser.data(temp).from('src="').to('" alt').build();
//URLから画像を自分のGoogleDriveに保存する
//その画像をBlob(Binary Large Object)として取得するためのコード
//指定したURLを元に画像データを取得する
let imagedata = UrlFetchApp.fetch(srcdata).getBlob();
//保存したいGoogleDriveのフォルダを指定しフォルダにファイルを保存する
let folder = DriveApp.getFolderById('1OV6EVSp3QfkrQCdXDeASgdU87c_fjFfI');
//作成するファイルは取得したimagedataを使用
let file = folder.createFile(imagedata);
//作成したファイルのIDを取得する
let imageFileId = file.getId()
//DriveAPIでファイルコピー時にOCRを実行 ファイル名、OCR設定有効でtrue、言語を日本語で設定(英語en
let imagecopyData = Drive.Files.copy({title: "sampletitle"}, imageFileId, {"ocr": true,"ocrLanguage": "ja"});
//DocumentAppクラスで画像を読み込み、テキストを取得
let ocrData = DocumentApp.openById(imagecopyData.id).getBody().getText();
//改行で分けて配列に入れる
let dataAry = ocrData.split('\n');
//最後の配列用
let finalary = []
//2次元に入れなおす
for(let i=0; i<dataAry.length; i++){
finalary.push([dataAry[i]]);
}
//シートの1行目1列目にサイズを合わせて2次元配列を入れる
sheet.getRange(1,1,finalary.length,finalary[0].length).setValues(finalary);
//元の画像データファイルを削除
Drive.Files.remove(imageFileId);
//コピーした側のファイル名のファイルを削除
Drive.Files.remove(imagecopyData.id);
}
//シートの最終行に入れる
// sheet.appendRow(dataAry);