`

Captcha的对立面OCR

    博客分类:
  • Lab
阅读更多

需求分析(从系统分析看):  下载网页上的验证码图片,将其解析为可识别的文字

软件设计(从系统架构看):   Http get -> image -> ocr->word

资源实现(从项目管理看):  环境:  Ubuntu 7.10 

  • sudo apt-get install ocrad
  • sudo apt-get install gocr

   技术:

  • java
  • shell

 

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class TestAtSoodinDotCom {
	
	
	public static String callCmd(String[] cmd) {
		String result = "";
		 String line = "";
		 try {
			 Process proc = Runtime.getRuntime().exec(cmd);
			 InputStreamReader is = new InputStreamReader(proc.getInputStream());   
			 BufferedReader br = new BufferedReader (is);   
			 while ((line = br.readLine ()) != null) {  
				 result += line;
			 }  
		 }
		catch(Exception e) {
			e.printStackTrace();
		}
		return result;
	}
	
	
	/*--------------------------------------------------
	  * Process a response from a server
	  *-------------------------------------------------*/
	  private static  boolean processServerResponse(HttpURLConnection http, InputStream iStrm) throws IOException
	  {
	    // 1) Get status Line
	    if (http.getResponseCode() == HttpURLConnection.HTTP_OK)
	    {
	      // 2) Get header information - none
	      // 3) Get body (data)
	      int length = (int) http.getContentLength();
	      if (length != -1)
	      {
	        byte servletData[] = new byte[length];
	        iStrm.read(servletData);
	      }
	      else  // Length not available...
	      {
	    	   OutputStream oStrm = null;
	    	  oStrm =  new BufferedOutputStream( new FileOutputStream("/tmp/verifycode.jpeg")); //图片是jpeg格式
	        int ch;
	        while ((ch = iStrm.read()) != -1)
	        	oStrm.write(ch);

	        oStrm.close();
	      }
	     return true;
	    }

	    return false;      
	  }
	  
	  
	  
	  
	  
	  
	  public static void main(String[] args) throws Exception{
		 
		    InputStream iStrm = null;    
		    String result = null;
		    boolean ret = false;
	            String address = "http://www.soodin.com/verifycode";
		    URL url = new URL(address);
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			connection.setRequestMethod("GET");
			connection.setRequestProperty("Host"," www.soodin.com");
			connection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2");
			connection.setRequestProperty("Cookie:","__utma=166789948.4122467951340428000.1244696088.1262916100.1263192353.114; __utmz=166789948.1256018048.99.5.utmcsr=bbs.soodin.com|utmccn=(referral)|utmcmd=referral|utmcct=/search.php; rtime=21; ltime=1263194805481; cnzz_eid=68012444-1253685384-; JSESSIONID=750D1D2078D37976A15EF35B5FF5899C; cnzz_a1688487=10; sin1688487=; __utmc=166789948");
			connection.setRequestProperty("Referer",  "http://www.soodin.com/user/login.do?method=login");
			connection.setDoOutput(true);
			
		    iStrm = connection.getInputStream();
			
			processServerResponse(connection, iStrm);
			
			String[] cmd = {
					"/bin/sh",
					"-c",
					"djpeg -grey -pnm /tmp/verifycode.jpeg |  ocrad -x /tmp/b.txt",  //图片是jpeg格式
					};

			String verifycode = callCmd(cmd);
			verifycode = verifycode.replaceAll("[\\  ]", "");
			System.out.println(verifycode);

			
	  }

 测试结果:  经过噪音干扰后的识别率低于10%.

0
0
分享到:
评论
3 楼 beneo 2010-07-01  
阿诺,知道有啥支持中文的么?
2 楼 Ihavegotyou 2010-07-01  
引用
能支持中文么?我猜测应该不行的把

不支持中文。
1 楼 beneo 2010-07-01  
能支持中文么?我猜测应该不行的把

相关推荐

    ocr-for-captcha 基于图像验证码的ocr识别

    OCR-for-Captcha是一种基于图像验证码的OCR(光学字符识别)技术,旨在自动识别和提取图像验证码中的字符信息。在现实生活中,图像验证码被广泛应用于各种网站和应用程序,以防止自动化机器人(例如恶意软件)的恶意...

    cnn_captcha-master_OCR_captcha-master_cnn_captcha_CNN验证码识别_prese

    目前通常使用如下几种方法: | 方法名称 | 相关要点 || ------ | ------ || tesseract | 仅适合识别没有干扰和扭曲的图片,训练起来很麻烦 || 其他开源识别库 | 不够通用,识别率未知 || 付费OCR API | 需求量大的...

    captcha-ocr

    captcha-ocr

    muggle-ocr-1.0.3 muggle_ocr库下载_验证码识别_源码

    验证码(CAPTCHA)是一种防止自动化程序(如网络爬虫)滥用服务的技术。它通常要求用户完成一项人类可以轻易完成但计算机难以解决的任务,例如识别扭曲的文本或图像中的特定形状。`muggle_ocr`库旨在简化这一过程,...

    muggle-ocr-1.0.3_muggle_ocr库下载_验证码识别_

    image_path = 'captcha.png' image = cv2.imread(image_path) # 进行识别 text = ocr.recognize(image) print('识别结果:', text) ``` **库的结构与文件介绍:** - `setup.cfg`:包含项目配置信息,如Python版本...

    Java OCR 识别组件(基于Tesseract OCR 引擎)。能自动完成图片清理、识别 CAPTCHA 验证码.zip

    在本案例中,我们关注的是一个基于Tesseract OCR引擎的Java实现,它专门设计用于处理CAPTCHA验证码的识别。Tesseract OCR是一款由Google维护的开源OCR引擎,具有高度的可定制性和强大的文字识别能力。 **Tesseract ...

    captcha-1.3.0-API文档-中文版.zip

    赠送jar包:captcha-1.3.0.jar; 赠送原API文档:captcha-1.3.0-javadoc.jar; 赠送源代码:captcha-1.3.0-sources.jar; 赠送Maven依赖信息文件:captcha-1.3.0.pom; 包含翻译后的API文档:captcha-1.3.0-javadoc-...

    captcha.rar

    在本资源包"captcha.rar"中,我们可以找到与Python编程语言相关的验证码实现和处理工具。 Python是一种高级编程语言,由于其简洁明了的语法和丰富的库支持,它被广泛用于开发各种应用,包括网络安全领域。在处理...

    Drupal CAPTCHA模块配置

    CAPTCHA 模块是 Drupal 中的一个重要组件,用于防止自动化的垃圾信息,如 spam。Spam 通常指的是未经请求的电子邮件、广告或其他形式的网络信息传播,它可能包含恶意链接或不必要的商业宣传,对用户造成困扰。 安装...

    thinkphp5图片组件解决captcha_src()

    `captcha_src()` 和 `captcha_img()` 是ThinkPHP5框架中的两个重要函数,它们与图片验证码的生成和显示密切相关。本文将详细讲解这两个函数的工作原理以及如何在项目中正确使用它们。 `captcha_src()` 函数是用于...

    python的captcha库

    python的captcha库python的captcha库python的captcha库python的captcha库python的captcha库python的captcha库python的captcha库

    AJ-Captcha行为验证码 v1.3.0.zip

    AJ-Captcha行为验证码是一款用于网站安全验证的工具,版本为1.3.0。这款验证码系统旨在防止自动化脚本或机器人进行恶意操作,如垃圾邮件发送、账户注册、恶意登录等。它通过检测用户在输入验证码时的行为模式来判断...

    基于springboot行为滑块验证码tianai-captcha的快速启动器.zip

    import cloud.tianai.captcha.spring.annotation.Captcha; import cloud.tianai.captcha.spring.request.CaptchaRequest; import org.springframework.web.bind.annotation.PostMapping; import org.springframework...

    captcha.class.php:一个简单的 PHP CAPTCHA 类

    ###参数s: user defined captcha text c: captcha type 可以在课堂上更改更多设置... ###如何使用它只需调用 captcha.php 文件并传递所需的类型和/或预定义的验证码文本。 captcha.php?s=123456 输出: ...

    OCRServer识别验证码.zip

    验证码(CAPTCHA)作为一种防止自动化程序非法操作的安全机制,在互联网中广泛使用。OCR(Optical Character Recognition,光学字符识别)技术则为解决验证码识别问题提供了可能。本篇文章将深入探讨OCRServer如何...

    行为验证码 AJ-Captcha 1.3.0

    行为验证码AJ-Captcha 1.3.0是一种用于网络安全验证的解决方案,旨在防止自动化脚本或机器人进行恶意操作。此版本提供了丰富的功能和多种平台的支持,包括前后端交互,以及前端框架如Vue.js、H5、Android、iOS、...

    Laravel开发-captcha

    在Laravel框架中,Captcha是一个非常重要的组件,主要用于防止自动化程序(如机器人)进行恶意操作,例如批量注册、垃圾评论等。Captcha通常要求用户输入图像上显示的一串随机字符,以此验证用户是真实的人而不是...

    vue3-captcha(vue3行为验证码)

    Vue3-Captcha是一款专为Vue3框架设计的行为验证码插件,旨在提高网站的安全性,防止自动化脚本或机器人进行恶意操作。Vue3是Vue.js框架的最新版本,它引入了许多性能优化和开发体验改进,包括Composition API、...

    集成aj-captcha实现滑块验证码.zip

    本集成教程将详细介绍如何在项目中使用aj-captcha库来实现滑块验证码功能,特别适用于基于若依前后端分离架构的应用。 首先,aj-captcha是一个专门用于生成滑块验证码的JavaScript库,它提供了一种动态、直观的方式...

Global site tag (gtag.js) - Google Analytics