PDF’er er en almindelig måde at dele tekst på. PDF står for Portable Document Format og bruger filendelsen .pdf. Det blev oprettet i begyndelsen af 1990’erne af Adobe Systems.
Læsning af PDF-dokumenter ved hjælp af python kan hjælpe dig med at automatisere en lang række opgaver.
I denne vejledning lærer vi, hvordan man udtrækker tekst fra en PDF-fil i Python.
Lad os komme i gang.
- Læsning og udtrækning af tekst fra en PDF-fil i Python
- Brug af PyPDF2 til at udtrække PDF-tekst
- 1. Installer pakken
- 2. Importer PyPDF2
- 3. Åbn PDF’en i read-binary-tilstand
- 4. Brug PyPDF2.PdfFileReader() til at læse tekst
- Komplet kode til at læse PDF-tekst ved hjælp af PyPDF2
- Brug af PDFplumber til at udtrække tekst
- 1. Installer pakken
- 2. Importer pdfplumber
- 3. Brug af PDFplumber til at læse pdf’er
Læsning og udtrækning af tekst fra en PDF-fil i Python
Til brug for denne vejledning opretter vi en prøve-PDF-fil med 2 sider. Det kan du gøre ved hjælp af et hvilket som helst tekstbehandlingsprogram som Microsoft Word eller Google Docs og gemme filen som en PDF.
Tekst på side 1:
Hello World. This is a sample PDF with 2 pages. This is the first page.
Tekst på side 2:
This is the text on Page 2.
Brug af PyPDF2 til at udtrække PDF-tekst
Du kan bruge PyPDF2 til at udtrække tekst fra en PDF. Lad os se, hvordan det fungerer.
1. Installer pakken
For at installere PyPDF2 på dit system skal du indtaste følgende kommando på din terminal. Du kan læse mere om pip-pakkehåndteringsprogrammet.
pip install pypdf2
2. Importer PyPDF2
Åbn en ny python-notebook og start med at importere PyPDF2.
import PyPDF2
3. Åbn PDF’en i read-binary-tilstand
Start med at åbne PDF’en i read-binary-tilstand ved hjælp af følgende kodelinje:
pdf = open('sample_pdf.pdf', 'rb')
Dette vil oprette et PdfFileReader-objekt for vores PDF og gemme det i variablen ‘pdf’.
4. Brug PyPDF2.PdfFileReader() til at læse tekst
Nu kan du bruge PdfFileReader()-metoden fra PyPDF2 til at læse filen.
pdfReader = PyPDF2.PdfFileReader(pdf)
For at få teksten fra den første side i PDF-filen skal du bruge følgende kodelinjer:
page_one = pdfReader.getPage(0)print(page_one.extractText())
Vi får output som:
Hello World. !This is a sample PDF with 2 pages. !This is the first page. !Process finished with exit code 0
Her har vi brugt getPage-metoden til at gemme siden som et objekt. Derefter brugte vi extractText()-metoden til at hente tekst fra sideobjektet.
Den tekst, vi får, er af typen String.
Sådan får vi den anden side fra PDF’en ved at bruge:
page_one = pdfReader.getPage(1)print(page_one.extractText())
Vi får output som :
This is the text on Page 2.
Komplet kode til at læse PDF-tekst ved hjælp af PyPDF2
Den komplette kode fra dette afsnit er angivet nedenfor:
import PyPDF2pdf = open('sample_pdf.pdf', 'rb')pdfReader = PyPDF2.PdfFileReader(pdf)page_one = pdfReader.getPage(0)print(page_one.extractText())
Hvis du bemærker det, er formateringen af den første side lidt forkert i ovenstående output. Det skyldes, at PyPDF2 ikke er særlig effektiv til at læse PDF-filer.
Gluksuriøst nok har Python et bedre alternativ til PyPDF2. Det vil vi se på som det næste.
Brug af PDFplumber til at udtrække tekst
PDFplumber er et andet værktøj, der kan udtrække tekst fra en PDF-fil. Det er mere kraftfuldt sammenlignet med PyPDF2.
1. Installer pakken
Lad os komme i gang med at installere PDFplumber.
pip install pdfplumber
2. Importer pdfplumber
Start med at importere PDFplumber ved hjælp af følgende kodelinje :
import pdfplumber
3. Brug af PDFplumber til at læse pdf’er
Du kan begynde at læse pdf’er ved hjælp af PDFplumber med følgende kodestykke:
with pdfplumber.open("sample_pdf.pdf") as pdf: first_page = pdf.pages print(first_page.extract_text())
Dette vil hente teksten fra den første side i vores pdf. Output kommer som:
Hello World. This is a sample PDF with 2 pages. This is the first page. Process finished with exit code 0
Du kan sammenligne dette med output fra PyPDF2 og se, hvordan PDFplumber er bedre, når det kommer til formatering.
PDFplumber giver også muligheder for at få andre oplysninger fra PDF’en.
For eksempel kan du bruge .page_number til at få sidetal.
print(first_page.page_number)
Output :