1. Извлечение текста
Практически каждый из нас сталкивался с ситуацией, когда нужна информация из PDF-документа, будь то бухгалтерский отчет, исследование или даже любимая электронная книга. Но как быть, если нужно извлечь данные не вручную, а автоматически? Здесь на сцену выходит Python и его невероятная библиотека PyPDF2.
Основные шаги при извлечении текста
Чтобы успешно извлечь текст из PDF, необходимо следовать нескольким простым шагам:
- Чтение PDF-файла.
- Парсинг содержимого PDF.
- Извлечение текста для последующего анализа.
2. Чтение и парсинг PDF-файлов
Давайте рассмотрим, как открыть и прочитать PDF-документ в Python. Для начала нам нужно импортировать PyPDF2:
import PyPDF2
Теперь, откроем PDF-документ. Предположим, у нас есть файл sample.pdf, который мы хотим проанализировать. Давайте загрузим его и узнаем сколько в нем страниц.
Загрузка PDF-файла
# Открытие PDF-файла
with open("sample.pdf", "rb") as pdf_file:
# Создаем объект PDF Reader
pdf_reader = PyPDF2.PdfReader(pdf_file)
# Получаем общее количество страниц
num_pages = len(pdf_reader.pages)
print(f"Общее количество страниц в документе: {num_pages}")
Извлечение текста
Теперь, когда PDF-документ открыт, давайте извлечем из него текст. Нам для этого нужно:
PdfReaderоткрывает PDF-файл для чтения.- Мы используем цикл
for, чтобы пройти по всем страницам и вызватьextract_text()для извлечения текста. - Извлечённый текст сохраняется в переменной
textи может быть выведен или обработан.
Вот пример того, как это может выглядеть:
import PyPDF2
# Открытие PDF-файла
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
# Извлечение текста из каждой страницы
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text += page.extract_text() + "\n"
print(text)
Извлечение текста с определенных страниц
Что, если нам нужен текст только с определенной страницы? Например, предположим, мы хотим извлечь текст только с третьей страницы. Это делается так:
import PyPDF2
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
page = pdf_reader.pages[2] # Извлекаем текст с третьей страницы (индекс 2)
text = page.extract_text()
print(text)
Этот пример позволяет извлечь текст только с третьей страницы, что может быть полезно, если документ содержит много страниц, и вы хотите ограничить обработку. PyPDF2 использует нумерацию страниц с 0.
3. Автоматизация обработки текста из PDF
После извлечения текста из PDF его можно анализировать и обрабатывать для более глубокого анализа данных. PyPDF2 позволяет автоматизировать этот процесс, что особенно полезно при работе с большими объемами документов.
Извлечение и сохранение текста в отдельный файл
Для удобства последующего анализа можно сохранить извлеченный текст в текстовый файл. Это упростит его дальнейшую обработку.
import PyPDF2
# Открытие PDF-файла
with open("sample.pdf", "rb") as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
text = ""
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
text += page.extract_text() + "\n"
# Сохранение извлеченного текста в файл
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
text_file.write(text)
Обработка и анализ извлечённого текста
После извлечения текста его можно анализировать с помощью Python. Для этого часто используют такие библиотеки, как re (регулярные выражения), nltk (Natural Language Toolkit) или pandas.
Подсчет слов и поиск ключевых фраз
Допустим, что у нас есть текстовый файл extracted_text.txt, и мы хотим подсчитать количество определённых слов и фраз в документе.
import re
# Открытие извлеченного текста
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
text = text_file.read()
# Поиск и подсчет ключевых слов
keywords = ["отчет", "данные", "анализ"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}
print("Частота ключевых слов:", keyword_counts)
Здесь:
- Мы открываем сохраненный текст.
- Используем регулярные выражения для подсчета ключевых слов (вне зависимости от регистра).
- Получаем количество упоминаний каждого ключевого слова.
4. Преимущества и ограничения PyPDF2
Преимущества:
- Простота в использовании для базового извлечения текста и обработки страниц.
- Поддержка основных операций: чтение текста, объединение и разделение документов.
- Легкость интеграции с другими библиотеками Python.
Ограничения:
- PyPDF2 не всегда корректно извлекает текст из сложных PDF с многоуровневыми форматами, таблицами и изображениями.
- Отсутствие поддержки прямого извлечения изображений и таблиц.
- Не поддерживает обработку зашифрованных или защищенных паролем файлов (хотя можно попытаться снять защиту, если известен пароль).
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ