Преобразование изображений в черно-белые для распознавания изображений в R

Я пытаюсь получить некоторый опыт работы с автоматическим распознаванием текста и использую пакет tesseract для выполнения ocr на некоторых изображениях (например, на некоторых скриншотах, которые я сделал).

Чтобы повысить производительность распознавания цен на изображении ниже, я выполнил некоторую предварительную обработку изображения с помощью пакета magick, увеличив контрастность изображения, изменив параметры яркости и насыщенности.

Однако я думаю, что производительность можно было бы еще больше повысить, преобразовав изображение в черно-белое.

Как этого можно добиться в R?

Исходное изображение исходное изображение

После предварительной обработки изображение после моей предварительной обработки


person Francesco Dal Pont    schedule 31.01.2018    source источник


Ответы (2)


Вы можете преобразовать цветовое пространство с помощью magick::image_quantize:

library(magick)
#> Linking to ImageMagick 6.9.9.25
#> Enabled features: cairo, fontconfig, freetype, fftw, lcms, pango, rsvg, webp
#> Disabled features: ghostscript, x11

i <- image_read('https://i.stack.imgur.com/nn9k0.png')

i

i %>% image_quantize(colorspace = 'gray')

В зависимости от желаемой структуры изображения вы также можете использовать image_convert, чтобы сделать то же самое:

i %>% image_convert(colorspace = 'gray')
# or
i %>% image_convert(type = 'Grayscale')

или преобразовать в настоящий черно-белый (не в оттенках серого),

i %>% image_convert(type = 'Bilevel')

который в этом случае возвращает изображение с шумом соли и перца, который может быть или не быть полезным.

Обратите внимание, однако, что, хотя это может быть хорошей практикой для OCR, было бы намного проще получить эти данные с помощью веб-скрейпинга, например. с rvest, если это разрешено (предположительно, те же проблемы относятся к захвату этих изображений). Лучше, если он будет содержать нужную вам информацию, использовать соответствующий RyanAir API.

person alistaire    schedule 31.01.2018

В командной строке ImageMagick вы можете просто установить порог в несколько процентов. Я использовал здесь 50%, но отрегулируйте по желанию.

convert image.png -threshold 50% result.png

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

В Imagick это команда Imagick::thresholdImage. См. http://php.net/manual/en/imagick.thresholdimage.php. Извините, я не знаю, какой пакет "Magick" вы используете.

person fmw42    schedule 31.01.2018