Tesseract没有阅读某些数字

时间:2016-10-25 17:11:41

标签: ruby ocr tesseract minimagick

我开始编写一个简单的脚本来从图像中读取数据。这是我使用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

我从这张图片开始:

enter image description here

返回的结果是:132B 4

我知道0作为B回来了(我可以解决)。但是,以下308根本没有返回。现在我知道它已经知道如何读取3和0,因为它在第一个数字中完成了。我认为它有一些问题呈现以下数字,所以我把它变成黑白。

这是我试过的第二张图片:

enter image description here

然而,结果仍然显示为:132B 4

最后,我剪切了图像并尝试了最后的3个数字。

这是图片:

enter image description here

但是当我运行脚本时,它没有返回任何结果。关于为什么我无法阅读最终数字的任何想法?

我使用的是Ruby 2.2.2,rTesseract 2.1.0和MiniMagick 4.5.1。

我使用的是Tesseract 3.04.01

1 个答案:

答案 0 :(得分:2)

我在我的Linux Mint 17机器上使用tesseract 3.03测试了您的脚本 ,Ruby 2.1.5和MiniMagick 4.5.1

它还会返回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处使用颜色/阈值,将图像反转并保存为png:

enter image description here

Rtesseract返回:

1320 4 3 0 8

使用Image Magick,此命令可以获得相同的结果:

convert myImage.jpg -geometry x200 -threshold 13% -negate myImage.png