`

识别验证码

 
阅读更多

用imagemagick和tesseract-ocr破解简单验证码

 

 

Tesseract是Ray Smith 于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。

  该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供核心功能,没有界面。

 

  有兴趣参加该项目的同学,可以加入:http://groups.google.com/group/tesseract-dev/,或者与Smith联系。


下载工具:imagemagick + tesseract-ocr

 

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

准备工作:

1.安装tesseract-ocr

1 sudo apt-get install tesseract

2.安装imagemagick

1 sudo apt-get install imagemagick

3.安装rmagick

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

b4235ae9-bc2e-3d6c-8f28-af953d214667.jpg
先试一个简单的:

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

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

这个的验证码:q1.jpg

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"

这个还是简单,再复杂一点的,这个验证码:b81f5445-edbc-3cb2-8e6a-31ceb99a93a2.jpg

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

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%以上,扭曲太严重的识别率就很低了。有轻微噪点的就得自己写去噪算法了。。

 

 

破解图片验证码限制的一般思路:

http://www.williamlong.info/archives/347.html

 

分享到:
评论

相关推荐

    VB识别验证码源码 VB识别验证码源码 VB识别验证码源码

    在这个场景下,VB被用于编写源代码来识别验证码,这是一种挑战计算机自动识别的技术,通常涉及到图像处理、模式识别和机器学习。 VB识别验证码源码的核心在于以下几个关键知识点: 1. 图像处理:首先,VB源码需要...

    使用C#的aforge类库识别验证码实例

    【使用C#的AForge类库识别验证码实例】 在本文中,我们将探讨如何利用C#的AForge类库来识别验证码。AForge类库是一个功能强大的框架,它为开发者和研究者提供了丰富的工具,涵盖了计算机视觉、人工智能、图像处理、...

    c#源码自动识别验证码.rar

    本项目“c#源码自动识别验证码.rar”是一个基于Winform的应用程序,利用C#进行开发,旨在自动识别各种图片形式的验证码。 在验证码识别过程中,主要涉及以下几个关键技术点: 1. 图像预处理:验证码图像往往含有...

    c#识别验证码,识别验证码

    c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码

    OCRServer识别验证码.zip

    《OCRServer识别验证码技术详解与性能测试》 验证码(CAPTCHA)作为一种防止自动化程序非法操作的安全机制,在互联网中广泛使用。OCR(Optical Character Recognition,光学字符识别)技术则为解决验证码识别问题...

    146-Burp识别验证码暴破密码

    在 local 环境中,可以使用 Python 和 ddddocr 库来识别验证码。首先,需要安装 Python 和 ddddocr 库,然后使用 codereg.py 文件来启动验证码识别服务。接着,需要填写接口 URL 和请求模板,然后点击“识别”,即可...

    验证码识别-智能识别验证码.

    智能识别验证码通常涉及计算机视觉和机器学习技术。在C#中,我们可以利用AForge.NET或Emgu.CV等库来处理图像,进行预处理(例如灰度化、二值化、噪声去除)、特征提取(边缘检测、模板匹配)以及后续的字符分割和...

    Java使用OCR技术识别验证码实现自动化登陆方法

    在本篇文章里小编给大家分享的是关于Java 如何使用 OCR 技术识别验证码实现自动化登陆的相关知识点内容,需要的朋友们学习下。

    用按键精灵识别验证码(只是自己尝试实现网上的一些想法,结果不太理想)

    这篇博客文章的作者尝试使用按键精灵来识别验证码,虽然结果不尽如人意,但这一尝试揭示了验证码识别的基本思路和可能遇到的挑战。 验证码(CAPTCHA)是一种防止机器自动操作的安全机制,通常由一串随机字符或数字...

    Umi-OCR识别验证码

    【Umi-OCR识别验证码】是一种利用光学字符识别(OCR,Optical Character Recognition)技术来自动解析和识别图像中的验证码的技术。在网络安全和自动化测试领域,验证码识别是常见且重要的需求,例如登录验证、防...

    DELPHI本地识别验证码 易语言 OCR DLL

    在本主题中,“DELPHI本地识别验证码 易语言 OCR DLL”涉及到的是使用Delphi编程语言和易语言,通过OCR(Optical Character Recognition,光学字符识别)技术来识别这些验证码。DLL(Dynamic Link Library)是...

    ocr识别验证码工具

    本压缩包包含了一系列与OCR识别验证码相关的文件,包括图像文件、动态链接库(DLL)、源代码和执行程序,以下将对这些文件及相关的知识点进行详细介绍。 首先,我们看到有多个`.bmp`文件,如1.bmp、3.bmp和2.bmp。...

    获取验证码图片,不是识别验证码!

    获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是...

    jmeter-jmeter使用ocrserver工具自动识别验证码配置

    jmeter使用ocrserver工具自动识别验证码配置

    java识别验证码 仅限字母数字 附带bmp图片

    总的来说,Java识别验证码是一个涉及多领域知识的挑战,需要综合运用图像处理、模式识别和机器学习等技术。通过不断迭代优化,可以提高验证码识别的准确性和效率,从而在实际项目中实现高效的安全防护。

    识别验证码程序源代码

    在本案例中,提供的源代码包含了解析和识别验证码的算法,以及脚本化的运行机制,这使得用户能够直接运行并测试代码效果。以下是关于验证码识别程序的一些核心知识点: 1. **验证码的基本原理**:验证码是一种为了...

    Python 建立一个模型来识别验证码成功率

    在Python编程领域,识别验证码是一项常见的任务,尤其在自动化测试、数据抓取或者网络安全中扮演着重要角色。本文将深入探讨如何使用Python建立一个模型来识别验证码,提高成功率,并着重解决2.7版本中遇到的问题。 ...

    识别验证码思路一

    识别验证码的思路一主要关注的是图像识别技术,尤其是对于简单的验证码。这种技术通常包括以下几个步骤: 1. 图像预处理:首先,我们需要对验证码图片进行预处理,以便提高后续分析的准确性。这可能包括灰度化(将...

    tesseract-ocr和pytesseract识别验证码

    使用Tesseract和PyTesseract识别验证码的步骤通常包括以下几个部分: 1. **预处理**:验证码图像可能需要进行一些预处理操作,如灰度化、二值化、噪声去除等,以提高识别效果。这些步骤可以通过Python的OpenCV库来...

Global site tag (gtag.js) - Google Analytics