Я использую Tess4J для распознавания текста. Он работает нормально, за исключением выделенного текста.
Простой код, подобный следующему:
ITesseract instance = new Tesseract();
BufferedImage ocrImage = loadImage();
String screenText = instance.doOCR(ocrImage);
На этом изображении ожидаемый выходной текст - "4/5",но он возвращает «a3».
Я попытался изменить изображение на оттенки серого , но безуспешно.
Я видел в этом ответе , чтозаполнение фона или использование «скелетонизации» может помочь.
Я не нашел никакой реализации для скелетонизации с использованием Java, также в документации сказано, что эти методы еще ненадежны, поэтому я отказался от этой опции.
Для теста я заполнил фон вручную, чтобы изображение выглядело вот так , и это сработало! Но я не знаю, как нарисовать это программно. Thresholding не работает, потому что контур темнее, чем цифры.
Есть предложения о том, как автоматически обнаруживать и рисовать фон? Или какая-то другая стратегия для этого?