Pliki PDF są powszechnym sposobem udostępniania tekstu. PDF jest skrótem od Portable Document Format i używa rozszerzenia pliku .pdf. Został stworzony na początku lat 90. przez firmę Adobe Systems.
Odczytywanie dokumentów PDF za pomocą pythona może pomóc w zautomatyzowaniu wielu różnych zadań.
W tym poradniku dowiemy się, jak wyodrębnić tekst z pliku PDF w Pythonie.
Zacznijmy.
- Czytanie i wyodrębnianie tekstu z pliku PDF w Pythonie
- Użycie PyPDF2 do wyodrębniania tekstu z PDF
- 1. Zainstaluj pakiet
- 2. Zaimportuj PyPDF2
- 3. Otwórz plik PDF w trybie read-binary
- 4. Użyj metody PyPDF2.PdfFileReader() do odczytania tekstu
- Kompletny kod do odczytu tekstu PDF przy użyciu PyPDF2
- Użycie PDFplumber do wyodrębnienia tekstu
- 1. Zainstaluj pakiet
- 2. Import pdfplumber
- 3. Używanie PDFplumber do czytania plików PDF
Czytanie i wyodrębnianie tekstu z pliku PDF w Pythonie
Na potrzeby tego samouczka utworzymy przykładowy plik PDF zawierający 2 strony. Możesz to zrobić używając dowolnego edytora tekstu, takiego jak Microsoft Word lub Google Docs i zapisać plik jako PDF.
Tekst na stronie 1:
Hello World. This is a sample PDF with 2 pages. This is the first page.
Tekst na stronie 2:
This is the text on Page 2.
Użycie PyPDF2 do wyodrębniania tekstu z PDF
Możesz użyć PyPDF2 do wyodrębnienia tekstu z PDF. Zobaczmy jak to działa.
1. Zainstaluj pakiet
Aby zainstalować PyPDF2 w swoim systemie, wprowadź następujące polecenie w terminalu. Możesz przeczytać więcej o menedżerze pakietów pip.
pip install pypdf2
2. Zaimportuj PyPDF2
Otwórz nowy notatnik Pythona i zacznij od zaimportowania PyPDF2.
import PyPDF2
3. Otwórz plik PDF w trybie read-binary
Zacznij od otwarcia pliku PDF w trybie read binary, używając następującej linii kodu:
pdf = open('sample_pdf.pdf', 'rb')
Tworzy to obiekt PdfFileReader dla naszego pliku PDF i przechowuje go w zmiennej 'pdf’.
4. Użyj metody PyPDF2.PdfFileReader() do odczytania tekstu
Teraz możesz użyć metody PdfFileReader() z PyPDF2 do odczytania pliku.
pdfReader = PyPDF2.PdfFileReader(pdf)
Aby uzyskać tekst z pierwszej strony PDF, użyj następujących linii kodu:
page_one = pdfReader.getPage(0)print(page_one.extractText())
Uzyskamy dane wyjściowe jako:
Hello World. !This is a sample PDF with 2 pages. !This is the first page. !Process finished with exit code 0
Użyliśmy tutaj metody getPage, aby zapisać stronę jako obiekt. Następnie użyliśmy metody extractText(), aby uzyskać tekst z obiektu strony.
Tekst, który otrzymaliśmy jest typu String.
Podobnie, aby uzyskać drugą stronę z pliku PDF użyj:
page_one = pdfReader.getPage(1)print(page_one.extractText())
Uzyskamy dane wyjściowe jako :
This is the text on Page 2.
Kompletny kod do odczytu tekstu PDF przy użyciu PyPDF2
Kompletny kod z tej sekcji jest podany poniżej:
import PyPDF2pdf = open('sample_pdf.pdf', 'rb')pdfReader = PyPDF2.PdfFileReader(pdf)page_one = pdfReader.getPage(0)print(page_one.extractText())
Jeśli zauważysz, formatowanie pierwszej strony jest trochę wyłączone w powyższym wyjściu. Jest to spowodowane tym, że PyPDF2 nie jest zbyt wydajny w czytaniu plików PDF.
Na szczęście, Python ma lepszą alternatywę dla PyPDF2. Przyjrzymy się jej w następnej kolejności.
Użycie PDFplumber do wyodrębnienia tekstu
PDFplumber jest kolejnym narzędziem, które może wyodrębnić tekst z PDF. Jest ono bardziej wydajne w porównaniu do PyPDF2.
1. Zainstaluj pakiet
Zacznijmy od zainstalowania PDFplumber.
pip install pdfplumber
2. Import pdfplumber
Zacznijmy od importu PDFplumber używając następującej linii kodu :
import pdfplumber
3. Używanie PDFplumber do czytania plików PDF
Możesz rozpocząć czytanie plików PDF używając PDFplumber z następującym fragmentem kodu:
with pdfplumber.open("sample_pdf.pdf") as pdf: first_page = pdf.pages print(first_page.extract_text())
To pobierze tekst z pierwszej strony naszego PDF. Wyjście jest następujące:
Hello World. This is a sample PDF with 2 pages. This is the first page. Process finished with exit code 0
Możesz porównać to z wyjściem PyPDF2 i zobaczyć jak PDFplumber jest lepszy jeśli chodzi o formatowanie.
PDFplumber zapewnia również opcje, aby uzyskać inne informacje z PDF.
Na przykład, możesz użyć .page_number, aby uzyskać numer strony.
print(first_page.page_number)
Output :
.