Время прочтения: 2 мин.

В Python существует несколько библиотек, позволяющих обрабатывать текстовые PDF файлы. Мы воспользуемся PDFminer. Данная библиотека имеет ряд преимуществ, поскольку создана именно для текстовых данных. С ее помощью можно определять положение текста, преобразовывать PDF в форматы HTML или XML и др.

Сначала установим её, выполнив в командной строке:

pip install PDFminer

Далее нам понадобится модуль ввода-вывода io. Он является частью стандартной библиотеки, поэтому просто импортируем его:

import io

Также нам понадобится конвертер, интерпретатор PDF, менеджер ресурсов с помощью которых и будет обработан текст:

from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage

Сам код легко найти в интернете (по ссылке, помимо использованного нами кода, разобраны другие методы работы с PDF). Мы немного доработали части возможности ввода разных директорий обрабатываемого PDF файла, что будет удобно при использовании скомпилированного exe  (как это делается мы ранее описывали в статье)

rm=PDFResourceManager()
f=io.StringIO()
con=TextConverter(rm, f)
pinter=PDFPageInterpreter(rm,con)

Запрос на ввод директории:

way = str(input(r'Укажите путь к файлу PDF и нажмите Enter')) 

Далее обработка PDF формата и вывод текста:

with open (way, 'rb') as pp:
    for page in PDFPage.get_pages(pp,caching=True,check_extractable=True):
        pinter.process_page(page)
    t=f.getvalue()
print (t) 

В заключение обратим внимание на структуру обработанного текста, она, скорее всего, будет отличаться от исходного документа. Для наглядности ниже пример исходного файла (Рис. 1) и то, что вы получите на выходе в Консоле Python (Рис.2):

Рис.1
Рис.2

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