I recently needed to urgently send someone an important document, but I only had a printed copy. Manually retyping the whole thing seemed inefficient. Instead, I took a clear photo and used OpenCV and Tesseract OCR to extract the text automatically. With just a few lines of code, I could transform the printed document into digital text, saving time and effort.
Streamlined OCR with OpenCV and Tesseract
The key to this simplified OCR approach lies in leveraging OpenCV for image processing and Tesseract for text recognition. Here’s a glance at the Python code:
import cv2 import pytesseract # Configure Tesseract executable path pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe' # Load image image = cv2.imread('image.jpg') # Preprocess image gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] # Apply OCR text = pytesseract.image_to_string(gray) print(text)
The first step is importing the OpenCV and pytesseract modules. OpenCV provides the image processing functions, while pytesseract enables accessing the Tesseract OCR engine.
Next, we configure the path to the Tesseract executable. This is required since pytesseract needs to know where to find the Tesseract program on your system. On Windows, the path is usually something like ‘C:\Program Files\Tesseract-OCR\tesseract.exe’.
To use Tesseract, you need to first install it on your machine. You can download the Tesseract installer based on your operating system. Make sure to add the Tesseract binary folder to your system PATH after installing so it is accessible.
Once Tesseract is installed, the code loads the image using OpenCV’s imread() function. Then it preprocesses the image to improve OCR accuracy. Converting to grayscale and applying thresholding helps with text extraction.
Finally, pytesseract’s image_to_string() function applies Tesseract OCR to recognize text in the image. We pass it the preprocessed grayscale image and it returns the extracted text string.
Conclusion
We load the image with just a few lines, preprocess it for optimal OCR, and extract the text using Tesseract. The result is the fully recognized text string from the image! This approach has been a game-changer for my need to digitize printed documents. Whether analyzing scans or converting photos of text, OpenCV and Tesseract simplify the process.