Вопрос или проблема
Друзья,
я создаю компонент, который извлекает документы по их содержимому. Поскольку есть многостраничные PDF-документы, насколько я понимаю, мне нужно использовать асинхронный метод «StartDocumentTextDetection». Этот метод требует, чтобы документ находился в бакете S3 в AWS? Верно? Все мои документы находятся во внешнем, не AWS, месте. Можем ли мы передать массив байтов внешнего документа в операции Textract? Пожалуйста, дайте знать.
Ответ или решение
Да, вы правы в том, что для работы с многопстраничными PDF-документами в рамках AWS Textract вы можете использовать асинхронный метод StartDocumentTextDetection
. Однако, как вы правильно заметили, этот метод требует, чтобы документ находился в хранилище S3 AWS.
К сожалению, Textract не поддерживает передачу байтовых массивов (byte array) напрямую из внешних хранилищ или локальных файлов. Таким образом, вам необходимо сначала загрузить ваш документ в S3. Вот пошаговый процесс, который вы можете использовать:
-
Загрузка документа в S3: Создайте бакет (если он еще не создан) в Amazon S3 и загрузите ваш документ (PDF или изображение) в этот бакет. Вы можете использовать AWS SDK для вашего программного языка для выполнения этой операции. Например, с помощью AWS SDK для Python (Boto3) вы можете загрузить файл следующим образом:
import boto3 s3_client = boto3.client('s3') bucket_name = 'ваш_идентификатор_бакета' file_name = 'ваш_файл.pdf' # Загрузка файла s3_client.upload_file(file_name, bucket_name, file_name)
-
Вызов Textract: После того как ваш документ находится в S3, вы можете вызвать метод
StartDocumentTextDetection
, указав ARN (Amazon Resource Name) документа, который теперь хранится в S3:textract_client = boto3.client('textract') response = textract_client.start_document_text_detection( DocumentLocation={ 'S3Object': { 'Bucket': bucket_name, 'Name': file_name } } )
-
Отслеживание статуса обработки: Запрос вернет вам
JobId
, который вы можете использовать для отслеживания статуса обработки. Вам нужно будет периодически проверять статус работы с помощью методаGetDocumentTextDetection
, передаваяJobId
. -
Получение результатов: После того как работа будет завершена, вы сможете получить результаты, используя тот же метод
GetDocumentTextDetection
. -
Очистка: После завершения обработки, если вам больше не нужны загруженные файлы в S3, вы можете удалить их, чтобы избежать дополнительных расходов.
Таким образом, процесс предполагает, что вам нужно сначала перенести документы из внешнего источника в AWS S3, а затем взаимодействовать с Textract для обработки этих документов. Если вы будете использовать данный подход, у вас не возникнет проблем с извлечением текста из многопстраничных PDF-документов.