Удалить границу изображения чека с помощью ImageMagick

Я использую службу ImageMagick для предварительной обработки изображения квитанции перед использованием механизма tesseract-OCR для извлечения текстов. Мне нужно убрать фон чеков. Я использовал маскирование, чтобы удалить границу здесь. Но я не могу создать маску для чеков.

Тем не менее, я попытался удалить тени с изображений квитанций.

Исходное изображение (пример чека)

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

convert input.png -colorspace gray \
      \( +clone -blur 0x2 \) +swap -compose divide -composite \
      -linear-stretch 5%x0%   photocopy.png

После применения кода:

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

Я попробовал приведенный ниже код, чтобы сделать все цвета, кроме белого, черным, но, похоже, это не полностью затемняет фон photocopy.png.

convert receipt.jpg -fill black -fuzz 20% +opaque "#ffffff" black_border.jpg

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

Есть ли способ удалить границу изображения чека? Или создавать какие-либо маски из изображения? Примечание. Мне нужно удалить шум и границу для нескольких изображений с разным фоном.


person Sanjay Sharma    schedule 06.01.2015    source источник


Ответы (2)


Чтобы ответить на ваш вопрос

"Можно ли как-нибудь удалить границу изображения чека? Или создать какие-либо маски из изображения?"

Следующая команда (на основе вашего собственного кода) создаст изображение, которое вы можете использовать для получения размеров применимой маски:

convert                     \
   origscan.jpg             \
  -colorspace gray          \
   \( +clone 0 -blur 0x2 \) \
  +swap                     \
  -compose divide           \
  -composite                \
  -linear-stretch 5%x0%     \
  -threshold 5%             \
  -trim                     \
   mask-image.png

Вы можете использовать это изображение-маску для создания монохромной (черной) маски — одной командой:

convert                     \
   origscan.jpg             \
  -colorspace gray          \
   \( +clone 0 -blur 0x2 \) \
  +swap                     \
  -compose divide           \
  -composite                \
  -linear-stretch 5%x0%     \
  -threshold 5%             \
   \(                       \
      -clone 0              \
      -fill '#000000'       \
      -colorize 100         \
   \)                       \
  -delete 0                 \
   black-mask.png

Вот результаты двух вышеуказанных команд, бок о бок:

Вы можете использовать identify, чтобы получить геометрию mask-image.png, а также black-mask.png:

identify -format "%g\n" *mask*.png
  2322x4128+366+144
  2322x4128+366+144

Таким образом, холсты изображений имеют ширину 2322 пикселя и высоту 4128 пикселей. Видимые части обоих изображений, конечно, меньше, после нашей операции -trim. (Часть +366+144 указывает смещение по горизонтали/вертикали от верхнего левого угла исходного изображения.)


Дополнительный комментарий: Сказав все это, вам действительно стоит подумать о создании лучших фотографий из ваших чеков! (Если у вас есть камера, которая может создавать изображения высотой 4128 пикселей, это не должно быть проблемой. Если вам нужно обработать так много квитанций, как вы говорите, возможно, стоит приобрести небольшое стекло для обработки, которое вы можете положите поверх бумаги, чтобы во время фотографирования она распрямлялась...)

person Kurt Pfeifle    schedule 06.01.2015
comment
Пробовал ваш код с другими изображениями, но -trim не работает для изображений с более темным фоном. Я попытался изменить пороговые значения, но для разных изображений требуются разные пороговые значения. Не могли бы вы предложить какие-либо другие способы удаления границы. Недавно я нашел SWT «Преобразование ширины штриха» для идентификации текстов в естественных изображениях. Можно ли это сделать через imagemagic, чтобы как-то найти текстовую область и удалить другие части? Заранее спасибо. - person Sanjay Sharma; 08.01.2015

Если вы используете ImageMagick в Unix-подобной системе, вы можете попробовать мой скрипт очистки текста.

textcleaner -f 20 -o 10 -e normalize UhSV6.jpg result.jpg

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

person fmw42    schedule 03.08.2017