помощь с проблемой распознавания символов - PullRequest
0 голосов
/ 10 февраля 2019

После сегментации символов я использовал tesseract для извлечения текста из каждого контура, но tesseract дает неверные результаты.Есть ли способ улучшить качество продукции тессеракта?

enter image description here

1 Ответ

0 голосов
/ 10 февраля 2019

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

def remove_small_dots_from_image(im):
    _, black_and_white = cv2.threshold(im, 127, 255, cv2.THRESH_BINARY_INV)

    n_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(black_and_white, None, None, None, 8, cv2.CV_32S)
    sizes = stats[1:, -1]  # get CC_STAT_AREA component
    img2 = np.zeros(labels.shape, np.uint8)

    for i in range(0, n_labels - 1):
        if sizes[i] >= 50:  # filter small dotted regions
            img2[labels == i + 1] = 255

    return cv2.bitwise_not(img2)

image = cv2.imread('image.png', cv2.IMREAD_GRAYSCALE)
image = remove_small_dots_from_image(image)
#add white border around the image because tesseract would fail to guess font size otherwise
image = cv2.copyMakeBorder(image, 30, 30, 30, 30, cv2.BORDER_CONSTANT, None, 255)
print(pytesseract.image_to_string(image, config='--psm 7'))

Этот код дает вам желаемый результат

2

enter image description here

...