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);

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です