Оптическое распознавание символов Python Code полностью игнорирует все символы для некоторых изображений - PullRequest
0 голосов
/ 05 октября 2018

В настоящее время я работаю над простой задачей, где я должен читать символы из простых изображений.Использовал tesseract в Python для написания следующего кода, который работает со всеми простыми и сложными изображениями, имеющими текст на английском языке, но не работает с конкретным изображением. Может кто-нибудь сказать мне, почему следующий код Python не может читать символы из следующего изображения, как вы можете видеть с помощью 6черные секции по 6 символов в каждом поле, цвет символов белый.

from PIL import Image
import pytesseract
import argparse
import cv2
import os

ap = argparse.ArgumentParser()
ap.add_argument("-i","--image",required=True,help="path to input image to be OCR'd")
ap.add_argument("-p","-- preprocess",type=str,default="thresh",help="type of preprocessing to be done")
args=vars(ap.parse_args())
image = cv2.imread(args["image"])
gray2 = cv2.BackgroundSubtractor()
gray2 = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
gray2 = cv2.threshold(gray2, 100, 255, cv2.THRESH_BINARY_INV)[1]
rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 3))
sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
if args["preprocess"] == "thresh":
    gray2 = cv2.threshold(gray2, 2, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
elif args["preprocess"] == "blur":
    gray2 = cv2.medianBlur(gray2,3)
filename = "{}.png".format(os.getpid())
cv2.imwrite(filename,gray2)
text = pytesseract.image_to_string(Image.open(filename))
print(text)

Если используется это изображение, оно дает идеальный результат

0123456789 ABCDEFGHIJKL MNOPQRSTUV WXYZ

Когда я пытаюсь использовать следующее изображение,

Обработанное изображение, которое не дает результата код полностью игнорирует все символы в изображении.Единственное отличие состоит в том, что на первом изображении нет ящиков, подобных второму изображению, где каждый черный ящик содержит 6 символов

Может кто-нибудь помочь и скажите, что мне не хватает, почему этоКод не подходит для второго изображения, спасибо.

Вот исходные изображения: Изображение1 Изображение2

...