Я работаю над финальным проектом моей степени бакалавра и хочу создать OCR для проверки бутылок с помощью python. Мне нужна помощь с распознаванием текста по изображению. Нужно ли применять операции cv2 лучше, обучать тессеракт или мне стоит попробовать другой метод?
Я попытался выполнить операции по обработке изображения на изображении и использовал pytesseract для распознавания символов.
Используя приведенный ниже код, полученный с этой фотографии:
к этому:
и затем к этому:
Функция повышения резкости:
def sharpen(img):
sharpen = iaa.Sharpen(alpha=1.0, lightness = 1.0)
sharpen_img = sharpen.augment_image(img)
return sharpen_img
Код обработки изображения:
textZone = cv2.pyrUp(sharpen(originalImage[y:y + h - 1, x:x + w - 1])) #text zone cropped from the original image
sharp = cv2.cvtColor(textZone, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(sharp, 127, 255, cv2.THRESH_BINARY)
#the functions such as opening are inverted (I don't know why) that's why I did opening with MORPH_CLOSE parameter, dilatation with erode and so on
kernel_open = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
open = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel_open)
kernel_dilate = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,7))
dilate = cv2.erode(open,kernel_dilate)
kernel_close = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 5))
close = cv2.morphologyEx(dilate, cv2.MORPH_OPEN, kernel_close)
print(pytesseract.image_to_string(close))
Это результат pytesseract.image_to_string:
22203;?!)
92:53 a
Ожидаемый результат:
22/03/20
02:53 A