问题描述
我对AppScrip中的OCR功能有一个奇怪的问题。我使用一个函数从PDF中提取文本。在自动化过程中使用它来处理来自客户端的PDF。这是功能:
function _sprintf(message){
const regexp = RegExp('%s','g');
let match;
let index = 1;
while((match = regexp.exec(message)) !== null) {
let replacement = arguments[index];
if (replacement) {
let messagetoArray = message.split('');
messagetoArray.splice(match.index,regexp.lastIndex - match.index,replacement);
message = messagetoArray.join('');
index++;
} else {
break;
}
}
return message;
}
_sprintf("my name is %s,my age is %s","bob",50); // my name is bob,my age is 50
最近几年来,它一直正常工作,没有出现任何问题。
自几周前以来,我对此功能一直没有遇到任何问题。有两个不同的用户使用它,其中一个用户无法正常工作。文本以奇怪的顺序以垂直线出现。当我从函数取回文本时,它将无法使用。
奇怪的是,这只发生在第二个用户身上,第一个用户正常工作。我什至创建了第三个用户以检查它是否也发生在该第三个用户中,但是它可以正常工作,并且得到了正确的回报。因此,尽管这是Google服务器的一个守时的问题,但我继续工作,将自动化过程更改为第三个用户temporarilly。
不幸的是,从昨天开始,我对所有三个用户都遇到了同样的问题:我收到了错误的文字回复,这是没有用的。
function extractTextFromPDF_v1(file)
{
var blob = file.getBlob();
var resource =
{
title: blob.getName(),mimeType: blob.getContentType()
}
var file = Drive.Files.insert(resource,blob,{ocr: true,ocrLanguage: "en"});
var doc = DocumentApp.openById(file.id);
var text = doc.getBody().getText();
Drive.Files.trash(file.id);
return text
}
但是它返回的答案完全相同。
任何帮助将不胜感激。我们将必须手动处理所有PDF文件,每个月有数百个(!)
提前谢谢
解决方法
也许可以这样尝试:
var blob = PDF_file.copyBlob();
var file = DriveApp.createFile(blob);
var id = Drive.Files.insert({title: "tmp_doc",mimeType:MimeType.GOOGLE_DOCS},file.getBlob()).id;
var rt = DocumentApp.openById(id);
var txt = rt.getBody().getText();
Drive.Files.remove(id);
file.setTrashed(true);