然后将图片放入这个软件中对图片进行测试。然后输出辨识度较高的图片。接着可以通过这个软件测试出所需要验证码图片的阈值。通过测试出图片的阈值。就可以获得比较清晰的图片。接着将图片放入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。识别完成后需要对识别出来的验证码进行读取。