В предыдущей статье "Python работа с файлами PDF" мы рассмотрели основные библиотеки для работы с PDF (чтения, извлечения данных и создания PDF файлов). В данной статье мы рассмотрим методы чтение и извлечение данных из файлов PDF средствами Python.
Для извлечения данных из файла PDF используют следующие библиотеки:
- PyPDF2;
- Tabula-py;
- Pdfminer.six;
PyPDF2
Устанавливаем библиотеку через командную строку:
pip install PyPDF2
Извлечение метаданных PDF:
В метаданных содержатся сведения о количестве страниц, сведения об авторе, авторах, название приложения в котором создан файл, дата создания.
Импортируем модуль PdfFileReader из библиотеки PyPDF2. Запрашиваем у пользователя путь к файлу. С помощью оператора with открываем файл в двоичном режиме. Оператор with гарантирует закрытие файла автоматически даже при возникновении ошибки, подробнее о работе с файлами можно прочитать в статье: "Python работа с файлами". Объект PdfFileReader() используется для чтения PDF файла. Свойство documentInfo является словарем содержащим сведения о файле.
Результат выполнения скрипта:
Number of Pages in PDF File is 1
PDF Metadata is {'/Title': 'Test', '/Author': 'SoftSAR', '/CreationDate': "D:20220611211027+04'00'", '/Producer': 'Microsoft PowerPoint', '/Creator': 'Microsoft PowerPoint'}
PDF File Author is : SoftSAR
PDF File Creator is Microsoft PowerPoint
Извлечение текста страниц PDF.
Метод getPage() возвращает объект страницы, для извлечения текста со страницы необходимо вызвать метод extractText().
Tabula-py
Устанавливаем библиотеку через командную строку:
pip install tabula-py
Tabula-py это оболочка для tabula-java, которая переводит команды Python в команды Java. Соответственно для работы с Tabula-py необходимо скачать и установить java. Найдите место, где установлена Java, в каталоге найдите папку bin и скопируйте путь до нее. Добавьте скопированный путь в переменные среды.
Импортируем библиотеку tabula, Запрашиваем у пользователя путь к файлу. С помощью оператора with открываем файл в двоичном режиме. С помощью метода read_pdf() модуля tabula считываем таблицы из PDF файла.
Библиотека позволяет конвертировать таблицы из pdf файла в CSV файл. Конвертация файла осуществляется методом convert_into()
Pdfminer.six
Устанавливаем библиотеку через командную строку:
pip install pdfminer.six
Извлекаем весь текст из PDF документа. Импортируем необходимые модули из библиотеки pdfminer, Запрашиваем у пользователя путь к файлу. Задаем кодировку файла, инициализируем интерпретатор страницы, с помощью метода LAParams() анализируем параметры, С помощью оператора with открываем файл в двоичном режиме. Циклом обходим все страницы извлекаем текст и выводим на печать.
Извлечение текста постранично. Извлекать текст из многостраничного документа постранично не всегда целесообразно, метод чаще применяется для извлечения текста с определенной страницы (диапазона страниц).
В данной статье мы рассмотрели, как извлекать данные из PDF файлов с помощью основных Python библиотек для чтения файлов PDF. Мы научились извлекать текст из PDF файла целиком и постранично, а также научились извлекать таблицы из PDF файла и конвертировать их в CSV формат. У каждой библиотеки есть своя область применения, свои преимущества и недостатки. Некоторые библиотеки предназначены только для извлечения текста, картинок или таблиц. При выборе библиотеки необходимо учитывать особенности решаемой задачи.
С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am