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 з багаторівневими форматами, таблицями та зображеннями.
- Відсутність підтримки прямого витягу зображень і таблиць.
- Не підтримує обробку зашифрованих або захищених паролем файлів (хоча можна спробувати зняти захист, якщо пароль відомий).
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ