Распознавание ложного пространства Тессеракта (предустановки JavaCPP) - PullRequest
0 голосов
/ 04 июля 2018

Я работаю над программой для извлечения китайских субтитров из видео. На последнем этапе моей программы используется библиотека Пресеты JavaCPP для Tesseract для распознавания текста.

TessBaseAPI api = new TessBaseAPI();

// Initialize tesseract-ocr with Simplified Chinese
if (api.Init(pathToTessdata, "chi_sim") != 0) {
    System.err.println("Could not initialize tesseract.");
    System.exit(1);
}

// Open input image with leptonica library
PIX image = pixRead(pathToInputImage);
api.SetImage(image);

// Get OCR result
BytePointer outText = api.GetUTF8Text();
String result = outText.getString();

Распознавание персонажа работает довольно хорошо, но Тессеракт иногда добавляет пробелы, где на изображении нет места. Примите во внимание следующую картину:

Правильный вывод будет 这么快就到了, но Тессеракт отображает это как 这么快就到 了. Я полагаю, что это потому, что символ 了 - кроме верхней горизонтальной линии - состоит только из одной вертикальной линии с большим количеством пустого пространства слева.

Я нашел двух людей, которые уже сталкивались с той же проблемой при использовании Tesseract с C ++: Tesseract Распознавание ложных пробелов и Как удержать Tesseract от вставки лишних пробелов в словах? . Решения предложили изменить настройку для tosp_min_sane_kn_sp. Однако я не смог запустить его с Java.

Google тоже ничего не находит для javacpp tosp_min_sane_kn_sp. Я пытался api.SetVariable("tosp_min_sane_kn_sp", "2.8");, но безуспешно.

Я также пытался объявить, что мой шрифт моноширинный - как китайские иероглифы по определению моноширинный - но не мог понять, как это сделать. Кроме того, если в подзаголовке появилось несколько цифр, они не могут быть моноширинными.

Итак, мой вопрос: как изменить чувствительность Tesseract к пробелам с Java?

Кстати, простое удаление всех пробелов не вариант, так как некоторые субтитры содержат пробелы, например, между первым и вторым символом в этом тексте:

Если это помогает, пробелы обычно такие широкие, как на этом рисунке Любая помощь с благодарностью.

...