`
杯具的茶几
  • 浏览: 3120 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Mac下ruby+RTesseract获取图片验证码

 
阅读更多

  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 自动化测试工具介绍+安装说明

    Ruby和Watir(Web Application Testing in Ruby)是一个强大的自动化测试框架,主要用于Web应用程序的测试。Ruby是一种面向对象的、动态的编程语言,以其简洁、优雅的语法和强大的元编程能力而受到开发者的喜爱。...

    RUBY+1.8 windows UI

    在使用Ruby 1.8进行开发时,开发者可以利用MRI(Matz's Ruby Interpreter)作为默认解释器,也可以选择JRuby(基于Java平台的实现)或Rubinius(使用LLVM作为后端的实现)来获取不同的性能特性。Ruby 1.8版本虽然已...

    ruby安装包-rubyinstaller-devkit-3.0.2-1-x64.zip

    Ruby是一种面向对象、动态类型的脚本语言,由Yukihiro "Matz" Matsumoto于1995年创建。它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、脚本自动化、服务器管理等领域。RubyInstaller是Windows...

    ruby+selenium-webdriver测试--第一个例子源代码

    Ruby+Selenium-Webdriver是一个强大的自动化测试工具组合,用于模拟真实用户在浏览器中与网页进行交互。Ruby是一种动态、面向对象的编程语言,而Selenium WebDriver是一个开源的自动化测试框架,支持多种浏览器和...

    rtesseract, 用于超立方体识别的ruby 库.zip

    rtesseract, 用于超立方体识别的ruby 库 rtesseract 用于超立方体识别的ruby 库。要求:要正常工作,需要使用 rtesseract:超正方体- 程序ImageMagick - 程序RMagick或者 mini_magick -

    ruby+watir自动论坛发帖

    ruby+watir技术实现的论坛发帖机器人,不完善。

    Ruby+for+Rails

    **Ruby for Rails** Ruby是一种面向对象的动态编程语言,它以其简洁、优雅的语法和强大的元编程能力而闻名。在Web开发领域,Ruby与Rails框架的结合,即Ruby on Rails(RoR),开创了Web应用的新纪元。Ruby on Rails...

    rubyonrails+Ruby+取得指定月日期数方法

    本文将介绍如何在 Ruby 环境下,结合 Ruby on Rails,获取指定月份的所有日期数。 首先,我们需要知道 Ruby 语言中处理日期的库是 `Date` 类,该类属于 Ruby 的标准库,不需要额外安装。在 Ruby on Rails 中,可以...

    ruby+watir 测试框架

    Ruby 和 Watir 是一个强大的自动化测试组合,尤其适用于Web应用程序的测试。Ruby 是一种动态、面向对象的编程语言,以其简洁、优雅的语法和强大的元编程能力而受到开发者喜爱。Watir,全称Web Application Testing ...

    ruby+ruvygems+redis.gem.rar

    标题 "ruby+ruvygems+redis.gem.rar" 涉及到的是一份压缩包,其中包含了构建和操作Redis集群环境所需的Ruby编程语言、RubyGems包管理和Redis数据库的相关组件。以下是关于这三个核心概念的详细说明: 1. **Ruby**:...

    基于Ruby + SmartQQ(WebQQ)的QQ机器人.zip

    基于Ruby + SmartQQ(WebQQ)的QQ机器人.zip Api 列表 [x] 登录 [x] 拉取消息 [x] 获取群列表 [x] 获取好友列表 [x] 获取讨论组列表 [x] 发送私聊消息 [x] 发送群消息 [x] 发送讨论组消息 [x] 发送临时消息 [x] 好友...

    ruby + watri 自动化部署集成Eclipse 全量安装包

    ruby + watri 自动化部署集成Eclipse 全量安装包 (包括:watir-1.5.4、ruby186-26、WatirRecorder_Setup_lite、dltk-core-ruby、dotnetfx、rubygems-1.3.7、安装说明)

    ruby+voodoo

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法著称。Voodoo,通常指的是在软件工程中用于实现特定目的的工具或框架,可能是为了自动化某些过程或者实现某种特殊的编程模式。在这个场景中,“ruby...

    Ruby+on+Rails实践

    Ruby on Rails,简称RoR,是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发,提高开发效率,并且强调“约定优于配置”的原则。RoR的出现极大地推动了...

    redis+ruby+redis.gem.rar

    在本RAR包中,我们有三个关键文件:`redis-3.0.0.gem`、`ruby-2.4.3.tar.gz`和`redis-3.0.7.tar.gz`,它们分别对应于Redis的Ruby接口、Ruby编程语言的一个版本以及Redis服务器本身的一个特定版本。 首先,让我们...

    ruby+watir安装包,安装步骤

    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_...

    rubyinstaller-devkit-3.0.0-1-x64.exe

    安装完成后,开发者就可以在Windows环境下使用Ruby和其丰富的生态系统,进行编程、测试和部署工作。 在实际开发中,Ruby和DevKit的组合还涉及到以下几个关键知识点: 1. **版本管理**:RubyInstaller支持多个版本...

    Ruby+watir自动化测试中实现识别验证码图片

    前几天做了一个loadrunner结合tesseract-ocr来识别验证码,尽管识别精度不是太高,甚至有些验证码图片不能被识别,但是使用循环的方法也是可以得到正确的验证码的。性能测试中不建议使用这个方法,因为涉及到大并发...

Global site tag (gtag.js) - Google Analytics