Метод textract службы getSocumentTextDetection службы AWS возвращает только JobStatus и ничего больше в ответ - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь textract pdf-файла с помощью службы aws-sdk Textract.getDocumentTextDetection, в которой я передаю JobId, возвращенный методом "startDocumentTextDetection".

Здесь сначала я пытаюсь загрузить изображение / pdf с помощью метода «upload» службы s3, который успешно выполняется и возвращает мне ответ, подобный этому

{ 
  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" должен возвращать что-то вроде этого: https://docs.aws.amazon.com/textract/latest/dg/API_GetDocumentTextDetection.html

А ниже приведен весь код, написанный до сих пор:

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
            });
          }
        });
      }
    });
  });
});

Ожидаемый результат должен быть таким: https://docs.aws.amazon.com/textract/latest/dg/API_GetDocumentTextDetection.html. Не в состоянии понять, что происходит не так.

...