Семисегментное цифровое распознавание данных с использованием Tessseract / Java

Я пытаюсь распознать семисегментный цифровой текст из изображения, используя tess4J.

Мой вклад здесь

Я сделал некоторую нормализацию следующим образом

1 ] Изображение обрезано.

2] преобразовал его в двоичный файл

Я хочу удалить неровные края текста из изображения. Как я могу это сделать?

Я пробовал разные обученные данные с GitHub. Но ничего не работает, как я хочу.

Как создать обученные данные вручную?,

Я жду ваших замечательных предложений и большое спасибо заранее.,,,

1 ответ

Решение

Вы можете попробовать комбинацию фильтров Собеля (для сужения краев) и фильтров Гаусса (для размытия изображения).

Вы не указали, какой API вы используете для манипулирования изображениями в Java, и, поскольку я не знаком с Tess4J, я покажу, что можно сделать из Python (вы можете использовать предпочитаемую библиотеку для манипулирования изображениями в Java, процесс будет будь таким же)

import scipy
import scipy.misc
import scipy.ndimage.filters
import numpy

def save_image(img_data, counter):
    img_fn = "img_{}.jpg".format(counter)
    scipy.misc.imsave(img_fn, img_data)


if __name__ == "__main__":
    # This loads the second image of your post
    img_0 = scipy.misc.imread("TqO53.jpg")
    img_0 = scipy.average(img_0, -1) 
    #save_image(img_0, 0)

    # Obtain edges
    img_x = scipy.ndimage.filters.sobel(img_0, 0)
    img_y = scipy.ndimage.filters.sobel(img_0, 1)
    img_1 = numpy.hypot(img_x, img_y)
    #save_image(img_1, 1)

    # Remove edges from original image (i.e. thinning edges)
    img_2 = img_0 - img_1
    img_2[img_2 < 10] = 0 
    save_image(img_2, 2)

    # Blur image if you want to get rid of the sketchy borders
    img_3 = scipy.ndimage.gaussian_filter(img_2, sigma=1)
    save_image(img_3, 3)

Это создаст следующие изображения:

IMG_2.jpg

С тонкими краями

img_3.jpg

Размытый

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

Если после этого вы захотите, вы можете попытаться прореживать целые числа до толщины 1 пикселя. Может быть, это хорошо работает с Tess4J.

Другие вопросы по тегам