Google AppScript中PDF的OCR无法正常工作

问题描述

我对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。

不幸的是,从昨天开始,我对所有三个用户都遇到了同样的问题:我收到了错误文字回复,这是没有用的。

我尝试使用一种新方法来执行OCR,并创建了第二个功能

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