【发布时间】:2017-03-07 20:23:32
【问题描述】:
我开始编写一个简单的脚本来从图像中读取数据。这是我使用 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
【问题讨论】:
-
将图像转换为白底黑字并删除图像压缩伪影,这是 @eric-dumiil 的建议。有趣的是,对于一个一致且已知的字体,我自己对每个字符进行简单的像素差异匹配就有了更好的准确性。
-
@Kache:听起来很有趣。有链接吗?
-
@EricDuminil 啊,我没有链接。这是一种非常幼稚的方法: 1. 将文本修改并剪切成标准化的黑白字符 2. 数据挖掘所有可能的字符图像和字体可能出现的变化 3. 选择像素与像素差异最小的字符, 使用一些技巧不需要计算每个字符的每个像素(例如字符像素高度/宽度,黑色/白色像素数等)
标签: ruby ocr tesseract minimagick