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/

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot2.0 Actuator 监控参数说明

    SpringBoot2.0 Actuator 监控参数说明基于SpringBoot2.0+Actuatormetrics的监控(基于OracleJDK9,G1)引言SpringBoot2在spring-boot-actuator中引入了micrometer,对1.x的metrics进行了重构,另外支持对接的监控系统也更加丰富(Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront)。本文以Prometheus为例阐述SpringBo

    2022年5月9日
    45
  • ISP举例_low input lag

    ISP举例_low input lag  从2000年9月底摄像头首次出现在手机上算起,到如今成为诸多智能设备不可或缺的一部分,便携式手机摄像头已经走过了18年的发展历程。随着手机智能化、轻薄化的发展进程,其搭载的摄像头也随之发生了变化,但基本结构并未有太大的改变。通常而言,一个摄像头硬件应包含以下五个部分:外壳(Housing)或者镜头固定物(LensHolder)、镜头(Lens)、红外截止滤波片(IR-cutfilter…

    2022年10月23日
    0
  • 把list转为JSON字符串

    把list转为JSON字符串把list转为字符串,把对象转为字符串,toJSONString(),json的jar包

    2022年10月17日
    0
  • 电力-104规约实际测试1「建议收藏」

    电力-104规约实际测试1「建议收藏」104规约实际测试

    2022年6月20日
    44
  • django drf_django 消息队列

    django drf_django 消息队列前言我们上篇文章使用到了Serializer类,可能有小伙伴说太过复杂,那么本篇就为大家带来更加简便的序列化类ModelSerializerModelSerializer先来看下ModelSer

    2022年7月31日
    5
  • service mesh框架对比_k8s外部访问内部service

    service mesh框架对比_k8s外部访问内部serviceservice用于4层路由负载 ingress用于7层路由负载1 Service介绍在kubernetes中,Pod是应用程序的载体,我们可以通过Pod的IP来访问应用程序,但是Pod的IP地址不是固定的,这就意味着不方便直接采用Pod的IP对服务进行访问。为了解决这个问题,kubernetes提供了Service资源,Service会对提供同一个服务的多个Pod进行聚合,并且提供一个统一的入口地址,通过访问Service的入口地址就能访问到后面的Pod服务。Service在很多情况下只是一个概念

    2022年8月9日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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