使用Google应用脚本从PDF到文本转换获取文本

时间:2013-11-28 15:05:38

标签: javascript pdf google-apps-script ocr google-drive-api

我有一个脚本可以从某些Gmail邮件中获取(可搜索的)PDF附件。

现在我需要从这些pdf中提取一些String数据。

是否有某种方法可以将其添加到启用了OCR转换的Google云端硬盘并从该文件中提取文本?或者甚至有更好的方法来解决我的问题?

3 个答案:

答案 0 :(得分:2)

你说你从“可搜索的”pdf附件开始,我认为你的意思是他们实际上没有文本类型的内容,而是在pdf图像上扫描带有文本的文档。如果您将它们存储在云端硬盘中,Google会自动对它们执行OCR,但是OCR不会存储为文件内容的一部分,它仅用于索引文档,以便以后可以使用驱动器搜索找到它(即内部用于驱动器使用) ,没有暴露)。

但是,您可能想尝试使用此DocsList API https://developers.google.com/apps-script/reference/docs-list/file#getContentAsString() 如果它们实际上有文本(而不是文本上的文字),它可以在你的pdf上工作。

答案 1 :(得分:2)

  

是否有某种方法可以将其添加到启用了OCR转换的Google云端硬盘并从该文件中提取文本?或者甚至有更好的方法来解决我的问题?

Get pdf-attachments from Gmail as text中的pdfToText()实用程序使用高级云端硬盘服务和DocumentApp将PDF格式转换为Google文档。您可以通过这种方式获取OCR文本,或将其直接保存到驱动器上任何文件夹中的txt文件。

答案 2 :(得分:0)

这是一个解决方案。您必须在Console developper中激活Drive API。

将附件转换为texte的脚本

function uploadFile() {
  var search = "label:inbox";
  var threads = GmailApp.search(search, 0, 2);
    for (var i=0; i<threads.length; i++) {
      var messages = GmailApp.getMessagesForThread(threads[i]);
      for (var j=0; j<messages.length; j++) {
        var email = messages[j]; 
        var sujet = email.getSubject();
        var data = email.getAttachments()[0];
        if (data){
          var file = {
          title: sujet,
          mimeType: 'image/png'
         };
     var image = data;
    file = Drive.Files.insert(file, image, {ocr: true});
    var body = DocumentApp.openById(file.id).getBody();
    var imgs = body.getImages();
    for (var i = 0; i < imgs.length; i++) {
    imgs[i].removeFromParent();
    }
    }
    }
    }

///////////Script to convert external file to text
function uploadFile(){
var image = UrlFetchApp.fetch('http://web.engr.oregonstate.edu/~dambrobr/classes/cs532/muggleton94inductive.pdf').getBlob();
var file = {title: 'IA',mimeType: 'image/png'};
file = Drive.Files.insert(file, image, {ocr: true});
var body = DocumentApp.openById(file.id).getBody();
var imgs = body.getImages();
for (var i = 0; i < imgs.length; i++) {
imgs[i].removeFromParent();
}
}
相关问题