首页 > 解决方案 > 如何将文档发送到 Doc AI API

问题描述

一段时间以来,我一直在努力寻找一种使用Google Apps Script将 JSON 请求中的 PDF 文档发送到 Document AI Solutions 的方法。

我正在使用 OCR 处理器,这里是文档:https : //cloud.google.com/document-ai/docs/ocr 我从 GCP 设置了一些变量,例如 PROJECT_ID、CLIENT_ID、CLIEND_PWD。

此外,fileID 是我的云端硬盘中的文件 ID。这是一个PDF文件。

这是我使用的代码:

function test(){
    
  var result=getFileInformations(fileID);
  Logger.log(result);
  
}//function test(){

function getFileInformations (fileID) {
  
  //var apiEndpoint = "https://eu-documentai.googleapis.com/v1beta3/projects/"+PROJECT_ID+"/locations/eu/processors/" + PROCESSOR_ID:method
  var apiEndpoint = "https://eu-documentai.googleapis.com/v1beta3/projects/"+PROJECT_ID+"/locations/eu/processors/" + PROCESSOR_ID  + ":process"
  var token = ScriptApp.getOAuthToken();
  
  // Create our json request
  var nlData = {    
    document: {
      //'mimetype':MimeType.PDF,
      content:  DriveApp.getFileById(fileID).getBlob()
    }
  };//var nlData = {
      
  var options = {};
  options.headers = {"Authorization": "Basic " + Utilities.base64Encode(CLIENT_ID + ":" + CLIEND_PWD)};
  options.payload = JSON.stringify(nlData);
  
  //  And make the call
  var response = UrlFetchApp.fetch(apiEndpoint, options);
  var result = JSON.parse(response);
    
};//function getFileInformations (fileID) {

我收到一条错误消息,听起来像“异常:服务器上出现错误。请道歉并稍后再试”,这指出了这一行:

 content:  DriveApp.getFileById(fileID).getBlob()

如果它,你有什么线索可以出去吗?

提前谢谢了

奥雷连

编辑

根据我得到的最后信息,这是我目前的情况。我认为我的第一个错误是将我的身份验证方法与我的 getFileInformations 函数分开,所以我将其更改为最终得到这个:

新的主要功能是docAISolutionAPI。我认为在那里显示 getService() 函数没有用,请记住它有效并且service.hasAccess()运行成功。

function docAISolutionAPI() {
  var service = getService();
  if (service.hasAccess()) {

    var response = getFileInformations (fileID)    
    Logger.log(response);    
   
  } else {
    var authorizationUrl = service.getAuthorizationUrl();
    Logger.log('Open the following URL and re-run the script: %s',
        authorizationUrl);
  }
}//function docAISolutionAPI() {


function getFileInformations (fileID) {
  
  //var apiEndpoint = "https://eu-documentai.googleapis.com/v1beta3/projects/"+PROJECT_ID+"/locations/eu/processors/" + PROCESSOR_ID:method
  var apiEndpoint = "https://eu-documentai.googleapis.com/v1beta3/projects/"+PROJECT_ID+"/locations/eu/processors/" + PROCESSOR_ID  + ":process";
    
 var token = ScriptApp.getOAuthToken();

  var test=DriveApp.getFileById(fileID).getName();

  // Create our json request
  var param = {    
    'document': {
    'mimeType':'application/pdf',
    'content':  DriveApp.getFileById(fileID).getBlob()
    // 'content':jsonContent
  }//inputConfig': {
  };//var param = {
  
  var jsonresquest=JSON.stringify(param);
  var options = {};
  options.headers = {Authorization:"Bearer "+token};
 // options.payload = JSON.stringify(param);
  options.payload = param;
  options.method = "POST";
  options.muteHttpExceptions=true;

  Logger.log("options.payload : " + options.payload);
  
  //  And make the call
  var response = UrlFetchApp.fetch(apiEndpoint, options);
  var result = JSON.parse(response);
    
    return result;
};//function getFileInformations (fileID) {

正如你所看到的,有一些关于失败尝试获取某些东西的评论。

我现在得到的错误是:

{error={details=[{fieldViolations=[{description=收到无效的 JSON 有效负载。未知名称“文档”:无法绑定查询参数。'document' 是一种消息类型。参数只能绑定到原始类型。}]、@type=type.googleapis.com/google.rpc.BadRequest}]、status=INVALID_ARGUMENT、message=收到的 JSON 负载无效。未知名称“文档”:无法绑定查询参数。'document' 是一种消息类型。参数只能绑定到原始类型。,code=400.0}}

再次:非常非常感谢您的帮助,我正在为它疯狂^^'

标签: apigoogle-apps-script

解决方案


推荐阅读