Python | Using PIL ImageGrab and PyTesseract
Last Updated :
13 Oct, 2019
Improve
ImageGrab and PyTesseract
ImageGrab is a Python module that helps to capture the contents of the screen. PyTesseract is an Optical Character Recognition(OCR) tool for Python. Together they can be used to read the contents of a section of the screen. Installation -Pillow (a newer version of PIL)pip install PillowPyTesseractpip install pytesseractApart from this, a tesseract executable needs to be installed.
Implementation of code
The following functions were primarily used in the code -pytesseract.image_to_string(image, lang=**language**) - Takes the image and searches for words of the language in their text. cv2.cvtColor(image, **colour conversion**) - Used to make the image monochrome(using cv2.COLOR_BGR2GRAY). ImageGrab.grab(bbox=**Coordinates of the area of the screen to be captured**) - Used to repeatedly(using a loop) capture a specific part of the screen.The objectives of the code are:
- To use a loop to repeatedly capture a part of the screen.
- To convert the captured image into grayscale.
- Use PyTesseract to read the text in it.
# cv2.cvtColor takes a numpy ndarray as an argument
import numpy as nm
import pytesseract
# importing OpenCV
import cv2
from PIL import ImageGrab
def imToString():
# Path of tesseract executable
pytesseract.pytesseract.tesseract_cmd ='**Path to tesseract executable**'
while(True):
# ImageGrab-To capture the screen image in a loop.
# Bbox used to capture a specific area.
cap = ImageGrab.grab(bbox =(700, 300, 1400, 900))
# Converted the image to monochrome for it to be easily
# read by the OCR and obtained the output String.
tesstr = pytesseract.image_to_string(
cv2.cvtColor(nm.array(cap), cv2.COLOR_BGR2GRAY),
lang ='eng')
print(tesstr)
# Calling the function
imToString()
Output
