JavaRush /Курси /Python SELF UA /Витяг тексту з PDF-документів для подальшого аналізу дани...

Витяг тексту з PDF-документів для подальшого аналізу даних

Python SELF UA
Рівень 43 , Лекція 2
Відкрита

1. Витяг тексту

Практично кожен з нас стикався з ситуацією, коли потрібна інформація з PDF-документу, будь то бухгалтерський звіт, дослідження або навіть улюблена електронна книга. Але що робити, якщо потрібно витягти дані не вручну, а автоматично? Тут на сцену виходить Python і його неймовірна бібліотека PyPDF2.

Основні кроки при витягу тексту

Щоб успішно витягти текст з PDF, слід дотримуватись кількох простих кроків:

  1. Читання PDF-файлу.
  2. Парсинг вмісту PDF.
  3. Витяг тексту для подальшого аналізу.

2. Читання та парсинг PDF-файлів

Давайте розглянемо, як відкрити та прочитати PDF-документ у Python. Для початку нам потрібно імпортувати PyPDF2:

Python

import PyPDF2

Тепер відкриємо PDF-документ. Припустимо, у нас є файл sample.pdf, який ми хочемо проаналізувати. Давайте завантажимо його і дізнаємося, скільки в ньому сторінок.

Завантаження PDF-файлу

Python

# Відкриття 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 і може бути виведений або оброблений.

Ось приклад того, як це може виглядати:

Python

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)

Витяг тексту з певних сторінок

Що, якщо нам потрібен текст лише з певної сторінки? Наприклад, припустимо, ми хочемо витягти текст тільки з третьої сторінки. Це робиться так:

Python

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 дозволяє автоматизувати цей процес, що особливо корисно при роботі з великими обсягами документів.

Витяг та збереження тексту в окремий файл

Для зручності подальшого аналізу можна зберегти витягнутий текст у текстовий файл. Це спростить його подальшу обробку.

Python

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, і ми хочемо підрахувати кількість певних слів та фраз у документі.

Python

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