首页 > 解决方案 > Google AppScript 中 PDF 的 OCR 无法正常工作

问题描述

我对 AppScrip 中的 OCR 功能有一个奇怪的问题。我使用一个函数从 PDF 中提取文本。它用于自动处理来自客户端的 PDF。这是功能:

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
}

在过去的几年里,这一直正常工作,没有给出任何问题。

自几周前以来,我遇到了此功能的问题,没有任何改变。它由两个不同的用户使用,其中一个用户无法正常工作。文字以一种奇怪的顺序出现在垂直线上。当我从函数中取回文本时,它无法使用。

奇怪的是,它只发生在第二个用户身上,第一个工作正常。我什至创建了第三个用户,以检查它是否也发生在第三个用户身上,但它工作正常并且我得到了正确的回报。所以我认为这是谷歌服务器的准时问题,我继续工作,暂时将自动化流程更改为第三个用户。

不幸的是,从昨天开始,我对所有三个用户都遇到了同样的问题:我收到了一个错误的订单文本响应,这是无用的。

我尝试使用一种新方法进行 OCR,并创建了第二个函数:

function extractTextFromPDF_v2(file) 
{
  var fileId = Drive.Files.insert({title: file.getName(), mimeType: MimeType.GOOGLE_DOCS}, 
  file.getBlob()).id;
  var rt = DocumentApp.openById(fileId);
  var text = rt.getBody().getText();

  Drive.Files.trash(fileId);  

  return text
}

但它返回完全相同的答案。

任何帮助将不胜感激。我们将不得不手动处理所有 PDF 文件,每个月有数百个(!)

先感谢您

标签: google-apps-scriptgoogle-drive-apiocr

解决方案


也许试试这种方式:

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

推荐阅读