Google apps script 我可以为Google Drive OCR中太小的字母设置阈值吗?

Google apps script 我可以为Google Drive OCR中太小的字母设置阈值吗?,google-apps-script,google-drive-api,ocr,text-recognition,Google Apps Script,Google Drive Api,Ocr,Text Recognition,我正在使用谷歌光盘OCR API识别图片中的文本。但问题是,它可以阅读任何文本,即使是非常非常小的微观文本。我是否可以设置一个阈值,以便忽略非常小的字母?我不需要非常小的文本 我在Google Apps脚本中使用以下代码: if (request.parameters.url != undefined && request.parameters.url != "") { var imageBlob = UrlFetchApp.fetch(reques

我正在使用谷歌光盘OCR API识别图片中的文本。但问题是,它可以阅读任何文本,即使是非常非常小的微观文本。我是否可以设置一个阈值,以便忽略非常小的字母?我不需要非常小的文本

我在Google Apps脚本中使用以下代码:

 if (request.parameters.url != undefined && request.parameters.url != "") {
    var imageBlob = UrlFetchApp.fetch(request.parameters.url).getBlob();
    var resource = {
          title: imageBlob.getName(),
          mimeType: imageBlob.getContentType()
    };
    var options = {
        ocr: true
    };
    var docFile = Drive.Files.insert(resource, imageBlob, options);
    var doc = DocumentApp.openById(docFile.id);
    var text = doc.getBody().getText().replace("\n", "");
    Drive.Files.remove(docFile.id);
    return ContentService.createTextOutput(text);
 }else {
    return ContentService.createTextOutput("request error");
 }
}```

没有办法在OCR中添加一个阈值作为参数,但有一个解决方法可以做到

您可以尝试读取它创建的文档的子文档的字体大小,而不是源材料的字体大小

function doOCR() {
  // JT digital inspiration (font 19 in document)
  // tech à la carte (font 9 in document)
  var image = UrlFetchApp.fetch('http://img.labnol.org/logo.png').getBlob();

  var file = {
    title: 'OCR File',
    mimeType: 'image/png'
  };
  
  var docFile = Drive.Files.insert(file, image, {ocr: true});
  var doc = DocumentApp.openById(docFile.id).getBody();
  var numElements = doc.getNumChildren();

  // Traverse all children
  for (var i = 0; i < numElements; ++i ) {
    var element = doc.getChild(i);
    var fontSize = element.getFontSize();
    var textValue = element.asText().getText();
    var type = element.getType();
    // Add condition, if font size is less than your threshold
    // There are other children that have fontSize but doesn't have textValue, skip them
    if( type == DocumentApp.ElementType.PARAGRAPH && textValue != "" && fontSize > 10){
      Logger.log(textValue);
    }
  }
}
函数doOCR(){
//JT数字灵感(文档中的字体19)
//技术点菜(文件中的字体9)
var image=UrlFetchApp.fetch('http://img.labnol.org/logo.png').getBlob();
变量文件={
标题:“OCR文件”,
mimeType:'image/png'
};
var docFile=Drive.Files.insert(文件,图像,{ocr:true});
var doc=DocumentApp.openById(docFile.id).getBody();
var numElements=doc.getNumChildren();
//遍历所有子对象
对于(变量i=0;i10){
Logger.log(textValue);
}
}
}
您还可以自定义以跳过特定的字体大小,只需修改条件即可

:

输出(文件):

输出(控制台):

参考资料: