import cv2 import pytesseract import numpy as np from pytesseract import Output # img_source = cv2.VideoCapture(0) img_source = cv2.imread('./img.png') def get_grayscale(image): return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) def thresholding(image): return cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] def opening(image): kernel = np.ones((5, 5), np.uint8) return cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) def canny(image): return cv2.Canny(image, 100, 200) def test_performance(): gray = get_grayscale(img_source) thresh = thresholding(gray) opening = opening(gray) canny = canny(gray) for img in [img_source, gray, thresh, opening, canny]: d = pytesseract.image_to_data(img, output_type=Output.DICT) print(d.keys()) n_boxes = len(d['text']) # back to RGB if len(img.shape) == 2: img = cv2.cvtColor(img, cv2.COLOR_GRAY2RGB) for i in range(n_boxes): if int(d['conf'][i]) > 60: (text, x, y, w, h) = (d['text'][i], d['left'][i], d['top'][i], d['width'][i], d['height'][i]) # don't show empty text if text and text.strip() != "": img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) img = cv2.putText(img, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 255, 0), 3) cv2.imshow('img', img) cv2.waitKey(0) # print(pytesseract.image_to_data(img_source, output_type=Output.DICT)['text']) def identy_char(img_path): source_img = cv2.imread(img_path) d = pytesseract.image_to_data(source_img, output_type=Output.DICT, config='--psm 10') for text in d['text']: # print(text) if len(text) == 1 and text.isalpha(): print(text) if __name__ == "__main__": identy_char('./img.png')