直接上操作,
因为tess4j依赖jna,而新版的tess4j和默认的com.sun.jna 3.0.6版本不兼容,它需要先加入这个jna的依赖:
- <dependency>
- <groupId>net.java.dev.jna</groupId>
- <artifactId>jna</artifactId>
- <version>4.2.1</version>
- </dependency>
然后加入tess4j的依赖(exclude掉默认的jna):
- <dependency>
- <groupId>net.sourceforge.tess4j</groupId>
- <artifactId>tess4j</artifactId>
- <version>2.0.1</version>
- <exclusions>
- <exclusion>
- <groupId>com.sun.jna</groupId>
- <artifactId>jna</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
依赖库就只有这些,不需要加入tessreact-ocr,因为新版tess4j的jar包里面自带了(几十兆)
然后把tessreact项目里面的tessdata文件夹提取出来放在某个位置:https://github.com/tesseract-ocr/tesseract
没完,还要加入验证码识别的相关语言包,姑且叫做训练文件,在这里下载:https://github.com/tesseract-ocr/tessdata
假如你想识别一般的英文数字验证码,就下 eng.traineddata,然后放到tessdata文件夹下,比如:C:\tessdata
最后找一张图片验证码来测试,测试代码:
- @Test
- public void test() {
- File imageFile = new File("D:/validcode.jpg");
- Tesseract tessreact = new Tesseract();
- tessreact.setDatapath("C:/tessdata");
- try {
- String result = tessreact.doOCR(imageFile);
- System.out.println(result);
- } catch (TesseractException e) {
- System.err.println(e.getMessage());
- }
- }