Простой способ извлечения изображений из документов MS и Libre Office

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

Стандарт Open Document стал де-факто уже давно. И если раньше формат документов Microsoft Office был проприетарным, то теперь он представляет собой «.zip»-файл в котором храниться множество «.xml», а также изображения и прочие файлы. Конечно же, самым простым способом извлечь документы является изменение расширения документа на «.zip» и последующее извлечение файлов любым архиватором. Но, если вам нужно сделать это не с одним документом, это может быть достаточно продолжительно по времени. Поэтому, давайте рассмотрим несколько способов, с помощью которых можно извлечь изображения из файлов формата ".docx", ".xlsx", ".pptx", ".odp", ".ods", ".odt".

Способ №1: используем стандартные библиотеки python

Для данного способа не требуется установка сторонних библиотек. Достаточно тех, что поставляются в комплекте с самим интерпретатором.

Создадим файл extract.py.

Импортируем нужные нам в процессе работы библиотеки:

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

Создадим функцию image_extract(in_zip: zipfile, out_dir: Path), в которую будем передавать zip-файл, а также путь к директории в которую будут распакованы изображения. В данном случае путь у пользователя запрашиваться не будет.

Объявим переменную cnt, которая будет счетчиком распакованных изображений. Затем в цикле пробежимся по списку содержимого архива. Проверим расширения файлов в архиве. И если они совпадают с расширениями из списка, будем читать текущий файл с изображением и сохранять в байтовом режиме в директорию, которая передается в функцию. Также, данная директория создается автоматически и называется именем исходного документа. После того, как все изображения будут сохранены, возвращаем из функции наш счетчик.

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

Осталось дело за малым, запросить у пользователя путь к файлу, проверить, является ли он файлом и имеет ли нужный формат. После чего скопировать файл с расширением «.zip», открыть с помощью zipfile и передать в функцию для поиска изображений и их распаковки. Ну и напоследок удалить скопированный zip-файл.

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

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

Полный код скрипта:

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

Протестируем созданный скрипт. У нас есть, для примера документ «CustomTkinter.docx». В нем содержаться несколько изображений. Вот их мы и попробуем извлечь.

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

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

Способ №2: используем библиотеку docx2txt

Создадим файл docx2im.py. В данном случае мы будем использовать стороннюю библиотеку docx2txt. Для ее установки пишем в терминале или командной строке:

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

Теперь импортируем нужные библиотеки в скрипт.

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

В данном случае нам не понадобиться создавать дополнительных функций. Сделаем все в одной. Хотя, в теории, можно было бы разделить извлечение изображений и текста. Да, дополнительным бонусом, при том, что извлекаются изображения только из документов «.docx», является извлечение текста.

Для начала запросим у пользователя путь к документу и путь к папке для извлечения изображений. Проверим, является ли переданный параметр путем к документу и является ли расширение данного документа «.docx». Затем проверим, существует ли директория для извлечения изображений. Если нет, создадим ее, так как docx2txt ее самостоятельно не создает.

Теперь передаем путь к документу и путь для извлечения изображений в функцию process данной библиотеки. Из нее будет возвращен текст документа. Проверим, содержится ли в переменной text что-нибудь. Для этого обрежем пробелы и знаки переноса каретки, так как, если в документе нет текста, но есть пустая строка, переменна text не будет пуста.

Затем открываем текстовый документ на запись и записываем в него полученный текст.

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

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

Думаю, что вышеприведенных скриптов будет достаточно. Можно использовать также библиотеку aspose-words, которая устанавливается с помощью команды:

pip install aspose-words

Однако, способ извлечения с ее помощью изображений не особо отличается от предыдущих. Создадим файл aspose_extract.py. Вот для примера код:

Простой способ извлечения изображений из документов MS и Libre Office IT, Гайд, Программирование, Разработка, Windows, Python, Рекомендации, Код, Программист, Длиннопост

Выбирать, что использовать вам и в каком виде, конечно же, вам. Здесь описаны только несколько способов, с помощью которых можно проделать данную операцию. Скорее всего, если поискать более тщательно, найдется еще множество библиотек, с помощью которых можно извлечь изображения из документов.

А на этом все. Спасибо за внимание.

Надеюсь, данная информация будет вам полезна.

Код из статьи можно взять тут!

Life-Hack [Жизнь-Взлом]/Хакинг

247 постов2.7K подписчик

Добавить пост

Правила сообщества

Просьба уважать друг друга.