google-apps-script - 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 文件,每个月有数百个(!)
先感谢您
解决方案
也许试试这种方式:
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);
推荐阅读
- java - 正则表达式匹配器在 JUnit 上工作,但在 Servlet 容器上失败
- angular - 为什么 Angular 7 会重置被操纵的元素文本内容
- ruby-on-rails - ruby 中的 Yield 声明如何工作?
- jquery - 如何从除当前元素之外的所有元素中删除一个类?
- javascript - 以 min/max 随机分块字节
- amazon-web-services - 具有多个客户接口的微服务的正确架构
- node.js - 为什么我在第二次运行测试时在 Mongoose 中收到错误“一旦编译后无法覆盖模型”?
- javascript - 无法读取 multer 中未定义的属性“toString”
- javascript - 在 Vue.js 应用程序中的浏览器刷新时丢失数据
- go - 如何将 *rsa.PublicKey 变成可识别的密钥字符串