Использование библиотеки 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-файла
Мир!