Python - преобразование TIFF, PDF и т. Д. В JPEG в памяти для ввода в Google Cloud Vision

У меня есть несколько файлов изображений, отличных от JPEG, которые я хочу обработать с помощью Google Cloud Vision, но API принимает только определенные форматы (см. Вопрос Cloud Vision API - PDF OCR и ответьте https://cloud.google.com/vision/docs/supported-files).

Я могу использовать PIL или что-то подобное для преобразования TIFF в JPEG для загрузки, но я бы хотел избежать временного файла, если это возможно.

Итак, в Python, как мне преобразовать TIFF в памяти для загрузки в GCV? массив numpy, base64, строка ..?


person jtlz2    schedule 24.07.2017    source источник
comment
Рассмотрите возможность записи в строку вместо файла на диске: docs.python.org/2/ библиотека / stringio.html   -  person Yves Daoust    schedule 24.07.2017
comment
не было бы логичнее пойти на BytesIO вместо строкового представления?   -  person Maarten Fabré    schedule 24.07.2017
comment
@YvesDaoust Итак, как именно (пример кода) я использую для преобразования в stringio / BytesIO и как отправить его в GCV? Спасибо!   -  person jtlz2    schedule 25.07.2017
comment
Хорошо, но я не думаю, что это необоснованная просьба. И это не простой вопрос. Поскольку это сайт кодирования, ответы часто даются в виде кода, не так ли?   -  person jtlz2    schedule 25.07.2017
comment
Кроме того, документация GCV плохая / написана внутри - stackoverflow кажется очевидным местом для дополнения этого   -  person jtlz2    schedule 25.07.2017


Ответы (1)


Как было предложено, вы должны использовать StringIO или BytesIO для Python 3.

См. Этот вопрос: Python изменяет размер изображения и отправляет в функцию видения Google < / а>

Пример создания строки запроса:

output = BytesIO()
image_object.save(output, 'JPEG', quality=90)
contents = output.getvalue()
output.close()
ctxt = b64encode(contents).decode()

request_string = [{
    'image': {'content': ctxt},
    'features': [{
        'type': 'TEXT_DETECTION',
        'maxResults': 1
        }]
}]
person Pepijn    schedule 25.07.2017
comment
Спасибо - именно то, что я искал - все было для меня очень непрозрачным - придадим ему уверенность :) - person jtlz2; 25.07.2017
comment
Обратите внимание на настройку качества. Значение по умолчанию - 75, что может ухудшить качество вашего изображения и последующие результаты, которые вы получите от Google. Установка слишком большого значения увеличит размер вашего изображения, и вы можете достичь предела размера изображения 4 МБ. - person Pepijn; 25.07.2017
comment
Спасибо, действительно, отметил! - person jtlz2; 25.07.2017