Node.js - проблема извлечения текста из PDF-файла с помощью Google Cloud Vision API - PullRequest
0 голосов
/ 19 ноября 2018

Я новичок в облачных средах и программировании в целом, и я изо всех сил пытаюсь использовать API Google Vision для извлечения текста из файла PDF, расположенного в удаленной корзине.

Я нашел егодействительно сложно получить содержательный контент, связанный с этой темой, в документах и ​​даже в переполнении стека.Наиболее близким к решению этой проблемы я оказался с этим вопросом:

API Cloud Vision - PDF OCR

Но у меня не получилось по причинам, описанным ниже,вот почему я задаю свой вопрос.

Вот проблема:

Я отправляю следующий почтовый запрос на указанный URL

    https://vision.googleapis.com/v1/files:asyncBatchAnnotate?key=MY_API_KEY

    "requests": [
    {
        "inputConfig": {
            "gcsSource": {
                "uri": "gs://BUCKET_NAME/FILE_NAME.pdf"
            },
            "mimeType": "application/pdf"
        },
        "features": [
            {
                "type": "DOCUMENT_TEXT_DETECTION"
            }
        ],
        "outputConfig": {
            "gcsDestination": {
                "uri": "gs://BUCKET_NAME/output/"
            },
            "batchSize": 1
        }
    }
]

Запрос POST выполнен успешно, и после этого, в соответствии с тем, что я обнаружил, я должен сделать запрос get, чтобы проверить, выполнено ли обнаружение текста документа, используя ответ, полученный от моего предыдущего пост-запроса.Если это будет сделано, он должен записать ответ в файле внутри моего Bucket (именно поэтому я настроил «выходные данные» в json выше)

Однако, когда я делаю запрос get на URL

    https://vision.googleapis.com/v1/operations/RESPONSE?key=API_KEY

Я получаю следующую ошибку:

    "error": {
        "code": 7,
        "message": "Error writing final output to: gs://BUCKET_NAME/output/filename.json"
    }

Даже если есть способ решить эту проблему, чтобы написать окончательный вывод, мне интересно, если это лучший способ извлечь данные изв PDF это выглядит очень странно, чтобы сделать сообщение и получить, особенно учитывая, что, когда вы извлекаете данные из изображения с использованием того же API, вам нужно сделать только один запрос

Спасибо за помощь.

1 Ответ

0 голосов
/ 20 ноября 2018

Я считаю, что проблема в том, что вы используете аутентификацию по ключу API для запроса "asyncBatchAnnotate". В документации говорится, что вы должны использовать аутентификацию учетной записи службы: https://cloud.google.com/vision/docs/pdf#authentication

Другим важным моментом является то, что используемая учетная запись службы должна иметь доступ на запись в корзину назначения.

Выполнение запроса POST для отправки задачи, а затем запроса GET для проверки состояния является распространенным шаблоном REST для длительных операций. http://restalk -patterns.org / давно обкатки операции-polling.html

Я думаю, что API для изображений и PDF отличаются, потому что при распознавании изображений предполагается, что операция относительно короткая, в то время как распознавание многостраничного PDF может занять значительное время.

...