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

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。识别完成后需要对识别出来的验证码进行读取。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值