How to extract text from a Specific Area in a PDF using Python?

Devdatta Tengshe picture Devdatta Tengshe · Aug 21, 2017 · Viewed 10.6k times · Source

I'm trying to extract Text from a PDF using Python, and I have successfully done so using PyPDF2 like this:

import PyPDF2
pdfFileObj = open('path', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj = pdfReader.getPage(0)
pageObj.extractText()

This extracts all the Text from the Page, but I want to extract the text only from a Rectangular region of 3'x4' at the top-left part of the page.

I Basically want to do something like :How-to extract text from a pdf doc within a specific rectangular region? but in Python

Can this be done by PyPDF2 or by any other Python Library?

Answer

Joe picture Joe · Aug 21, 2017

This is a rather complex topic, but it is possible. First you need to get familiar with the pdf format descripton.

Start here for example.

You can identify the location and contents of the text boxes and extract the string data.

This topic holds examples for pyPdf, the previous version of PyPDF2, but syntax is similar. There are examples on how to iterate through the indirect objects.

A good place to start is also the source of the function pageObj.extractText() that you used.

If you are not restricted to Python: How to extract text from a PDF?

You can also use a tool like iText RUPS to inspect the pdf. It shows how the content is rendered and placed on the page:

enter image description here

Afterwards you should be able to identify and address the elements and extract their content.