在做自动化测试的时候,经常会遇到需要输入验证码的地方,有些可以让开发屏蔽,但是有些不行,这时候,我们可以调用tesseract来实现图像的识别。
在JAVA中调用tesseract,主要有两种方式:cmd方式,tess4j方式。我要介绍的是用tess4j的方式来识别图像,得到验证码。
首先要在工程中加入tess4j的jar包,如果是maven项目,可以从中央仓库中获取https://mvnrepository.com/ 直接搜索tess4j
点击打开
选择使用比较多的,点进去
复制这段代码粘贴到maven工程的pom.xml里面
等待下载完成
安装完成之后,在Maven Dependencies库中会出现tess4j的jar包,官方解释tess4j:A Java JNA wrapper for Tesseract OCR API.也就是说:tess4j是针对tesseract进行封装的javaAPI。安装好依赖库之后,就不需要另外再安装tessereact-ocr了,因为tess4j的jar包里面自带了tessereact-ocr。
安装好之后,如果没有把文字库tessdata放到项目中,调用的时候会报错,如下
Error opening data file ./tessdata/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language 'eng'
Tesseract couldn't load any languages!
Could not initialize tesseract.
这里提示的是环境变量没有设置,这是针对安装tessreact-ocr的调用的错误提示,所以按照这个去加环境变量,问题还是会出现的(这里我折腾了好久才解决),针对依赖库的方法调用,解决这个问题的正确做法是在maven项目的resources路径下添加tessdata文字库
eng.traineddata是英文语言包,识别字母和数字。如果想要识别中文(数字 + 中文),需要在下载