java tess4j训练库_Java 验证码识别库 Tess4j 学习

java tess4j训练库_Java 验证码识别库 Tess4j 学习Java验证码识别库Tess4j学习【在用java的Jsoup做爬虫爬取数据时遇到了验证码识别的问题(基于maven),找了网上挺多的资料,发现Tess4j可以自动识别验证码,在这里简单记录下学习过程及遇到的一些问题。】步骤:需要在步骤一的tessdata文件中加入相关语言包(训练文件),在这里下载:https://github.com/tesseract-ocr/tessdata,如果是简…

大家好,又见面了,我是你们的朋友全栈君。

Java 验证码识别库 Tess4j学习

【在用java的Jsoup做爬虫爬取数据时遇到了验证码识别的问题(基于maven),找了网上挺多的资料,发现Tess4j可以自动识别验证码,在这里简单记录下学习过程及遇到的一些问题。】

步骤:

需要在步骤一的tessdata文件中加入相关语言包(训练文件),在这里下载:https://github.com/tesseract-ocr/tessdata ,如果是简单的英文数字验证码,下载 eng.traineddata然后放到文件夹里即可,中文的是chi开头的traineddata。

导入相关依赖,maven相关依赖如下:

junit

junit

3.8.1

test

net.java.dev.jna

jna

4.2.1

net.sourceforge.tess4j

tess4j

4.1.1

com.sun.jna

jna

4,编写相关代码(自测可正常运行):

packageyanZhengMaTest.pikachu;importjava.io.File;importnet.sourceforge.tess4j.Tesseract;importnet.sourceforge.tess4j.TesseractException;public classTest {public static voidmain(String[] args) {//验证码图片存储地址

File imageFile = new File(“C:\Users\pc\Desktop\1.gif”);if(!imageFile.exists()){

System.out.println(“图片不存在”);;

}

Tesseract tessreact= newTesseract();

tessreact.setDatapath(“F:\Program Files (x86)\Tesseract-OCR\tessdata”);

String result;try{

result= “测验结果:” +tessreact.doOCR(imageFile);

System.out.println(result);

}catch(TesseractException e) {

e.printStackTrace();

}

}

}

出现异常及处理:

(本人因为开始的时候没用maven导入依赖,自己去下载了各种网上要的jar包去导入,遇到了一堆问题,最后卡在了Invalid memory access这个异常上,后来通过换成maven项目并解决了异常)

A.【Exception in thread “main” java.lang.Error: Invalid memory access:】

如果出现类似于 Invalid memory access的异常

(1). 首先你先确定JAVA代码中:

tessreact.setDatapath(“F:\Program Files (x86)\Tesseract-OCR\tessdata”);

这里的地址要填你步骤一下载的tessdata文件夹地址。

(2). 如果地址无误,那可能是你tess4j依赖的版本太低,需重新导入依赖,在pom中修改即可。

B.【Exception in thread “main” java.lang.UnsupportedClassVersionError: net/sourceforge/tess4j/Tesseract:】

发生该异常的原因是JDK版本低于1.7,使用1.7以上即可解决问题。

C.【出现图片非法异常】:可能是你图片有问题,换张图片试试,下载的图片不要去修改它的后缀,否则也可能报错。

痛的领悟:

不要直接用java项目自己去导入相关jar包,直接用maven项目去加入依赖包就好,否则可能会出现一堆莫名其妙的异常,个人觉得是因为maven项目依赖包导入时还会导入其他jar包,java项目则需要自己去补增一些jar包,在此建议用maven。

附:

可识别验证码示例:http://es.bnuz.edu.cn/checkcode.aspx?0.33556625493951997/

内容来源于网络如有侵权请私信删除

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139771.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • AndroidAutoSize使用简介[通俗易懂]

    AndroidAutoSize使用简介[通俗易懂]一、简介今日头条屏幕适配方案终极版,一个极低成本的Android屏幕适配方案,项目地址:https://github.com/JessYanCoding/AndroidAutoSize由于此方法是一刀切来适配,所有界面以dp为单位的都会受影响,因此一定要做好防护。二、使用1、集成//集成implementation’me.jessyan:autosize:1.2.1…

  • 存储结构二叉树

    存储结构二叉树

  • spring的InitializingBean的 afterPropertiesSet 方法

    1、概括Spirng的InitializingBean为bean提供了定义初始化方法的方式。InitializingBean是一个接口,它仅仅包含一个方法:afterPropertiesSet()。Spring会在设置完成一个bane所有的合作者后,去检查是否实现了InitializingBean接口,如果实现了就会调用afterPropertiesSet()方法。2、使用在项目中看到同事使用这个方法吧类型存入map来实现工厂的不同实现的获取。publicclassfactory

  • 常用数据库排名及分类介绍[通俗易懂]

    常用数据库排名及分类介绍[通俗易懂]DB-Engines:2019年6月全球数据库排行DB-Engines数据库流行度排行榜6月更新已发布,排名前二十如下:总体排名和上个月相比基本一致,其中排名前三的Oracle、MySQL和MicrosoftSQLServer也是分数增加最多的三个数据库,增加的分数分别为13.67、4.67和15.57,三者的总分也均已超过一千。一、数据库的分类…

  • StringTokenizer用法[通俗易懂]

    StringTokenizer用法[通俗易懂]StringTokenizer可以将一个字符串分解为一个一个的单词或者标记。常用方法如下:methodcontentintcountTokens()返回nextToken方法被调用的次数。booleanhasMoreTokens()返回是否还有分隔符。booleanhasMoreElements()返回是否还有分隔符。StringnextTo…

    2022年10月24日
  • Java的注解

    Java的注解一、注解的概念:注解并不是一开始就有的,JDK5之前是没有注解的,JDK5及其以后JDK版本才开始支持Java注解!Java注解(Annotation)也叫做元数据,以@注解名在代码中存在,它是一种在源代码中标注的特殊标记,可以标注源代码中的类、属性、方法、参数等代码,主要用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。1.1Java注解按照含有参数的个数分为三种:不带参数,语法结构为:@Annotation,例如@FunctionalInterface;带一个参数的注解,语

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号