Получение координат "текстового" ограничивающего прямоугольника изображения в градациях серого с помощью командной строки в linux

Только то, что говорит название.

Строго говоря, то, что я определяю как "текстовую" ограничивающую рамку для изображения в градациях серого, представляет собой набор из 4 координат (x, y, x + ширина, y + высота), которые должны определять прямоугольную область в этом изображении, которая имеет максимальное число небелые пиксели и в то же время наименьшее возможное количество белых пикселов (без изменения максимального количества небелых пикселей). У меня есть текст в кавычках, так как изображения на самом деле не содержат текста, потому что изображения содержат только пиксели с цветами.

Установив ImageMagick в мою Ubuntu и набрав в терминале команду: $convert input.png -trim ouput.png, Я получил:

input.png

output.png

Откройте два изображения на новых вкладках в своем веб-браузере, и вы поймете разницу между ними, и вы также поймете, что я определяю как "текстовую" ограничивающую рамку. На самом деле output.png имеет ширину и высоту, которые я ищу. Я не знаю, как получить координаты x и y.

Ответ, предоставленный здесь (1) для страниц PDF, не соответствует моим критериям, так как ограничивающее поле "текст", которое дает мне gs, имеет большие белые поля (и фактически, насколько я могу понять, что gs определяет как ограничивающее поле "текст" для PDF - это нечто отличное от моего определения "текстовой" рамки для рисунка).

2 ответа

Решение

Я не понимаю всех слов в вашем описании, и я думаю, что диаграмма поможет, но если вы просто хотите знать, что -trim будет делать, как предполагает ваш пример кода:

identify -format "%@" image.png
200x100+10+20

Итак, для вашего изображения вы получаете

identify -format "%@" paper.png
406x620+38+68

Это означает, что ваш блок находится на 38 пикселей справа от верхнего левого угла и на 68 пикселей ниже верхнего левого угла, а его ширина составляет 406 пикселей, а высота - 620 пикселей.

И если я нарисую этот прямоугольник красным, я получу:

convert paper.png -stroke red -fill none -draw "rectangle 38,68 444,688" result.png

Альтернативный способ получить тот же результат, но с использованием convert на месте identify является:

convert -format %@ paper.png info:
406x620+38+68

Изображения не имеют "текстовой рамки", потому что, очевидно, нет текста.

Изображения в файле PDF могут сами содержать белые пиксели, если они отсканированы из книг, то они почти наверняка будут. Эти пиксели засчитываются в ограничивающую рамку изображения, потому что они белые, не прозрачные и затеняют все, что нарисовано под ними.

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

Другие вопросы по тегам