用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
|
先试一个简单的:
1 |
require 'rubygems'
|
2 |
require 'rtesseract'
|
3 |
img = RTesseract. new ( "tmp/test.jpg" )
|
4 |
img.to_s.sub(/\s+$/, "" ) # => "3R8Z"
|
很成功,但这个太简单了。一般破解复杂点的验证码处理步骤是先用imagemagick灰度化,灰度反转,提高对比度,二值化等。然后再用ocr去识别。ocr识别黑白图片效果比较好些。
这个的验证码:
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"
|
这个还是简单,再复杂一点的,这个验证码:
有黑色边框,有背景色,文字稍微扭曲。
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识别验证码源码的核心在于以下几个关键知识点: 1. 图像处理:首先,VB源码需要...
【使用C#的AForge类库识别验证码实例】 在本文中,我们将探讨如何利用C#的AForge类库来识别验证码。AForge类库是一个功能强大的框架,它为开发者和研究者提供了丰富的工具,涵盖了计算机视觉、人工智能、图像处理、...
本项目“c#源码自动识别验证码.rar”是一个基于Winform的应用程序,利用C#进行开发,旨在自动识别各种图片形式的验证码。 在验证码识别过程中,主要涉及以下几个关键技术点: 1. 图像预处理:验证码图像往往含有...
c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码c#识别验证码
《OCRServer识别验证码技术详解与性能测试》 验证码(CAPTCHA)作为一种防止自动化程序非法操作的安全机制,在互联网中广泛使用。OCR(Optical Character Recognition,光学字符识别)技术则为解决验证码识别问题...
在 local 环境中,可以使用 Python 和 ddddocr 库来识别验证码。首先,需要安装 Python 和 ddddocr 库,然后使用 codereg.py 文件来启动验证码识别服务。接着,需要填写接口 URL 和请求模板,然后点击“识别”,即可...
智能识别验证码通常涉及计算机视觉和机器学习技术。在C#中,我们可以利用AForge.NET或Emgu.CV等库来处理图像,进行预处理(例如灰度化、二值化、噪声去除)、特征提取(边缘检测、模板匹配)以及后续的字符分割和...
在本篇文章里小编给大家分享的是关于Java 如何使用 OCR 技术识别验证码实现自动化登陆的相关知识点内容,需要的朋友们学习下。
这篇博客文章的作者尝试使用按键精灵来识别验证码,虽然结果不尽如人意,但这一尝试揭示了验证码识别的基本思路和可能遇到的挑战。 验证码(CAPTCHA)是一种防止机器自动操作的安全机制,通常由一串随机字符或数字...
【Umi-OCR识别验证码】是一种利用光学字符识别(OCR,Optical Character Recognition)技术来自动解析和识别图像中的验证码的技术。在网络安全和自动化测试领域,验证码识别是常见且重要的需求,例如登录验证、防...
在本主题中,“DELPHI本地识别验证码 易语言 OCR DLL”涉及到的是使用Delphi编程语言和易语言,通过OCR(Optical Character Recognition,光学字符识别)技术来识别这些验证码。DLL(Dynamic Link Library)是...
本压缩包包含了一系列与OCR识别验证码相关的文件,包括图像文件、动态链接库(DLL)、源代码和执行程序,以下将对这些文件及相关的知识点进行详细介绍。 首先,我们看到有多个`.bmp`文件,如1.bmp、3.bmp和2.bmp。...
获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是...
jmeter使用ocrserver工具自动识别验证码配置
总的来说,Java识别验证码是一个涉及多领域知识的挑战,需要综合运用图像处理、模式识别和机器学习等技术。通过不断迭代优化,可以提高验证码识别的准确性和效率,从而在实际项目中实现高效的安全防护。
在本案例中,提供的源代码包含了解析和识别验证码的算法,以及脚本化的运行机制,这使得用户能够直接运行并测试代码效果。以下是关于验证码识别程序的一些核心知识点: 1. **验证码的基本原理**:验证码是一种为了...
在Python编程领域,识别验证码是一项常见的任务,尤其在自动化测试、数据抓取或者网络安全中扮演着重要角色。本文将深入探讨如何使用Python建立一个模型来识别验证码,提高成功率,并着重解决2.7版本中遇到的问题。 ...
识别验证码的思路一主要关注的是图像识别技术,尤其是对于简单的验证码。这种技术通常包括以下几个步骤: 1. 图像预处理:首先,我们需要对验证码图片进行预处理,以便提高后续分析的准确性。这可能包括灰度化(将...
使用Tesseract和PyTesseract识别验证码的步骤通常包括以下几个部分: 1. **预处理**:验证码图像可能需要进行一些预处理操作,如灰度化、二值化、噪声去除等,以提高识别效果。这些步骤可以通过Python的OpenCV库来...