OCR with Python: Extracting Text from PDFs

Saumya - Jul 31 - - Dev Community

Optical Character Recognition (OCR) is a technology that allows the conversion of different types of documents, such as scanned paper documents, PDF files, or images captured by a digital camera, into editable and searchable data. When it comes to performing OCR on PDF files using Python, there are several libraries and tools available that can help. One popular approach is to use Tesseract, an open-source OCR engine, along with a PDF processing library like PyMuPDF or pdf2image.

Steps to Perform OCR on a PDF Using Python

1. Install Required Libraries:

  • pytesseract: Python wrapper for Google's Tesseract-OCR.
  • pdf2image: Converts PDF files to images.
  • Pillow: Python Imaging Library (PIL) fork for opening, manipulating, and saving image files.
  • bash
  • pip install pytesseract pdf2image pillow

2. Install Tesseract-OCR:

  • You need to have Tesseract-OCR installed on your system. Instructions for different operating systems can be found on the Tesseract GitHub page.
  1. Perform OCR on a PDF:
  • Python
import pytesseract from pdf2image import convert_from_path from PIL import Image # Path to the PDF file pdf_path = 'path/to/your/pdf_file.pdf' # Convert PDF to images images = convert_from_path(pdf_path) # Perform OCR on each page text = '' for i, image in enumerate(images): text += pytesseract.image_to_string(image) text += '\n\n' # Save the extracted text to a file with open('output.txt', 'w') as f: f.write(text) print("OCR completed successfully.")
Enter fullscreen mode Exit fullscreen mode

Detailed Explanation

1. Install Required Libraries:

Install

pytesseract, pdf2image, and Pillow using pip.
Enter fullscreen mode Exit fullscreen mode

2. Install Tesseract-OCR:

Ensure Tesseract is installed on your system. For instance, on Ubuntu, you can install it using sudo apt-get install tesseract-ocr. On Windows, download the installer from the Tesseract project page.

3. Convert PDF to Images:

Use pdf2image.convert_from_path() to convert each page of the PDF into an image. This function returns a list of PIL Image objects.

4. Perform OCR on Images:

Use pytesseract.image_to_string() to extract text from each image.
Append the text from each page to a string and separate each page’s text with \n\n.

5. Save the Extracted Text:

Write the extracted text to an output file for further use.

Additional Tips

  • Language Support: Tesseract supports multiple languages. You can specify the language by adding a lang parameter to the image_to_string function:
  • Python pytesseract.image_to_string(image, lang='eng')
  • Preprocessing Images: Sometimes, preprocessing images (e.g., converting to grayscale, thresholding) can improve OCR accuracy. This can be done using Pillow before passing the image to Tesseract.
  • Handling Multi-column PDFs: If your PDF contains multi-column text, you might need to use more advanced techniques to correctly segment the text.

By following these steps, you can effectively perform OCR on PDF files using Python, making it easy to extract and process text from scanned documents and images. Utilizing Python PDF OCR techniques, you can automate the extraction of text from various types of PDFs, enabling streamlined data processing and analysis.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player