昨天在做一些验证码识别,因为主要用的语言是java,所以也是用java来做了。
?
刚开始自然是思路全无,后来在网上找到了J4L 这个工具jar
?
网站:http://www.java4less.com/ocrtools/ocrtools.php?info=guide
?
使用起来也是很简单:
这边先下载他的jar包:
http://www.java4less.com/ocrtools/ocrtools.php?info=download
?
下载后解压 得到一堆文件:

?运行一下那三个bat文件就可以看到效果:

?
如果你是64位的机器 请把bits64里的dll复制到这个目录并且覆盖掉 不然会有平台不支持的错误
?
在代码里使用也很简单 把lib下的jar包导入到build path
并且把tess3WrapperDLL.dll ?leptonlibd.dll ?放到path下(%java_home%/bin啊之类的 就是环境变量里设置的path)
?
接下去就可以简单使用了:
我这边的代码为了处理一下验证码 直接拿来用基本上用不了 所以用了http://ykf.iteye.com/blog/212431?里面图像的处理类
代码很简单 如下:
class="java"> public static String getVerifyText(InputStream ins) throws MalformedURLException,
IOException {
OCRFacade facade = new OCRFacade();
BufferedImage bi = ImageIO.read(ins);
ImageFilter ifter = new ImageFilter(bi);
bi = ifter.changeGrey(); //这里只用了一个二值化 可以再多加几个
ByteArrayOutputStream bao = new ByteArrayOutputStream();
ImageIO.write(bi, "png", bao);
String text = facade.recognizeImage(bao.toByteArray(), "png", "eng");
System.out.println("Text in the image is: ");
System.out.println(text);
return text;
}
?结果:

?
试了一下 这类简单的识别 正确率虽然不是特别高 但是差不多足够用了
?
?