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:
- Odczyt pliku PDF.
- Parsowanie zawartości PDF.
- 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:
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
# 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ć:
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:
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.
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.
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).
GO TO FULL VERSION