Используйте textract для файла PDF, расположенного в Google Cloud Storage - PullRequest
1 голос
/ 20 мая 2019

Я хочу применить textract к файлу pdf, размещенному в облачном хранилище Google.

Я уже использовал и проанализировал текстовый файл (все работает нормально) с download_as_string ()

storage_client = storage.Client()
bucket = storage_client.get_bucket('bucket-for-pdf')
blob = bucket.get_blob('keywords.txt')
keywords_file = blob.download_as_string().decode('utf8')

Как работает download_as_string ()?Могу ли я сделать что-то похожее на PDF-файл?Примерно так:

storage_client = storage.Client()
bucket = storage_client.get_bucket('bucket-for-pdf')
blob = bucket.get_blob(file_name)
file_name = blob.download_to_file(file_name)
return textract.process(file_name, language='eng',
                        encoding='utf-8').decode('utf-8')

Приведенный выше код вызывает ошибку:

self._stream.write(chunk)
AttributeError: 'str' object has no attribute 'write'

Обновление: пока единственное решение - загрузить файлы, и после того, как я это сделаю, я их удаляю.

1 Ответ

2 голосов
/ 20 мая 2019

Метод download_to_file принимает объект файла, а не имя файла. Попробуйте что-то вроде:

file_name = "/tmp/my-file"
storage_client = storage.Client()
bucket = storage_client.get_bucket('bucket-for-pdf')

with open(file_name, "wb") as file_obj:
    blob.download_to_file(file_obj)

return textract.process(file_name, language='eng', encoding='utf-8').decode('utf-8')
...