PDF is one of the widely used file formats for sharing data digitally. So reading a pdf file using python language would be more interesting.
Python being a high-level language is capable of doing almost everything to automate a task. Likewise reading the “txt” file in python is easy as python has inbuilt library methods to do so. But the problem is that the inbuilt function doesn’t support pdf file formats.
But don’t worry there are several 3rd party python libraries to work with pdf files:
In this article, we will use PyPDF2.
Before proceeding please note that “PyPDF2” cannot extract images, charts, tables, or other media from PDF documents. There are other 3rd party libraries to read media from PDFs like ‘Tabula-py’ for tables, ‘pyTesseract’ for extracting images, and so on but here our main focus is reading text in the form of string.
So let’s start.
Reading PDF File using PyPDF2
Start by installing PyPDF2 from the command line using the following command.
pip install PyPDF2
The module name is case sensitive so make sure only the letter ‘y’ is in the lower case and everything rest in the upper case. Once it has been successfully done writing import PyPDF2 will not throw an error.
Now let’s try reading the file “Btech_job.pdf” having the following 2 pages.
Download this PDF here
# import the module import PyPDF2 # create an object file = open('example.pdf', 'rb') # create a pdf reader object pdfReader = PyPDF2.PdfFileReader(file) # get the number of pages in pdf file pages = pdfReader.numPages for i in range(pages): #extract the page page = pdfReader.getPage(i) #print the page text content along with page number print("Page no:",i) print(page.extractText())
First, we start by importing the
PyPDF2 module. After this, we open the “Btech_job.pdf” in ‘read binary’ (rb) mode and store its reference in
Now, we create a PdfFileReader object using
PyPDF2.PdfFileReader(file) expression and store this into
pdfReader object has an attribute named
numPages that stores the count of the number of pages in the PDF document.
In our example, the document has a total of 2 pages.
getPage(i) method of
pdfReader object returns the page at index ‘i’, so use it and fetch the page object into variable
Now, we extract the text content of the page using the
extractText() method and output it.
If we need to process different pages of the given PDF, we have to repeat the above process with their corresponding page index.
Note: Numbering of pdf pages (i.e index) start from 0. So page 1 is at index 0, page 2 at index 1, and so on.
I hope from now onwards you can easily read a pdf file in python. If you have any doubts or suggestions then comment below.