`
philip01
  • 浏览: 47106 次
  • 来自: ...
社区版块
存档分类
最新评论

识别图片数字-验证码

阅读更多



 
 


 
 
 
 

 


 

 
 
 

 java 通过 JNI 调用开源的OCR 来识别验证码, 这样不要通过调用exe 生成临时文件来获得验证码

 

 

 //演示程序

 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  
  String url = req.getParameter("j_imgurl");
  InputStream instream = InitEnv.class.getResourceAsStream(InitEnv.CERTPATH);
  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  String protocol = "http";
  byte[] b = null;
  try {
   if(url.startsWith("https")){
       protocol = "https";
   }
   PicUtil.getPic(protocol,url,InitEnv.PORT, InitEnv.PWD, instream, outputStream);
   b = outputStream.toByteArray();
   ImageFilter imageFilter = new ImageFilter(new ByteArrayInputStream(b));
   outputStream.close();
   ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
   ImageIOHelper.createImage(imageFilter.changeGrey(), byteArrayOutputStream);
   byte[] imgData = byteArrayOutputStream.toByteArray();
   byteArrayOutputStream.close();
   
   if(imgData == null || imgData.length <=0){
        return ;
   }

   TesseractEntity tesseractEntity =new TesseractEntity();
   tesseractEntity.setImgByte(imgData);
   tesseractEntity.setIdentifyingCode("-1");
   tesseractEntity.setLength(imgData.length);
   tesseractEntity.setPath(InitEnv.unZipOcrPath);
   tesseractEntity.setLang_option("eng");
   

   //调用JNI 获得图片文字
   String result = AnalysePictureEx.analysePicEx(tesseractEntity);
   String uuid = UUID.randomUUID().toString();
   ImageData.imags.put(uuid, b );
   

   //获得验证码
   req.setAttribute("identifyingCode", tesseractEntity.getIdentifyingCode());
   req.setAttribute("uuid", uuid);
         RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher("/result.jsp");
         requestDispatcher.forward(req, resp);
   
  } catch (Exception e) {
     e.printStackTrace();
  }
 }  
  
     
  
 

1、 iOCR.war放到 tomcat 下。

 

2、访问http://127.0.0.1:8080/iOCR/

 

3、输入图片的URL地址。

 

4、得到图片数字

 

注: 在XP下可以通过

  • 大小: 26.9 KB
  • 大小: 14.4 KB
分享到:
评论
2 楼 fhtwins 2013-08-14  
报错!
通过DEBUG可知:

InputStream instream = InitEnv.class.getResourceAsStream(InitEnv.CERTPATH);

InitEnv.CERTPATH------> /sys/client.jks  ????????? 在哪儿?
1 楼 leifeng2 2012-10-18  
不行啊,报错!
10:26:27.321 [http-8080-1] ERROR com.overseas.ocr.ImageIOHelper - 异常:
java.util.NoSuchElementException: null
at javax.imageio.spi.FilterIterator.next(ServiceRegistry.java:825) [na:1.7.0_01]
at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:842) [na:1.7.0_01]
at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:827) [na:1.7.0_01]

相关推荐

    图片数字字母验证码识别asp.net源码

    本项目“图片数字字母验证码识别asp.net源码”提供了C#编程语言实现的验证码识别解决方案,特别适用于ASP.NET web应用程序。接下来,我们将深入探讨这个领域的相关知识点。 首先,验证码识别通常涉及到图像处理和...

    jmeter识别图片验证码的包

    本压缩包“jmeter识别图片验证码的包”提供了一种解决方案,即利用OCR(Optical Character Recognition,光学字符识别)技术来尝试识别图片中的验证码。 首先,我们要理解OCR的基本原理。OCR是一种将图像中的文字...

    C#图片验证码字母或数字通用识别代码.rar

    本资源“C#图片验证码字母或数字通用识别代码.rar”提供了一种C#编程语言实现的解决方案,能够帮助开发者识别各种图片验证码,从而自动化某些需要验证码验证的流程。 验证码识别技术通常涉及到图像处理和机器学习。...

    c#实现识别图片上的验证码数字

    public void imgdo(Bitmap img) { //去色 Bitmap btp = img; Color c = new Color(); int rr, gg, bb; for (int i = 0; i &lt; btp.Width;... //取图片当前的像素点 c = btp.GetPixel(i, j); rr = c.

    使用按键精灵识别数字 验证码

    在本教程中,我们将探讨如何使用按键精灵来识别并输入屏幕上的数字验证码。 首先,我们需要理解按键精灵的基本操作。按键精灵提供了一个图形化的用户界面(GUI),用户可以通过录制功能记录下所需的操作,如点击、...

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

    PHP可以通过分析验证码图片的像素信息来尝试识别字符,但这对简单验证码可能有效,对于复杂验证码则需要结合外部服务,如Google的Tesseract OCR引擎,或者使用PHP的机器学习扩展(如PHP-ML)来训练和应用分类器。...

    验证码图片识别

    验证码图片识别技术是一种用于网络安全的身份验证机制,它通过让用户输入显示在图片中的随机字符来防止自动化的恶意软件和机器人程序。在这个项目中,我们关注的是使用VC(Visual C++)进行验证码图片识别的开发。这...

    Deep-Learning,深度学习实战:实战教程、手写数字识别、验证码识别

    在本教程中,我们将深入探讨深度学习的基础知识,并通过实际项目——手写数字识别和验证码识别,来提升对深度学习的理解与应用能力。 首先,我们要了解深度学习的基本构成部分。深度学习模型通常由输入层、隐藏层和...

    vb6图片验证码字母或数字通用识别代码.rar

    本压缩包提供的“vb6图片验证码字母或数字通用识别代码”旨在解决这一问题,它能高效地识别包含字母和数字的多种格式的图片验证码。 验证码识别的核心在于图像处理和模式识别技术。VB6虽然较老,但依然可以通过一些...

    MATLAB数字验证码识别[GUI,详细解析],基于matlab的数字验证码识别,matlab

    本设计为基于MATLAB不变矩的数字验证码识别系统,带一个GUI界面。可以识别带有噪声的数字验证码。流程为:读取图片,用颜色分量的方法将噪声去除,得到去噪后图像,利用连通域法进行字符分割,提取到每个字符的Hu...

    人工智能-CNN-验证码识别-使用机器学习算法完成对12306验证码的自动识别

    12306验证码是铁路订票系统中用于防止自动化程序的一种安全机制,它通常包含扭曲的文字或数字,设计用来挑战机器识别,但对人类来说相对容易理解。以下将详细介绍这一过程的关键知识点: 1. **卷积神经网络(CNN)*...

    通用图片验证码识别 (大漠字库)

    《通用图片验证码识别技术解析与应用》 验证码(CAPTCHA)是一种网络安全机制,用于防止自动化的机器人程序进行恶意操作,如垃圾邮件发送、账号注册等。随着技术的发展,验证码的形式日益多样化,其中以图片验证码...

    字符型图片数字验证码识别完整过程及Python实现(深度学习学习、实现数字、字符模型训练)

    字符型图片数字验证码识别完整过程及Python实现(深度学习学习、实现数字、字符模型训练),欢迎大家获取,有什么问题,留言咨询,多多交流。 字符型图片数字验证码识别完整过程及Python实现(深度学习学习、实现...

    Umi-OCR识别验证码

    在Umi-OCR中,首先需要对验证码图片进行预处理,如灰度化、二值化、噪声去除等步骤,以便于后续的字符分割和识别。接下来,会运用特定的OCR模型,如深度学习的卷积神经网络(CNN)或循环神经网络(RNN),训练出能够...

    易语言利用乐玩模块识别加减法验证码

    然后,我们可以使用乐玩模块中的图像处理函数来预处理图片,包括灰度化、二值化、去噪等步骤,以增强数字的识别度。 接下来,是关键的字符分割和识别阶段。我们可以使用图像分析技术,如边缘检测、连通组件分析等,...

    易语言数字验证码识别

    在"易语言数字验证码识别"这个主题中,我们主要探讨的是如何使用易语言来开发一个能够识别数字验证码的程序。验证码是一种常见的网络安全措施,用于防止自动化程序(如机器人)对网站进行恶意操作。它通常包含一组...

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

    本话题聚焦于使用Java来识别只包含字母和数字的BMP格式的验证码图片,其中验证码的位置会在图片上随机变动。这涉及到图像处理、模式识别以及机器学习等技术。 首先,我们要理解验证码识别的基本流程。它通常包括...

    12000张数字验证码图片

    文件包含12000张数字验证码图片,其中: 10000张训练集; 1000张验证集; 1000张测试集; 图片文件名即为对应验证码包含的数字; 通过第三方库captcha生成的验证码图片,验证码只包含纯数字,图片分辨率为160*60;...

Global site tag (gtag.js) - Google Analytics