java使用工厂模式来完成验证码识别的思路

原创 2016年08月30日 10:00:17
1.首先是多看验证码。然后是寻找别人验证码思路。看下别人的代码,提取出其中的思路,简单来说就是提取出对图像处理的方法。比如说二值化,腐蚀,然后中值滤波,图片旋转。然后获取所需要处理的验证码图片。经过软件测试。这里推介一个软件。叫

次世代验证码识别系统2.5破解版。

然后将图片放入这个软件中对图片进行测试。然后输出辨识度较高的图片。接着可以通过这个软件测试出所需要验证码图片的阈值。通过测试出图片的阈值。就可以获得比较清晰的图片。接着将图片放入tesseract软件中建立字库,基本上就可以获得想要得到的验证码识别的方法。然后只要处理了足够多的处理图片的方法。就可以在一个大类程序中判断不同验证码的处理方法。通过调用方法来实现验证码的识别。

验证码识别过程中的优化代码。

1.利用软件测试某一类验证码二值化后的图片,最佳阈值。全国企业信息中心的最佳阈值已经发在blog里面了。

2.判断验证码的识别结果的长度,对特定验证码比如说四位验证码,如果读取出来的长度为5就视为错误返回错误码,并重新进行读取。

3.在某些特定关键词如果tesseract识别错误,且不够多的情况,可以考虑使用字符替换。replace函数。

4.如果验证码识别很多错误,就需要对tesseract-ocr软件进行字库建立。

5.利用switch选择函数,读取验证码给出的关键字,可以有效选择验证码识别的省份。

6.使用正则表达式判断验证码是否为英文

    //判断表示是否全为英文  
        private boolean strIsEnglish(String word) {  
            boolean sign = true; // 初始化标志为为'true'  
            for (int i = 0; i < word.length(); i++) {  
                if (!(word.charAt(i) >= 'A' && word.charAt(i) <= 'Z')  
                        && !(word.charAt(i) >= 'a' && word.charAt(i) <= 'z')) {  
                    return false;  
                }  
            }  
            return true;  
        }  
      
    //正则  
    String str ="abssdf";  
    str.matches("^[a-zA-Z]*");  
在图像处理,识别的方法有

1.识别主要使用tesseract和自己建立的字库

字库的识别率根据建立的大小有关。




2.处理的方法有二值化(清晰图像),腐蚀算法以及膨胀算法(保存骨架),中值滤波(去除干扰点)。(最常用的方法)、

3。识别完成后需要对识别出来的验证码进行读取。




相关文章推荐

Java 静态工厂模式的使用

静态工厂模式给人的第一印象就是:static+abstract.这两个词汇已经说明了一切,一个是周期长,一个是返回值抽象,抽象一直都是java乃至编程中很受欢迎的词汇。但这种实现并不是万能的,也不可盲...

c++ java 抽象工厂模式代码

  • 2016年12月31日 19:20
  • 417KB
  • 下载

简单工厂模式的C++、Java实现

  • 2017年02月04日 18:05
  • 21.84MB
  • 下载

java反射(3)在工厂模式中的使用

比较粗略  但易懂(之后会补充) 反射在框架中用的很多,工厂模式,当你不断的new 就不断的分配内存空间,当你new到一定程度没有空间的时候,不就出问题了。一般都不考虑用new来构造实例,除非特殊...

Java工厂模式

  • 2014年12月24日 17:49
  • 11KB
  • 下载

java工厂模式

  • 2013年05月11日 14:02
  • 12KB
  • 下载

工厂模式使用Java 8中的Lambda表达式

工厂模式是Java中最常用的设计模式之一。 这种类型的设计模式属于主机的创造模式,因为这种模式提供了一种最好的方式来创建一个对象。 工厂设计模式允许您创建对象,而不将实例化逻辑暴露给客户端。在这篇文章...
  • boonya
  • boonya
  • 2017年03月06日 22:22
  • 307

java-工厂模式(pdf)

  • 2008年11月03日 11:31
  • 115KB
  • 下载

java 单工厂模式

  • 2012年03月30日 08:46
  • 20KB
  • 下载

Java使用简单工厂模式对面向接口编程模式的深度解耦实现

在Java和C#的编程世界里,并没有出现像C++那样的多脉继承,它们只支持单一的继承,或者多级继承,这一变化最大的影响,我觉得是大大的降低了编程的难度,因为没有了C++的多级多脉继承,所以接口出现了,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java使用工厂模式来完成验证码识别的思路
举报原因:
原因补充:

(最多只允许输入30个字)