Soubory PDF jsou běžným způsobem sdílení textu. PDF je zkratka pro Portable Document Format a používá příponu .pdf. Byl vytvořen počátkem 90. let 20. století společností Adobe Systems.
Čtení dokumentů PDF pomocí jazyka Python vám může pomoci automatizovat celou řadu úloh.
V tomto návodu se naučíme, jak získat text ze souboru PDF v jazyce Python.
Začneme.
- Čtení a extrakce textu ze souboru PDF v jazyce Python
- Použití PyPDF2 k extrakci textu z PDF
- 1. Nainstalujte balíček
- 2. Importujte PyPDF2
- 3. Otevřete PDF v režimu čtení binárních souborů
- 4. Otevřete PDF v režimu čtení binárních souborů. Pro čtení textu použijte metodu PyPDF2.PdfFileReader()
- Kompletní kód pro čtení textu PDF pomocí PyPDF2
- Použití nástroje PDFplumber k extrakci textu
- 1. Nainstalujte balíček
- 2. Importujte pdfplumber
- 3. Naimportujte PDFplumber
Čtení a extrakce textu ze souboru PDF v jazyce Python
Pro účely tohoto tutoriálu vytvoříme ukázkový soubor PDF o dvou stránkách. Můžete tak učinit pomocí libovolného textového procesoru, jako je Microsoft Word nebo Google Docs, a soubor uložit jako PDF.
Text na straně 1:
Hello World. This is a sample PDF with 2 pages. This is the first page.
Text na straně 2:
This is the text on Page 2.
Použití PyPDF2 k extrakci textu z PDF
K extrakci textu z PDF můžete použít PyPDF2. Podívejme se, jak to funguje.
1. Nainstalujte balíček
Pro instalaci PyPDF2 do systému zadejte do terminálu následující příkaz. O správci balíčků pip si můžete přečíst více.
pip install pypdf2
2. Importujte PyPDF2
Otevřete nový sešit Pythonu a začněte s importem PyPDF2.
import PyPDF2
3. Otevřete PDF v režimu čtení binárních souborů
Začněte s otevíráním PDF v režimu čtení binárních souborů pomocí následujícího řádku kódu:
pdf = open('sample_pdf.pdf', 'rb')
Tím vytvoříte objekt PdfFileReader pro náš PDF a uložíte jej do proměnné ‚pdf‘.
4. Otevřete PDF v režimu čtení binárních souborů. Pro čtení textu použijte metodu PyPDF2.PdfFileReader()
Nyní můžete pro čtení souboru použít metodu PdfFileReader() z PyPDF2.
pdfReader = PyPDF2.PdfFileReader(pdf)
Pro získání textu z první stránky PDF použijte následující řádky kódu:
page_one = pdfReader.getPage(0)print(page_one.extractText())
Výstup získáme jako:
Hello World. !This is a sample PDF with 2 pages. !This is the first page. !Process finished with exit code 0
Zde jsme použili metodu getPage pro uložení stránky jako objektu. Poté jsme použili metodu extractText() pro získání textu z objektu stránky.
Text, který jsme získali, je typu String.
Podobně pro získání druhé stránky z PDF použijeme:
page_one = pdfReader.getPage(1)print(page_one.extractText())
Výstup získáme jako :
This is the text on Page 2.
Kompletní kód pro čtení textu PDF pomocí PyPDF2
Kompletní kód z této části je uveden níže:
import PyPDF2pdf = open('sample_pdf.pdf', 'rb')pdfReader = PyPDF2.PdfFileReader(pdf)page_one = pdfReader.getPage(0)print(page_one.extractText())
Pokud si všimnete, ve výše uvedeném výstupu je formátování první stránky trochu mimo. Je to proto, že PyPDF2 není příliš efektivní při čtení souborů PDF.
Naštěstí má Python lepší alternativu k PyPDF2. Na tu se podíváme příště.
Použití nástroje PDFplumber k extrakci textu
PDFplumber je další nástroj, který dokáže extrahovat text z PDF. Ve srovnání s PyPDF2 je výkonnější.
1. Nainstalujte balíček
Pustíme se do instalace PDFplumberu.
pip install pdfplumber
2. Importujte pdfplumber
Začněte s importem PDFplumber pomocí následujícího řádku kódu :
import pdfplumber
3. Naimportujte PDFplumber
. Použití PDFplumberu ke čtení PDF
Čtení PDF můžete začít pomocí PDFplumberu pomocí následujícího řádku kódu:
with pdfplumber.open("sample_pdf.pdf") as pdf: first_page = pdf.pages print(first_page.extract_text())
Tím získáte text z první stránky našeho PDF. Výstup přijde jako:
Hello World. This is a sample PDF with 2 pages. This is the first page. Process finished with exit code 0
Můžete to porovnat s výstupem PyPDF2 a uvidíte, v čem je PDFplumber lepší, pokud jde o formátování.
PDFplumber také nabízí možnosti, jak z PDF získat další informace.
Například můžete použít .page_number pro získání čísla stránky.
print(first_page.page_number)
Výstupní data :