在R中将图像转换为黑白图像识别

Fra*_*ont 7 tesseract r image-processing contrast text-recognition

我正在尝试获得一些自动文本识别的经验,我正在使用包tesseract在某些图像上执行ocr(即我拍摄的一些截图).

为了提高我的程序识别下图中价格的性能,我使用magick软件包对图像进行了一些预处理,方法是通过改变亮度和饱和度参数来增加图像的对比度.

但是,我认为通过转换为黑白图像可以进一步提高性能.

如何在R中有效地实现这一目标?

原始图像 原始图像

经过预处理 我的预售后的形象

ali*_*ire 6

您可以使用以下方法转换色彩空间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
Run Code Online (Sandbox Code Playgroud)

i %>% image_quantize(colorspace = 'gray')
Run Code Online (Sandbox Code Playgroud)

根据您所需的图像结构,您还可以使用以下image_convert方法执行相同的操作:

i %>% image_convert(colorspace = 'gray')
# or
i %>% image_convert(type = 'Grayscale')
Run Code Online (Sandbox Code Playgroud)

或转换为真正的黑白(非灰度),

i %>% image_convert(type = 'Bilevel')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它返回一个带有椒盐噪声的图像,这可能有用也可能没有用。

但是请注意,虽然这对于 OCR 来说可能是一种很好的做法,但通过网络抓取来获取这些数据会简单得多,例如,如果允许的话,使用rvest(大概同样的问题适用于抓取这些图像)。更好的是,如果它包含您需要的信息,是使用适当的RyanAir API


fmw*_*w42 5

在 ImageMagick 命令行中,您可以简单地将阈值设置为某个百分比。我在这里使用了 50%,但可以根据需要进行调整。

convert image.png -threshold 50% result.png
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在 Imagick 中,命令是 Imagick::thresholdImage。请参阅http://php.net/manual/en/imagick.thresholdimage.php。抱歉,我不知道您使用的是哪个“Magick”软件包。