Использование библиотеки PyPDF2

Гибкость и интерактивность Python заключаются в том, что мы можем использовать любую форму данных. Из JSON, таблиц Excel, текстовых файлов, API или даже PDF-файлов Python позволяет нам играть с любыми формами данных.

PDF или Portable Document Format - один из наиболее распространенных форматов обмена документами. В файле могут быть разные элементы, такие как текст, изображения, таблицы или формы. Поскольку в одном файле много всего происходит, извлекать данные из файла PDF становится утомительно.

В этом посте я буду особо говорить о библиотеке PyPDF2, которая используется для создания PDF-файлов или извлечения из них текста в Python.

Извлечение текста с помощью PyPDF2

Мы начнем с импорта библиотеки PyPDF2 и чтения файла PDF для извлечения.

from PyPDF2 import PdfFileReader
pdf_path='sample.pdf'
pdf = PdfFileReader(str(pdf_path))

Если вы запустите переменную «pdf», она вернет объект PyPDF2.

print(pdf)
[Output]: <PyPDF2.pdf.PdfFileReader at 0x112f3a8d0>

Я импортировал образец документа PDF с 2 страницами. Первая страница выглядит как на изображении ниже.

Вы можете использовать метод getNumPages (), чтобы проверить количество страниц в документе.

pdf.getNumPages()
[Output]: 2

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

pdf.documentInfo
[Output]: {'/Creator': 'Rave (http://www.nevrona.com/rave)',
           '/Producer': 'Nevrona Designs',
           '/CreationDate': 'D:20060301072826' }

Приведенная выше команда возвращает словарь, то есть метаданные для файла PDF. Он дает информацию о создателе, дате создания или заголовке документа.

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

first_page = pdf.getPage(0)
first_page.extractText()

Мы можем сделать то же самое для всех страниц в документе, используя цикл.

for page in pdf.pages:
    print(page.extractText(),end='\n')

Цикл выполнялся для 2 страниц и возвращал текст из каждого итератора страницы. Вот и все! Извлечь текст из файла PDF в Python действительно просто.

Создание нового текстового файла из извлеченного текста

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

with open('new.txt',mode="w") as output_file:
    for page in pdf.pages:
        text = page.extractText()
        output_file.write(text)

Будет создан файл «new.txt», в котором будет напечатан текст, извлеченный из каждой страницы PDF.

Создание нового PDF-файла из существующего файла

У нас уже есть файл «sample.pdf». Теперь давайте перенесем этот же текст в другой PDF-файл с помощью модуля PdfFileWriter.

from PyPDF2 import PdfFileWriter
pdf_writer = PdfFileWriter()
existing_pdf=open("sample.pdf","rb")
pdf_reader=PdfFileReader(existing_pdf)
for pagenum in range(pdf_reader.numPages):
    obj=pdf_reader.getPage(pagenum)
    pdf_writer.addPage(obj)

Мы создали объект pdfFileWriter и добавили к нему страницы «sample.pdf». Теперь нам просто нужно записать это в выходной файл.

output_file=open("pdfoutput.pdf",'wb')
pdf_writer.write(output_file)

Вот и все. Будет создан файл PDF с именем «pdfoutput», который будет содержать те же данные, что и «sample.pdf».

Резюме

Этот пост посвящен игре с PDF-файлами с использованием Python. Существует библиотека «PyPDF2», которая позволяет извлекать и копировать данные из одного PDF-файла в другой. Кроме того, это позволяет нам создавать новые PDF-файлы всего за несколько минут.

  • PyPDF2 Intro
  • Извлечение текста из PDF
  • Создание текстового файла из PDF
  • Создание нового PDF-файла из другого PDF-файла

Мир!