Tesseract无法读取某些数字

卡梅伦·琼斯(Cameron Jones)

我开始编写一个简单的脚本以从图像读取数据。这是我的使用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的形式返回(我可以解决)。但以下308一点都没有回来。现在我知道它已经知道如何读取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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章