Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。
该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供核心功能,没有界面。
RTesseract是Tesseract的ruby封装调用,其内部原理是先用mini_magick将图片转换为tif格式,再执行命令行调用Tesseract软件返回最终解析的字符串。
一、安装ImageMagick
sudo brew install imagemagick
二、安装Leptionica
下载地址:http://www.leptonica.org/download.html tar zxvf leptonica-1.69.tar.gz cd leptonica-1.69 ./configure make sudo make install
三、安装tesseract-ocr
下载地址:http://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-3.01.tar.gz tar zxvf tesseract-3.01.tar.gz cd tesseract-3.01 ./autogen.sh ./configure make sudo make install
四、安装MiniMagick
gem install mini_magick
五、调用
# -*- encoding: utf-8 -*- require 'rtesseract' require 'mini_magick' def parse_price(price_url) img = MiniMagick::Image.open(price_url) img.resize '200x100' # 放大 img.colorspace("GRAY") # 灰度化 img.monochrome # 去色 str = RTesseract.new(img.path).to_s # 识别 File.unlink(img.path) # 删除临时文件 if str.nil? puts price_url else price = str.strip.sub(/Y/,'').to_f end end 调用: parse_price('http://jprice.360buyimg.com/price/gp723049-1-1-1.png') # => 169999.0
六、遇到的困难
1、识别的时候可能报异常:
RTesseract::ConversionError: RTesseract::ConversionError
追查到RTesseract插件内部发现里面抛出异常的位置,作者没把实际错误返回回来真可悲!
#Convert image to string def convert generate_uid tmp_file = Pathname.new(Dir::tmpdir).join("#{@uid}_#{@source.basename}") tmp_image = image_to_tiff #这里生成了命令行命令,格式类似:tesseract xxx.tif xxx.jpg `#{@command} "#{tmp_image}" "#{tmp_file.to_s}" #{lang} #{psm} #{config_file} #{clear_console_output}` @value = File.read("#{tmp_file.to_s}.txt").to_s @uid = nil remove_file([tmp_image,"#{tmp_file.to_s}.txt"]) #这里截获了所有异常! rescue raise RTesseract::ConversionError end
2、结果不准
可以适当调整图片的尺寸和灰度值
相关推荐
Ruby和Watir(Web Application Testing in Ruby)是一个强大的自动化测试框架,主要用于Web应用程序的测试。Ruby是一种面向对象的、动态的编程语言,以其简洁、优雅的语法和强大的元编程能力而受到开发者的喜爱。...
在使用Ruby 1.8进行开发时,开发者可以利用MRI(Matz's Ruby Interpreter)作为默认解释器,也可以选择JRuby(基于Java平台的实现)或Rubinius(使用LLVM作为后端的实现)来获取不同的性能特性。Ruby 1.8版本虽然已...
Ruby是一种面向对象、动态类型的脚本语言,由Yukihiro "Matz" Matsumoto于1995年创建。它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、脚本自动化、服务器管理等领域。RubyInstaller是Windows...
Ruby+Selenium-Webdriver是一个强大的自动化测试工具组合,用于模拟真实用户在浏览器中与网页进行交互。Ruby是一种动态、面向对象的编程语言,而Selenium WebDriver是一个开源的自动化测试框架,支持多种浏览器和...
rtesseract, 用于超立方体识别的ruby 库 rtesseract 用于超立方体识别的ruby 库。要求:要正常工作,需要使用 rtesseract:超正方体- 程序ImageMagick - 程序RMagick或者 mini_magick -
ruby+watir技术实现的论坛发帖机器人,不完善。
**Ruby for Rails** Ruby是一种面向对象的动态编程语言,它以其简洁、优雅的语法和强大的元编程能力而闻名。在Web开发领域,Ruby与Rails框架的结合,即Ruby on Rails(RoR),开创了Web应用的新纪元。Ruby on Rails...
本文将介绍如何在 Ruby 环境下,结合 Ruby on Rails,获取指定月份的所有日期数。 首先,我们需要知道 Ruby 语言中处理日期的库是 `Date` 类,该类属于 Ruby 的标准库,不需要额外安装。在 Ruby on Rails 中,可以...
Ruby 和 Watir 是一个强大的自动化测试组合,尤其适用于Web应用程序的测试。Ruby 是一种动态、面向对象的编程语言,以其简洁、优雅的语法和强大的元编程能力而受到开发者喜爱。Watir,全称Web Application Testing ...
标题 "ruby+ruvygems+redis.gem.rar" 涉及到的是一份压缩包,其中包含了构建和操作Redis集群环境所需的Ruby编程语言、RubyGems包管理和Redis数据库的相关组件。以下是关于这三个核心概念的详细说明: 1. **Ruby**:...
基于Ruby + SmartQQ(WebQQ)的QQ机器人.zip Api 列表 [x] 登录 [x] 拉取消息 [x] 获取群列表 [x] 获取好友列表 [x] 获取讨论组列表 [x] 发送私聊消息 [x] 发送群消息 [x] 发送讨论组消息 [x] 发送临时消息 [x] 好友...
ruby + watri 自动化部署集成Eclipse 全量安装包 (包括:watir-1.5.4、ruby186-26、WatirRecorder_Setup_lite、dltk-core-ruby、dotnetfx、rubygems-1.3.7、安装说明)
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法著称。Voodoo,通常指的是在软件工程中用于实现特定目的的工具或框架,可能是为了自动化某些过程或者实现某种特殊的编程模式。在这个场景中,“ruby...
Ruby on Rails,简称RoR,是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发,提高开发效率,并且强调“约定优于配置”的原则。RoR的出现极大地推动了...
在本RAR包中,我们有三个关键文件:`redis-3.0.0.gem`、`ruby-2.4.3.tar.gz`和`redis-3.0.7.tar.gz`,它们分别对应于Redis的Ruby接口、Ruby编程语言的一个版本以及Redis服务器本身的一个特定版本。 首先,让我们...
1.默认路径安装ruby186-26.exe 2.本地安装watir-1.4.1.gem,执行gem install watir-1.4.1.gem -l 3.本地安装rubygems-update-1.3.4.gem,执行 gem install rubygems-update-1.3.4.gem 4.更新rubygems,执行update_...
安装完成后,开发者就可以在Windows环境下使用Ruby和其丰富的生态系统,进行编程、测试和部署工作。 在实际开发中,Ruby和DevKit的组合还涉及到以下几个关键知识点: 1. **版本管理**:RubyInstaller支持多个版本...
前几天做了一个loadrunner结合tesseract-ocr来识别验证码,尽管识别精度不是太高,甚至有些验证码图片不能被识别,但是使用循环的方法也是可以得到正确的验证码的。性能测试中不建议使用这个方法,因为涉及到大并发...