我开始编写一个简单的脚本以从图像读取数据。这是我的使用RTesseract读取的Ruby代码:
require 'rtesseract'
require 'mini_magick'
RTesseract.configure do |config|
config.processor = "mini_magick"
end
image = RTesseract.new("myImage.jpg")
puts image.to_s
我从这张图片开始:
返回的结果是:132B 4
。
我知道0以B的形式返回(我可以解决)。但以下3
,0
,8
一点都没有回来。现在我知道它已经知道如何读取3和0,因为它是在第一个数字中读取的。我认为在呈现以下数字时会遇到一些问题,因此我将其设为黑色和白色。
这是我尝试过的第二张图片:
但是结果仍然返回为:132B 4
。
最后,我剪切了图像,并尝试了最后的3个数字。
这是图像:
但是,当我运行脚本时,它没有返回任何结果。关于为什么我无法阅读最终号码有任何想法吗?
我正在使用Ruby 2.2.2,rTesseract 2.1.0和MiniMagick 4.5.1。
我正在使用Tesseract 3.04.01
我在带有tesseract 3.03,Ruby 2.1.5和MiniMagick 4.5.1的Linux Mint 17机器上测试了您的脚本
它还返回132B 4
。
如果您确定数字已编码,则可以尝试:
image = RTesseract.new("myImage.jpg", options: :digits)
它返回13223 4
。
不带参数启动tesseract会为您提供可能的选项列表。“ pagesegmode 7”看起来很有趣:7 = Treat the image as a single text line.
因此:
image = RTesseract.new("myImage.jpg", options: :digits, psm: 7)
它返回13223 4 3 21 8
。
随着第二张图片,它返回3 21 8
。
我认为现在最大的问题是JPG伪像很强并且数字和背景之间的对比度相对较低。PNG图像可能会产生更好的结果。
使用gimp,我将图像调整为200px的高度,裁剪到接近数字的位置以去除一些伪像,在150处使用了Colors / Threshold,将图像反转并保存为png:
Rtesseract返回:
1320 4 3 0 8
使用Image Magick,此命令获得了相同的结果:
convert myImage.jpg -geometry x200 -threshold 13% -negate myImage.png
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句