我试图获得一些自动文本识别的经验,并且我使用 tesseract 包在某些图像上执行 ocr (即一些我拍的截图。
为了提高我的程序在下图中识别价格的性能,我使用 magick包通过增加对图像进行了一些预处理通过改变亮度和饱和度参数来对比图像。
但是,我认为通过转换为黑白图像可以进一步提升效果。
如何在 R 中有效实现这一目标?
答案 0 :(得分:4)
您可以使用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。
答案 1 :(得分:3)
在ImageMagick命令行中,您可以按百分比阈值进行阈值处理。我在这里使用了50%,但是根据需要进行调整。
convert image.png -threshold 50% result.png
在Imagick中,命令是Imagick :: thresholdImage。见http://php.net/manual/en/imagick.thresholdimage.php。对不起,我不知道哪个&#34; Magick&#34;你正在使用的包裹。