Cam*_*nes 5 ruby ocr tesseract minimagick
我开始编写一个简单的脚本来从图像中读取数据。这是我的 Ruby 代码,它使用 RTesseract 来读取它:
require 'rtesseract'
require 'mini_magick'
RTesseract.configure do |config|
config.processor = "mini_magick"
end
image = RTesseract.new("myImage.jpg")
puts image.to_s
Run Code Online (Sandbox Code Playgroud)
我从这张图片开始:
返回的结果是: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
我在我的 Linux Mint 17 机器上测试了你的脚本,使用 tesseract 3.03 、 Ruby 2.1.5 和 MiniMagick 4.5.1
它也返回132B 4。
如果您确定数字已编码,您可以尝试:
image = RTesseract.new("myImage.jpg", options: :digits)
Run Code Online (Sandbox Code Playgroud)
它返回13223 4。
启动不带参数的 tesseract 会为您提供可能选项的列表。“pagesegmode 7”看起来很有趣:7 = Treat the image as a single text line.
所以 :
image = RTesseract.new("myImage.jpg", options: :digits, psm: 7)
Run Code Online (Sandbox Code Playgroud)
它返回13223 4 3 21 8。
对于您的第二张图像,它会返回3 21 8.
我认为现在最大的问题是 JPG 伪像非常强烈,并且数字和背景之间的对比度相对较低。PNG 图像可能会产生更好的结果。
使用 gimp,我将图像大小调整为 200px 高度,裁剪接近数字以删除一些伪影,使用颜色/阈值 150,反转图像并保存为 png :
Rtesseract 返回:
1320 4 3 0 8
Run Code Online (Sandbox Code Playgroud)
使用 Image Magick,此命令达到了相同的结果:
convert myImage.jpg -geometry x200 -threshold 13% -negate myImage.png
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1721 次 |
| 最近记录: |