A PDF fájlok a szöveg megosztásának gyakori módja. A PDF a Portable Document Format (hordozható dokumentumformátum) rövidítése, és a .pdf fájlkiterjesztést használja. Az Adobe Systems hozta létre az 1990-es évek elején.

A PDF-dokumentumok python segítségével történő olvasása számos feladat automatizálását segítheti.

Ezzel a bemutatóval megtanuljuk, hogyan lehet szöveget kinyerni egy PDF-fájlból Pythonban.

Lássunk hozzá.

Szöveg olvasása és kivonása egy PDF-fájlból Pythonban

Ez oktatóanyag céljaira egy 2 oldalas minta PDF-et készítünk. Ezt bármelyik szövegszerkesztő programmal, például a Microsoft Word vagy a Google Dokumentumok segítségével megtehetjük, és a fájlt PDF-ként menthetjük el.

Text az 1. oldalon:

Hello World. This is a sample PDF with 2 pages. This is the first page. 

Text a 2. oldalon:

This is the text on Page 2. 

PyPDF2 használata PDF-szöveg kivonására

A PyPDF2 segítségével kivonhatunk szöveget egy PDF-ből. Lássuk, hogyan működik.

1. Telepítse a csomagot

A PyPDF2 telepítéséhez a rendszerére írja be a következő parancsot a terminálon. A pip csomagkezelőről bővebben olvashatsz.

pip install pypdf2
Pypdf
Pypdf

2. Importáld a PyPDF2-t

Nyiss egy új python notebookot és kezdd a PyPDF2 importálásával.

import PyPDF2

3. Nyissuk meg a PDF-et read-binary módban

Kezdjük a PDF megnyitását read-binary módban a következő kódsorral:

pdf = open('sample_pdf.pdf', 'rb')

Ezzel létrehozunk egy PdfFileReader objektumot a PDF-ünkhöz, és a ‘pdf’ változóban tároljuk.

4. Nyissuk meg a PDF-et read-binary módban. A PyPDF2.PdfFileReader() segítségével olvassuk be a szöveget

Most a PyPDF2 PdfFileReader() metódusát használhatjuk a fájl beolvasásához.

pdfReader = PyPDF2.PdfFileReader(pdf)

A szöveg kinyeréséhez a PDF első oldaláról a következő kódsorokat használjuk:

page_one = pdfReader.getPage(0)print(page_one.extractText())

A kimenetet így kapjuk:

Hello World. !This is a sample PDF with 2 pages. !This is the first page. !Process finished with exit code 0

Az oldal objektumként való tárolásához itt a getPage metódust használtuk. Ezután az extractText() metódust használtuk a szöveg kinyeréséhez az oldalobjektumból.

A kapott szöveg String típusú.

Hasonlóképpen a második oldal PDF-ből való kinyeréséhez használjuk:

page_one = pdfReader.getPage(1)print(page_one.extractText())

A kimenetként a :

This is the text on Page 2. 

Teljes kód a PDF szöveg beolvasásához a PyPDF2 segítségével

A teljes kód ebből a szakaszból az alábbiakban található:

import PyPDF2pdf = open('sample_pdf.pdf', 'rb')pdfReader = PyPDF2.PdfFileReader(pdf)page_one = pdfReader.getPage(0)print(page_one.extractText())

Ha észreveszed, az első oldal formázása egy kicsit eltér a fenti kimeneten. Ez azért van, mert a PyPDF2 nem túl hatékony a PDF-ek olvasásában.

A Python szerencsére rendelkezik egy jobb alternatívával a PyPDF2 helyett. Ezt fogjuk megnézni a következőkben.

A PDFplumber használata a szöveg kivonására

A PDFplumber egy másik eszköz, amely képes szöveget kivonni egy PDF-ből. A PyPDF2-hez képest nagyobb teljesítményű.

1. Telepítsük a csomagot

Kezdjük el a PDFplumber telepítését.

pip install pdfplumber
Pdfplumber
Pdfplumber

2. Importáljuk a pdfplumber-t

Kezdjük a PDFplumber importálásával a következő kódsorral :

import pdfplumber

3. Importáljuk a PDFplumber-t a következő kódsorral. PDFplumber használata pdf-ek olvasására

A PDFplumber használatával a következő kódrészlettel kezdhetjük el a PDF-ek olvasását:

with pdfplumber.open("sample_pdf.pdf") as pdf: first_page = pdf.pages print(first_page.extract_text())

Ez a PDF-ünk első oldalának szövegét fogja megkapni. A kimenet így jön:

Hello World. This is a sample PDF with 2 pages. This is the first page. Process finished with exit code 0

Ezt összehasonlíthatjuk a PyPDF2 kimenetével, és láthatjuk, hogy a PDFplumber mennyivel jobb a formázás tekintetében.

A PDFplumber lehetőséget ad arra is, hogy más információkat is kinyerjünk a PDF-ből.

A .page_number segítségével például megkaphatja az oldalszámot.

print(first_page.page_number)

Kimenet :

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.