一枚二枚なら下記事のやり方で。
画像をテキストに変換する仕組み。
googleドキュメントでもだいぶ楽なんだけど、Gasで試作して見た。
試作版
function get_ocr() {
var lastRow = SpreadsheetApp.getActiveSheet().getLastRow();
for(var i = 3; i <= lastRow; i++) {
//画像にアクセス
//Basic認証
var sheetID = i;
var sheetID1 = "B" + sheetID;
var sheetID2 = "D" + sheetID;
var sheetID3 = "E" + sheetID;
var domain = SpreadsheetApp.getActiveSheet().getRange("B1").getValue();//取得URL
var fileURL = SpreadsheetApp.getActiveSheet().getRange(sheetID1).getValue();
var user = "hoge";
var pass = "huga";
var options = {
"headers" : {"Authorization" : " Basic " + Utilities.base64Encode(user + ":" + pass)},
"muteHttpExceptions": true
};
var file = UrlFetchApp.fetch(fileURL, options);
var blob = file.getBlob();
var name = "【文字起こし】" + fileURL;
var file = {
title: name,
mimeType: 'image/png',
parents: [{"id": "XXXXXXXXXX"}]//フォルダのIDを入れる
};
var option = {
ocr: true
}
file = Drive.Files.insert(file, blob, option);
var doc = DocumentApp.openByUrl(file.embedLink);
var body = doc.getBody().getText();
var docID = doc.getId();
var docUrl = "https://docs.google.com/document/d/" + docID + "/edit";
//docファイルの操作
var docFile = DocumentApp.openById(docID); //ドキュメントを取得
var docText = docFile.getBody().getText()
Logger.log(docFile.getName()); //ドキュメントタイトルをログに表示
Logger.log(docText); //ドキュメントの内容をログに表示
Logger.log(docUrl);
SpreadsheetApp.getActiveSheet().getRange(sheetID2).setValue(docText);
}
}
ループで処理してるけど、ちょっと高性能すぎるというか・・・
もっと単純にまとめたいなーと思いました。
上記はネット上の画像を取得してくる仕組みにしたのだけれど、画像URLが画一的でなくてエラーがおおくなってしまった。
特定のgoogledriveフォルダに入れた画像を文字認識 & スプレッドシートにリストアップ
の方が使いやすいかな、とおもいました。
上のプラグラムで利用しているfetchはめちゃくそ便利ですが、
回数制限があるらしいので。
改善版(ドライブフォルダ参照)
function get_ocr2() {
var folderID = "xxxxxxxxxxx"; //文字起こし元画像のを入れるドライブのID
var files = DriveApp.getFolderById(folderID).getFiles();
for(var i = 0; files.hasNext(); i++) {
var file = files.next();
Logger.log(file);
var sheetID = i + 1;
var sheetID1 = "A" + sheetID;
var sheetID2 = "B" + sheetID;
var sheetID3 = "C" + sheetID;
var blob = file.getBlob();
var name = file.getName();
var file = {
title: name,
mimeType: 'image/png',
parents: [{"id": folderID}]
};
var option = {
ocr: true
}
file = Drive.Files.insert(file, blob, option);
var doc = DocumentApp.openByUrl(file.embedLink);
var body = doc.getBody().getText();
var docID = doc.getId();
var docUrl = "https://docs.google.com/document/d/" + docID + "/edit";
//docファイルの操作
var docFile = DocumentApp.openById(docID); //ドキュメントを取得
var docText = docFile.getBody().getText();
SpreadsheetApp.getActiveSheet().getRange(sheetID1).setValue(name);
SpreadsheetApp.getActiveSheet().getRange(sheetID2).setValue(docText);
SpreadsheetApp.getActiveSheet().getRange(sheetID3).setValue(docUrl);
}
}
- フォルダに画像をがばっといれる
- 上記スクリプトを実行
- スプレッドシートに書き起こし文字と、ドキュメントファイルのURLが記載されていく
このほうが安定性高くていい感じです。
そういう業務が多い方は活用してみてください。
名刺の画像とかで試すと超いいかもです。