PDF-filer är ett vanligt sätt att dela text. PDF står för Portable Document Format och använder filändelsen .pdf. Det skapades i början av 1990-talet av Adobe Systems.
Läsning av PDF-dokument med hjälp av python kan hjälpa dig att automatisera en mängd olika uppgifter.
I den här handledningen kommer vi att lära oss hur man extraherar text från en PDF-fil i Python.
Vi sätter igång.
- Läsa och extrahera text från en PDF-fil i Python
- Använda PyPDF2 för att extrahera PDF-text
- 1. Installera paketet
- 2. Importera PyPDF2
- 3. Öppna PDF:n i läs-binärt läge
- 4. Använd PyPDF2.PdfFileReader() för att läsa texten
- Komplett kod för att läsa PDF-text med PyPDF2
- Att använda PDFplumber för att extrahera text
- 1. Installera paketet
- 2. Importera pdfplumber
- 3. Använda PDFplumber för att läsa pdf:er
Läsa och extrahera text från en PDF-fil i Python
För den här handledningen skapar vi en exempel-PDF med 2 sidor. Du kan göra det med hjälp av en ordbehandlare som Microsoft Word eller Google Docs och spara filen som PDF.
Text på sida 1:
Hello World. This is a sample PDF with 2 pages. This is the first page.
Text på sida 2:
This is the text on Page 2.
Använda PyPDF2 för att extrahera PDF-text
Du kan använda PyPDF2 för att extrahera text från en PDF-fil. Låt oss se hur det fungerar.
1. Installera paketet
För att installera PyPDF2 på ditt system anger du följande kommando i din terminal. Du kan läsa mer om pakethanteraren pip.
pip install pypdf2
2. Importera PyPDF2
Öppna en ny anteckningsbok i python och börja med att importera PyPDF2.
import PyPDF2
3. Öppna PDF:n i läs-binärt läge
Start med att öppna PDF:n i läs-binärt läge med hjälp av följande kodrad:
pdf = open('sample_pdf.pdf', 'rb')
Detta kommer att skapa ett PdfFileReader-objekt för vår PDF:n och lagra det i variabeln ”pdf”.
4. Använd PyPDF2.PdfFileReader() för att läsa texten
Nu kan du använda metoden PdfFileReader() från PyPDF2 för att läsa filen.
pdfReader = PyPDF2.PdfFileReader(pdf)
För att hämta texten från den första sidan i PDF-filen använder du följande kodrader:
page_one = pdfReader.getPage(0)print(page_one.extractText())
Vi får utdata som:
Hello World. !This is a sample PDF with 2 pages. !This is the first page. !Process finished with exit code 0
Här använde vi getPage-metoden för att lagra sidan som ett objekt. Sedan använde vi extractText() metoden för att hämta text från sidobjektet.
Texten vi får är av typen String.
För att på samma sätt hämta den andra sidan från PDF-filen använder vi:
page_one = pdfReader.getPage(1)print(page_one.extractText())
Vi får utdata som :
This is the text on Page 2.
Komplett kod för att läsa PDF-text med PyPDF2
Den kompletta koden från det här avsnittet ges nedan:
import PyPDF2pdf = open('sample_pdf.pdf', 'rb')pdfReader = PyPDF2.PdfFileReader(pdf)page_one = pdfReader.getPage(0)print(page_one.extractText())
Om du märker det är formateringen av den första sidan lite fel i utmatningen ovan. Detta beror på att PyPDF2 inte är särskilt effektiv när det gäller att läsa PDF-filer.
Turligtvis har Python ett bättre alternativ till PyPDF2. Vi kommer att titta på det härnäst.
Att använda PDFplumber för att extrahera text
PDFplumber är ett annat verktyg som kan extrahera text från en PDF. Det är mer kraftfullt jämfört med PyPDF2.
1. Installera paketet
Vi börjar med att installera PDFplumber.
pip install pdfplumber
2. Importera pdfplumber
Börja med att importera PDFplumber med hjälp av följande kodrad :
import pdfplumber
3. Använda PDFplumber för att läsa pdf:er
Du kan börja läsa pdf:er med hjälp av PDFplumber med följande kodstycke:
with pdfplumber.open("sample_pdf.pdf") as pdf: first_page = pdf.pages print(first_page.extract_text())
Detta kommer att hämta texten från första sidan i vår pdf. Utdata 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 jämföra detta med utdata från PyPDF2 och se hur PDFplumber är bättre när det gäller formatering.
PDFplumber erbjuder också alternativ för att få fram annan information från PDF-filen.
Till exempel kan du använda .page_number för att få fram sidnumret.
print(first_page.page_number)
Output :