Tesseract ocr ведет себя странно, увеличивая размер изображения. Как узнать, какой масштабный коэффициент лучше всего подходит для определенных типов изображений? - PullRequest
2 голосов
/ 20 июня 2020

У меня есть это 006.jpg изображение, и я пробовал следовать python коду
Я скачал "eng" из tessdata_best и переименовал его в "eng_best"

img = cv2.imread(file_path)
lang = "eng_best"
for img_scale_factor in range (1,8):
    print(file_path, img_scale_factor)
    img = cv2.resize(img,None,fx=img_scale_factor,fy=img_scale_factor)
    hocr_data = pytesseract.image_to_pdf_or_hocr(img, extension="hocr", lang=lang, config="--dpi 1")
    file_name = '{0:03d}_jpg_{1}_x{3}.{2}'.format(6, lang, "hocr", img_scale_factor)
    with open(os.path.join(savediv, file_name), 'w+b') as f:
        f.write(hocr_data)
    print("    Output - {}".format(file_name))

Я пробовал приведенный выше код с различными img_scale_factor от 1 до 7, который масштабирует данное изображение с этим коэффициентом масштабирования
Вот выходные файлы:
006_jpg_eng_best_x1. html
006_jpg_eng_best_x2. html
006_jpg_eng_best_x3. html
006_jpg_eng_best_x4. html
006_jpg_eng_best_x5. html
006_jpg_eng_best_x6. html
006_jpg_eng_best_x7. html

Мы можем ясно обратите внимание, что Output

  1. From img_scale_factor 1 to 2 - Увеличивает результат ocr.

  2. For img_scale_factor 3 - лучший результат ocr среди всех.

  3. From img_scale_factor 4 to 7 - Уменьшает результат ocr.

Для этого конкретного изображения img_scale_factor 3 дает наилучшие результаты.

Как мы можем определить, какой масштабный коэффициент лучше всего, не проверяя ocr для каждого масштабного коэффициента для некоторых конкретных типов изображений?

Может быть, это можно решить, установив минимальное и максимальное размер шрифта.
Есть ли способ настроить минимальный и максимальный размер шрифта?

Изменить: Как упоминалось в этом FAQ они рекомендуют высоту текста «x» в нижнем регистре должно быть от 10 до 30 пикселей.
Я рассчитал высоту x для scale_factors, для 1 это 25 пикселей, для 2 - 50 пикселей, для 3 - 75 пикселей и так далее. в этом случае он показывает более точные результаты, когда x-height составляет 75 пикселей.

...