关闭

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

标签: 验证码CAPTCHA工厂模式全国企业信息中心
165人阅读 评论(0) 收藏 举报
分类:
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。识别完成后需要对识别出来的验证码进行读取。




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4033次
    • 积分:209
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    最新评论