Gem 利用 OCR 解析,京东商品价格

mimosa · 2012年10月16日 · 最后由 hz_qiuyuanxin 回复于 2013年08月01日 · 7738 次阅读
本帖已被管理员设置为精华贴
# -*- 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

OCR……破验证码利器啊咩哈哈哈

OCR 的 lib,很不错啊。

#1 楼 @southwolf 这个只能破解简单的验证码,复杂的验证码需要自己去色之类的 京东商品价格是因为不能加入太多干扰,怕影响到用户正常查看价格

RTesseract::ConversionError: RTesseract::ConversionError

咦...原来都是这么搞的 :D

抓京东的价格其实不需要 OCR 的,有个接口可用。

京东会把价格放在源文件中,很早以前 est 的一篇文章就提到了。原文找不到了,可以看这个转载 http://zhendi.42qu.com/po/blog/10495594

现在页面变了,但是进入京东商品页面,查看源代码还会看到商品标题价格等信息都是写在一起的。。。。。

#8 楼 @zhangyuan 我只读列表页,不去宝贝页~~

不错~

#5 楼 @suxu 没有安装 tesseract 吧

不错不错..学习下

这里也有一篇

可是我遇到的问题,跟 @suxu 一样:

ruby-2.0.0-p195/gems/rtesseract-0.0.13/lib/rtesseract.rb:150:in `rescue in convert': RTesseract::ConversionError (RTesseract::ConversionError)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号