Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js AWS服务&x27;s textract方法“;getDocumentTextDetection";“只会返回”;“工作状态”;没有别的回应_Node.js_Amazon Web Services_Amazon S3_Aws Sdk_Amazon Textract - Fatal编程技术网

Node.js AWS服务&x27;s textract方法“;getDocumentTextDetection";“只会返回”;“工作状态”;没有别的回应

Node.js AWS服务&x27;s textract方法“;getDocumentTextDetection";“只会返回”;“工作状态”;没有别的回应,node.js,amazon-web-services,amazon-s3,aws-sdk,amazon-textract,Node.js,Amazon Web Services,Amazon S3,Aws Sdk,Amazon Textract,我正在尝试使用aws sdk的服务textract.getDocumentTextDetection对pdf文件进行文本提取,在该文件中,我将传递方法“startDocumentTextDetection”返回的JobId 首先,我尝试使用s3服务的方法“upload”上传图像/pdf,该方法正在成功运行并返回如下响应 { ETag: '"9d022c9c496f2663d2fgv45d181e475"', Location: 'https://bucket-name.s3.am

我正在尝试使用aws sdk的服务textract.getDocumentTextDetection对pdf文件进行文本提取,在该文件中,我将传递方法“startDocumentTextDetection”返回的JobId

首先,我尝试使用s3服务的方法“upload”上传图像/pdf,该方法正在成功运行并返回如下响应

{ 
  ETag: '"9d022c9c496f2663d2fgv45d181e475"',
  Location:
   'https://bucket-name.s3.amazonaws.com/beacon-logo.png',
  key: 'beacon-logo.png',
  Key: 'beacon-logo.png',
  Bucket: 'bucket-name' 
}
在此之后,我调用textract的方法“startDocumentTextDetection”来获取JobId,它将返回以下内容:

{ JobId:
   '11df404ce0fa7c958ba23579890a52388132a01d326802a1eggh76915c55qw1e' }
在此之后,我调用AWS服务的另一个方法“getDocumentTextDetection”,从上传的文件中提取单词,该文件返回给我对象:

{ JobStatus: 'IN_PROGRESS' }
这是错误的。 方法“getDocumentTextDetection”应返回如下内容:

以下是到目前为止编写的所有代码:

const textract = new AWS.Textract({
  apiVersion: "2018-06-27",
  accessKeyId: "my-access-key-id",
  secretAccessKey: "my-secret-access-key",
  region: "region",
  ACL: "public-read"
});

const s3 = new AWS.S3();

router.post("/", function (req, res, next) {
  const paramsS3Upload = {
    Bucket: "bucket-name",
    Key: req.files.document.name,
    ACL: "public-read",
    ContentType: req.files.document.mimetype,
    Body: req.files.document.data
  };
  var s3options = {
    partSize: 10 * 1024 * 1024,
    queueSize: 1
  };
  s3.upload(paramsS3Upload, s3options, function (s3Err, s3data) {
    if (s3Err) throw s3Err;
    var params = {
      DocumentLocation: {
        S3Object: {
          Bucket: s3data.Bucket,
          Name: s3data.Key,
          Version: s3data.VersionId
        }
      },
      NotificationChannel: {
        RoleArn: "arn:aws:iam::id:role/role-name",
        SNSTopicArn: "arn:aws:sns:region:id:topic-name"
      }
    };
    textract.startDocumentTextDetection(params, function (err, data) {
      if (err) console.log(err, err.stack);
      else {
        var textDetectionParams = {
          JobId: data.JobId
        };
        textract.getDocumentTextDetection(textDetectionParams, function (
          err,
          textDetectData
        ) {
          if (err) console.log(err, err.stack);
          else {
            console.log(textDetectData); // Not getting proper response here!!
            res.send({
              data: textDetectData
            });
          }
        });
      }
    });
  });
});
预期输出应如下所示:
. 无法找出哪里出了问题。

从文档调用
getDocumentTextDetection
时,文本检测似乎还没有完成:当文本检测操作完成时,Amazon Textract会向Amazon简单通知服务(Amazon SNS)发布完成状态在对StartDocumentTextDetection的初始调用中注册的主题。要获得文本检测操作的结果,首先检查发布到Amazon SNS主题的状态值是否成功。如果是这样,请调用GetDocumentTextDetection,并将初始调用中的作业标识符(JobId)传递给StartDocumentTextDetection。我建议您在作业完成时使用SNS获得通知。然后你可以使用Lambda函数继续你的工作我也收到了相同的问题我收到了相同的问题,它应该是“成功”的,但总是在进行中,所以我必须等待sns消息成功处理,这在Lambda函数中是错误和昂贵的。