Делаем текст более читабельным Imagemagick

У меня есть это изображение здесь: http://imgur.com/QFSimZX

Что, глядя на него, человек может увидеть, что в верхней строке написано СОСНА (N), а во второй строке - PI. У меня проблема в том, что при использовании tesseract-ocr для чтения того, что говорится в тексте, у него довольно плохие результаты. У меня много таких изображений, и мне нужно автоматизировать этот процесс, поэтому делать это вручную — не идея. Я использовал imagemagick, чтобы получить его в текущем состоянии, но хотел бы знать, есть ли способ сделать это изображение более читаемым, возможно, соединив близкие области черного цвета. Я почти ничего не знаю об обработке изображений, поэтому не знаю, с чего начать поиск. Если кто-нибудь знает способ сделать это более читабельным, я был бы очень признателен.


person hetoan2    schedule 10.06.2013    source источник


Ответы (1)


Это довольно сложная проблема, и решение, которое работает лучше всего, будет зависеть от характеристик изображения — какой масштаб у шрифта? насколько ухудшилось изображение? Граница между деталями, которые вы хотите сохранить, и деградацией, которую вы хотите исправить, может определить только человек-оператор, поэтому для этой проблемы не существует автоматизированного универсального решения, и вы должны ожидать, что сделаете некоторые действия. эксперименты.

Основная техника заключается в том, что вы хотите настроить значение каждого пикселя в изображении так, чтобы оно было похоже на пиксели, которые его окружают. В этих терминах вы можете понять, что это просто операция размытия. Однако после того, как вы размоете изображение, у вас останутся буквы с нечеткими краями, поэтому, чтобы снова получить четкие буквы, это пороговая операция — вы устанавливаете пороговый уровень серого, и все, что светлее этого оттенка серого, становится белым, а все, что темнее, чем порог становится черным. Комбинация размытия и порогового значения дает вам широкий спектр эффектов, которые вы можете использовать, чтобы сделать текст более (или менее) разборчивым. Для данного примера изображения у меня были довольно хорошие результаты с радиусом размытия 5 и пороговым уровнем 70%.

convert QFSimZX.jpg -blur 5 -threshold 70% output.png

размытие и порог

При необходимости вы можете усложнить это, реализовав пользовательскую функцию размытия с оператором -fx. Fx мощный, но несколько сложный, и вы можете прочитать об этом здесь: http://www.imagemagick.org/script/fx.php . Я попробовал быстрое выражение fx, которое заполнило пиксель, основываясь сначала на его соседях сверху и снизу, а затем на его соседях слева и справа. Этот метод действительно позволяет вам точно настроить, какие пиксели учитываются при вычислении размытия:

convert QFSimZX.jpg -monochrome \
    -fx 'p[0,-1]+p[0,1] >= 2 ? 1 : 0' \
    -fx 'p[-1,0]+p[1,0] >= 2 ? 1 : 0' \
    output.png

метод fx

person retroj    schedule 14.03.2014
comment
Этот ответ устарел, так как у Imagemagick теперь есть лучший инструмент для этого, называемый морфологией. - person retroj; 07.08.2017