Thursday, February 26th, 2009
过年的时候在当当网上买了2本书《沉思录》和《沉思录II》,另外去年还有2本书没有读完,今年要把去年的债先还了,一本是《蓝海战略》,另外一本是《论语》。
Posted in 杂谈 | No Comments »
Tuesday, February 17th, 2009
Captcha验证码是现在很多登陆页面都会使用的一种验证机制,它是一种通过显示一张含有多个随机数字和字母的图片(也可以是音频)要求用户识别的方式,来甄别访问者是人还是机器的方式。很多网站使用的是比较简单的Captcha验证码,只对数字和字母做了颜色变化,但没有做变形处理,没有在图片上加噪声,更没有做数字和字母的虚化或叠加。前几天,我在做一个自动处理工具的时候,就遇到了这样的captcha验证码,很自然的想到用OCR的方法去突破Captcha验证,经过多次尝试之后,发现可以使用djpeg+gocr的方法很方便的实现突破。
首先介绍一下djpeg和gocr这两个工具,它们都是开源软件。
djpeg是一条用来解压jpeg图片 (decompress JPEG) 的Linux命令。任何Linux发行版上应该都有这条命令,如果要在windows下使用,可以去SourceForge下载安装GnuWin32,下载地址是http://sourceforge.net/project/showfiles.php?group_id=23617,如果只是想用djpeg,可以只下载jpeg那一个包,当前的版本是6b-4。
gocr是一个开源的OCR软件,gocr并不是一个功能特别强的开源ocr项目,至少它对有噪声的图片的识别就不太好。gocr也可以在SourceForge上找到,有windows和linux两个版本,目前的版本是0.4.6,下载地址是http://jocr.sourceforge.net/download.html。
通常在网页上看到的captcha验证图片大多是以jpeg格式出现的,而gocr却不支持jpeg文件作为输入,只能接受ppm,pnm等格式的图片,因此需要在使用gocr之前把下载的captcha图片转换成ppm的格式,然后再用gocr去做识别,用以下的命令就可以
djpeg.exe -ppm -gray -outfile captcha.ppm captcha.jpg
gocr046.exe captcha.ppm
我所处理的那个captcha验证图片没有经过变形处理,也没有噪声,djpeg+gocr的成功率几乎是100%。当然,这个方法只对简单的captcha图片有效,我试过处理taobao的captcha图片,还没有成功过。对于有噪声的图片,gocr无法识别pattern的时候,它会提示用户输入对应的字符串,等于是一个模式学习的过程,如果captcha图片的噪声是有规律的话,我想经过一定量的学习之后,djpeg+gocr也是可以处理一些复杂的captcha图片的,不过成功率就会的低很多。
Posted in 技术 | No Comments »