CodeGym /Kurs Javy /Python SELF PL /Wydobywanie tekstu z dokumentów PDF w celu dalszej analiz...

Wydobywanie tekstu z dokumentów PDF w celu dalszej analizy danych

Python SELF PL
Poziom 43 , Lekcja 2
Dostępny

1. Wydobywanie tekstu

Prawie każdy z nas spotkał się z sytuacją, w której potrzebne są informacje z dokumentu PDF, czy to raport księgowy, badanie, czy nawet ulubiona e-książka. Ale co zrobić, jeśli trzeba wydobyć dane automatycznie, a nie ręcznie? Tutaj pojawia się Python i jego niesamowita biblioteka PyPDF2.

Główne kroki przy wydobywaniu tekstu

Aby pomyślnie wydobyć tekst z PDF, należy wykonać kilka prostych kroków:

  1. Odczyt pliku PDF.
  2. Parsowanie zawartości PDF.
  3. Wydobywanie tekstu do dalszej analizy.

2. Odczyt i parsowanie plików PDF

Przyjrzyjmy się, jak otworzyć i odczytać dokument PDF w Python. Na początek trzeba zaimportować PyPDF2:

Python

import PyPDF2

Teraz otwórzmy dokument PDF. Załóżmy, że mamy plik sample.pdf, który chcemy przeanalizować. Załadujmy go i sprawdźmy liczbę stron.

Ładowanie pliku PDF

Python

# Otwieranie pliku PDF
with open("sample.pdf", "rb") as pdf_file:
    # Tworzymy obiekt PDF Reader
    pdf_reader = PyPDF2.PdfReader(pdf_file)

    # Pobieramy całkowitą liczbę stron
    num_pages = len(pdf_reader.pages)
    print(f"Całkowita liczba stron w dokumencie: {num_pages}")

Wydobywanie tekstu

Gdy już otworzymy dokument PDF, wydobądźmy z niego tekst. Potrzebujemy do tego:

  • PdfReader otwiera plik PDF do odczytu.
  • Używamy pętli for, aby przejść przez wszystkie strony i wywołać extract_text() w celu wydobycia tekstu.
  • Wydobyty tekst zapisywany jest w zmiennej text i może zostać wyświetlony lub przetworzony.

Oto przykład, jak może to wyglądać:

Python

import PyPDF2

# Otwieranie pliku PDF
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    
    # Wydobycie tekstu z każdej strony
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text += page.extract_text() + "\n"

print(text)

Wydobywanie tekstu z określonych stron

A co, jeśli potrzebujemy tekstu tylko z określonej strony? Na przykład, załóżmy, że chcemy wydobyć tekst tylko z trzeciej strony. Robi się to tak:

Python

import PyPDF2

with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    page = pdf_reader.pages[2]  # Wydobywamy tekst z trzeciej strony (indeks 2)
    text = page.extract_text()

print(text)

Ten przykład pozwala wydobyć tekst tylko z trzeciej strony, co może być przydatne, jeśli dokument zawiera wiele stron, a chcesz ograniczyć przetwarzanie. PyPDF2 używa numeracji stron od 0.

3. Automatyzacja przetwarzania tekstu z PDF

Po wydobyciu tekstu z PDF można go analizować i przetwarzać w celu dokładniejszej analizy danych. PyPDF2 pozwala zautomatyzować ten proces, co jest szczególnie przydatne przy pracy z dużą ilością dokumentów.

Wydobywanie i zapisywanie tekstu do osobnego pliku

Aby ułatwić dalszą analizę, można zapisać wydobyty tekst do pliku tekstowego. To uprości jego kolejne przetwarzanie.

Python

import PyPDF2

# Otwieranie pliku 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"

# Zapisywanie wydobytego tekstu do pliku
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
    text_file.write(text)

Przetwarzanie i analiza wydobytego tekstu

Po wydobyciu tekstu można go analizować za pomocą Python. Do tego często wykorzystuje się takie biblioteki, jak re (wyrażenia regularne), nltk (Natural Language Toolkit) lub pandas.

Zliczanie słów i wyszukiwanie fraz kluczowych

Załóżmy, że mamy plik tekstowy extracted_text.txt, i chcemy policzyć liczbę określonych słów i fraz w dokumencie.

Python

import re

# Otwieranie wydobytego tekstu
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
    text = text_file.read()

# Wyszukiwanie i zliczanie słów kluczowych
keywords = ["raport", "dane", "analiza"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}

print("Częstotliwość słów kluczowych:", keyword_counts)

Tutaj:

  • Otwieramy zapisany tekst.
  • Używamy wyrażeń regularnych do zliczania słów kluczowych (bez względu na wielkość liter).
  • Otrzymujemy liczbę wystąpień każdego słowa kluczowego.

4. Zalety i ograniczenia PyPDF2

Zalety:

  • Łatwość użycia do podstawowego wydobywania tekstu i przetwarzania stron.
  • Wsparcie podstawowych operacji: odczyt tekstu, scalanie i dzielenie dokumentów.
  • Łatwa integracja z innymi bibliotekami Python.

Ograniczenia:

  • PyPDF2 nie zawsze poprawnie wydobywa tekst ze skomplikowanych PDF z wielopoziomowymi formatami, tabelami i obrazami.
  • Brak wsparcia dla bezpośredniego wydobywania obrazów i tabel.
  • Nie obsługuje plików zaszyfrowanych lub chronionych hasłem (chociaż można spróbować zdjąć ochronę, jeśli hasło jest znane).
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION