Java: преобразование цветного изображения в монохромное и сохранение читабельности текста

Я работаю над проектом, в котором планирую использовать tesseract OCR извлечь текст из данного изображения. Когда я предоставляю монохромные изображения, то у Тессеракта не возникает особых проблем.

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

Изображение преобразуется в монохромный, но текст каким-то образом запутывается (не могу придумать подходящего слова). Даже я не смог прочитать текст правильно, как я могу ожидать, что программа?

Итак, основная проблема, с которой я сталкиваюсь, заключается в том, как я могу преобразовать цветное изображение в монохромное на Java, где текст не прикручен (снова).

Наш проект работает на сервере Linux, поэтому, если есть какие-либо скрипты или какие-либо другие программы, которые я могу вызвать из Java и получить результат, тоже нормально. Но я бы предпочел в Java.

Вот код, который у меня есть:

 @Override
    public void testOcr() {
        ITesseract instance = new Tesseract();
        File imageFile = new File("/home/username/other.jpg");
BufferedImage img = null;
            img = ImageIO.read(imageFile);

            BufferedImage blackNWhite = new BufferedImage(img.getWidth(),img.getHeight(),BufferedImage.TYPE_BYTE_BINARY);
            Graphics2D graphics = blackNWhite.createGraphics();
            graphics.drawImage(img, 0, 0, null);
            File outputfile = new File("/home/username/other1.jpg");
            ImageIO.write(blackNWhite, "jpg", outputfile);
   instance.setDatapath("/usr/share/tesseract-ocr/");
            // ISO 693-3 standard
            instance.setLanguage("deu");
            String result = instance.doOCR(outputfile);
            System.out.println(result);
}

Оба изображения:

введите описание изображения здесь

Преобразованное изображение:

введите описание изображения здесь

Вот что я получил от Тессеракта выше:

90/(/a —’Ä(l/énÄ ' ß(l(1(»m]«u
„„ „‚„„„ „ „„ „„ „‚„„„ „„ n 00 w—v „„„ s 3 na
‘„‘‚';‚ J‘;;Mt:.‘ *‘ “ ‘„*;;131:„'r„‘:1 „ . A „„ „„ _ «3 uu
„„ „.„„„\ „„ „„ uu „„„„\„..\ ; 5 oo “ ‘ " "' ‘* ‘=* —“ "°
„...„.„„. „‘ ‘„‘ „„ „„-„..„‚„„‚» <b(m
„..„„„„.‘ \ „„-„‚„„„„„k („m
„„„\„„„„ muu ‚„„„„„‚ s»’ou
m M 6«»//%
' ‚ , \ ‚“ _ „„ sKUD
:> 3 — „».>' ' z«„„«.„«„„„ <3(m
' ‘)\‚ia "‚ “ l’ ‚„„„.„„\_ „rm
.„.‚\ ‚ . \. .
‘. ‚„.‚.A _ \ „ „ "*°‘Ä‘ „„w„„m„»v.. mm
; ‚ \ :« ‘ 4 ‚ _.
»"9 » @ We have Spema\smr
' Lunch & D\nner ew3rydav
' ßm/n'/ ‚0(*JJP1/'
V\S\\ Cur '<’e3\au\an\ ’
?“"‘:‘“1“1C1„ 55"" ::‘‚:J:'.J‘.‘t‘:‘;1f:.1?t„ ““ Fur6'2a:'z:‘e '
..„„.‘„‚„.„„‘„..„ ‘ s7uu x.„„.„„..„.‘<h„.„„„ ;7uu Eng\gnCp -
5::r‘Ja‘.‘7r“x:1f‘."‘3:l'_„„ ““ ‘°°° @ us ‘
„.„..„‚„ „„„‚„‚ „ uu m.„„„< „„„„ sB 00 \23‚g5f„ 78% .L
—

Итак, любые предложения о том, как импровизировать чтение цветных изображений. Спасибо.

1 ответ

Вы можете использовать OpenCV для бинаризации. Но; teserract все еще нуждается в изменении размера, если вы хотите получить правильный результат для этого примера.

Этот порядок должен работать нормально.

  1. Дополнительные операции обработки изображения (удаление шума, перекос, нерезкость, обрезка, граница)
  2. Изменить размер изображения
  3. Бинаризировать изображение
  4. OCR
Другие вопросы по тегам