пятница, 24 ноября 2017 г.

Парсинг PDF файлов на python

Список популярных пакетов для работы с PDF документами из Python


pdfminer - Отличная библиотека для работы с pdf. 
Для работы с python 3.x лучше использовать форки: pdfminer3k и pdfminer.six 
(В последнем, есть также консольная утилита для работы с форматом pdf)
Популярность:  2479 звезд, 738 форков на GitHub

PyPDF2 - Популярный форк старой библиотеки pyPDF. Умеет разделять pdf по отдельным документам, объединять документы в один, получать текст и мета информацию.
Совместим с Python 2.6, 2.7, и 3.2 - 3.5. 
Популярность: 1612 звезд, 444 форка на GitHub

pdfquery - Обертка вокруг библиотеки pdfminer, используя  язык запросов JQuery и XPath позволяет быстро получить информацию из PDF документа. 
Последнее обновление библиотеки 16 июля 2017.  
Совместима с Python 3.x. 
Популярность: 300 звезд, 38 форков на GitHub

pdfrw - Простая библиотека для python, может читать и записывать pdf файл, работать с мета-информацией, объединять документы, переворачивать, и т.д. 
Последнее обновление библиотеки 17 сентября 2017. 
Поддерживаются версии Python 2.6, 2.7, 3.3, 3.4, 3.5, and 3.6
Популярность: 440 звезд, 105 форков на GitHub

slate - Этот пакет позволяет легко получить текст из pdf документа. 
Последнее обновление пакета: 26 марта 2017 года. 
С работой на python 3.x имеются проблемы. 
Популярность: 231 звезды, 92 форкa на GitHub

reportlab - Мощная библиотека для создания pdf документов (текст и графика). 
Кроме open-source пакета имеется и коммерческая версия ReportLab Plus. 
Совместима с python 2.7 или 3.3 и выше.
Популярность:  84 форка на bitbucket 

fdfgen - Библиотека для Python, портированная с php (forge_fdf). 
Возможности: создание документов, объединение. 
Совместима с python 3.x
Популярность:  113 звезд, 25 форков на GitHub

Вспомогательные утилиты

Pdftk - Консольная утилита  и GUI приложение для работы с pdf. 
Возможности: объединение, разделение документов, извлечение текста.

qpdf - Консольная утилита написанная на С++ для работы с  pdf быстро.
Основные возможности: создание, объединение, разделение, шифрование, получение мета информации.

ghostscript - Конвертер файлов в PostScript формате в графические файлы или PDF. 

среда, 22 ноября 2017 г.

Как просто и быстро разложить фотографии по папкам


Часто после отпуска возникает ситуация когда большое количество фотографий необходимо разложить по папкам. Для этих целей можно использовать отличную программу для работы с мета информацией (EXIF, IPTC, XMP, GPS) ExifTool. Эта утилита, которую можно запустить из командной строки или из bat файла.

Для работы копируем утилиту exiftool в директорию с фотографиями,
далее нажимаем кнопку Start и в строке поиска пишем cmd и нажимаем enter.
Откроется окно терминала. Переходим к нашей директории с фотографиями (команда: cd путь до папки). И пишем такую команду

exiftool -v "-Directory<${DateTimeOriginal}/${model;}" -d %%Y_%%m_%%d *.jpg

В итоге в этой папке будут созданы подпаки вида:



В каждой подпапке с датой будет создана папка с названием модели фотоаппарата.
Это удобно, если в отпуске снимали на несколько камер, например: на зеркалку, мыльницу и телефон.

За пару минут можно отсортировать огромный архив фотографий по папкам!

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

exiftool -v "-Directory<${DateTimeOriginal}/${model;}" -d %%Y_%%m_%%d *.JPG
exiftool -v "-Directory<${DateTimeOriginal}/${model;}" -d %%Y_%%m_%%d *.jpg
exiftool -v "-Directory<${DateTimeOriginal}/${model;}" -d %%Y_%%m_%%d *.jpeg
exiftool -v "-Directory<${DateTimeOriginal}/${model;}/RAW" -d %%Y_%%m_%%d *.CR2
exiftool -v "-Directory<${DateTimeOriginal}/${model;}" -d %%Y_%%m_%%d *.tif


Дополнительно:
Для сортировки RAW (Canon) файлов можно воспользоваться этой командой.

exiftool -v "-Directory<${DateTimeOriginal}/${model;}/RAW" -d %%Y_%%m_%%d *.CR2

В подпапке с названием модели появится директория RAW.


Небольшая ремарка:
На официальном сайте ExifTool утилита называется exiftool(-k).exe для удобства использования советую переименовать в exiftool.