imagemagick tesseract-ocr破解简单验证码


Tesseract-ocr据说辨识程度是世界排名第三,可谓神器啊。

准备工作:

1.安装tesseract-ocr

Java代码   收藏代码
  1. sudo apt-get install tesseract  

2.安装imagemagick

Java代码   收藏代码
  1. sudo apt-get install imagemagick  

3.安装rmagick

Java代码   收藏代码
  1. sudo apt-get remove --purge librmagick-ruby-doc librmagick-ruby1.8  
  2. sudo apt-get install libmagick9-dev ruby1.8-dev  
  3. sudo gem install rmagick  

先试一个简单的:

Ruby代码   收藏代码
  1. require 'rubygems'  
  2. require 'rtesseract'  
  3. img = RTesseract.new("tmp/test.jpg")  
  4. img.to_s.sub(/\s+$/, ""# => "3R8Z"   

很成功,但这个太简单了。一般破解复杂点的验证码处理步骤是先用imagemagick灰度化,灰度反转,提高对比度,二值化等。然后再用ocr去识别。ocr识别黑白图片效果比较好些。

这个是人民网的验证码:

Ruby代码   收藏代码
  1. img = MiniMagick::Image.new("tmp/people.jpg")   
  2. img.colorspace("GRAY")#灰度化  
  3. image = RTesseract.new(img.path)  
  4. image.to_s.sub(/\s+$/, ""# => "254369"   

 这个还是简单,再复杂一点的,这个是4399.com的验证码:

有黑色边框,有背景色,文字稍微扭曲。

 

Ruby代码   收藏代码
  1. img = MiniMagick::Image.new("tmp/4399.jpg")  
  2. img.crop("#{img[:width] - 2}x#{img[:height] - 2}+1+1") #去掉边框(上下左右各1像素)  
  3. img.colorspace("GRAY"#灰度化  
  4. img.monochrome #二值化  
  5. image = RTesseract.new(img.path) #ocr识别  
  6. image.to_s.sub(/\s+$/, ""#=> "5692"   

 

像上面这样简单的识别率几乎能达到80%以上,扭曲太严重的识别率就很低了。有轻微噪点的就得自己写去噪算法了。。

 

还有一些验证码看起来很变态但是是纸老虎。像当当的。刷新了几次发现结果在1-20之间,选中一个数暴力破解每次也有1/20正确的概率。

还有139的:。答案就12种1-4A-Da-d。而且不区分大小写。选中一个字母每次有1/6的概率命中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值