Java识别验证码和图像处理_图像识别 - 提取验证码信息

本文介绍了如何使用Java图像识别框架Tess4j来识别验证码信息,包括设置字体库、去除干扰线的方法。通过示例展示了验证码识别工具类VerificationCode的使用,但指出对于有干扰线的验证码识别效果有待提升。
摘要由CSDN通过智能技术生成

1、Tess4j

最近在GitHub上看到一个图像识别的开源框架tess4j,而且是Java版的,为此利用此框架来识别验证码中的信息,利用它提供的字体库,来提取信息,对于没有什么干扰线的验证码准确率还是蛮高的,对于有一些干扰线的就差一些,不过也可以能通过训练字体库,从而可以提高准确率的。

根据范例,写了一个简单的提取验证码信息的工具类VerificationCode:

主要是用这个类的extract方法,这个方法有3个参数:

第1个参数是指定图片的路径

第2个参数是指定字体库的,其中chi_sim表示中文简体,eng表示英文

第3个参数是指定是否需要去除干扰线,true表示需要,false表示不需要

package com.swnote.tess4j.test;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

import com.recognition.software.jdeskew.ImageDeskew;

import net.sourceforge.tess4j.ITesseract;

import net.sourceforge.tess4j.Tesseract;

import net.sourceforge.tess4j.util.ImageHelper;

/**

* 识别验证码

*

* @author lzj

* @date [2019-03-03]

*/

public class VerificationCode {

/**

* 配置文件

*/

private static String config_path = "src/main/resources";

/**

* 调整倾斜度的阈值

*/

private static double deskew_threshold = 0.05d;

/**

* 提取验证码图片中的文字

*

* @param img_path

* @param lang

* @param clear

* @return

*/

public static String extract(String img_path, String lang, boolean clear) throws Exception {

// 图片文件

File img = new File(img_path);

if (clear) {

// 将去除干扰后的图片保存在同级目录下的ext目录下

String ext_path = img.getParentFile().getPath() + "/ext";

// 去除干扰

CleanImage.cleanLinesInImage(img, ext_path);

// 处理后的图片

img = new File(ext_path, img.getName());

}

// 设置语言库

ITesseract instance = new Tesseract();

File directory = new File(config

文件为压缩包,包括多个java识别图片文字的项目,国内网站上资料比较少,项目都整理了测试类及说明,都包含着源代码及jar包、安装包、训练库。希望用得到的人少走弯路,资源都精心整理测试过,高分是必须的。 javaocr项目 纯java程序,国内网站几乎没有见到相关资料。 此项目提供了图形界面的测试类: net.sourceforge.javaocr.main.java javaocr2项目 与以上javaorc属同一项目的不同分支,纯java实现,以下3个测试类请参考。 个人对此项目感觉不错,虽然存在些问题,但是只要训练库好,英文和数字识别率很高。 我用此项目把某网站的数字验证码都截了图做成了训练库,识别率95%以上,用browserTest简单实现了程序自动登录与各种操作功能。 测试类: TestDemo.java MyDemo.java MyDemo2.java Longan-master项目 此项目也是纯java实现,识别英文和数字效果还不错,国内网站几乎没有任何相关资料。 测试类: com.zarkonnen.longan.Main 使用开发工具,请设置程序输入参数为:-o c:/111.txt c:/entest.png 代表输文件和识别图片 Java_imagetotext项目 安装tesseract-ocr-setup-3.02.02.exe文件,通过java调用tesseract.exe文件识别图片,输识别结果 测试类: com.chillyfacts.com.my_main.java 根据实际情况修改输入图片、输文件名、tesseract.exe文件所在路径 Tess4J-3.4.7项目 知名度最大的java识别程序了。 我的环境是windows7 64位 jdk1.8 64位 各种折腾,痛苦的尝试了各版本,基本都是报模块加载失败,安装上vc_redist.x64_2015.exe后执行成功,但是在xp32位还是没有成功。 测试类: TesseractExample.java 测试英文识别 ChOcr.java 测试中文识别 tesseract3.03项目 测试类: de.vorb.tesseract.example.BasicExample 需要加载libtesseract303.dll 运行后一直报异常,没有搞定,也不打算深究了,遗憾!有人成功了,请分享为谢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值