这几天为了做一个网站爬虫,涉及到图形验证码的识别,图像这块之前不熟悉,也没时间去琢磨,所以最终选择了开源项目Tesseract-OCR来实现,但是网上大多是windows版本的,当我应用到mac和linux服务器上时遇到了很多坑,寻思可能很多小伙伴也会遇到此类问题,下面就来总结下,也方便自己今后查阅:
public static void main(String args[]){
File dir = new File("/Users/xx/Desktop/test/img/");
File[] files = dir.listFiles();
for (File imageFile : files) {
Tesseract tessreact = new Tesseract();
tessreact.setDatapath("/Users/xx/Desktop/test/tessdata"); //语言包文件路径
try {
String result = tessreact.doOCR(imageFile);
System.out.println(imageFile.getName()+":"+result);
} catch (TesseractException e) {
System.err.println(e.getMessage());
}
}
}
废话不多说,先上码:
依赖jar包(我这里用的gradle构建的,maven类似):
compile 'net.java.dev.jna:jna:4.5.0'
compile ('net.sourceforge.tess4j:tess4j:3.4.1'){
exclude group: 'com.sun.jna', module:'jna'//据说jdk自带的jna包不兼容,所以这里需要exclude掉
}
import java.io.File;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
public class ReadImg {public static void main(String args[]){
File dir = new File("/Users/xx/Desktop/test/img/");
File[] files = dir.listFiles();
for (File imageFile : files) {
Tesseract tessreact = new Tesseract();
tessreact.setDatapath("/Users/xx/Desktop/test/tessdata"); //语言包文件路径
try {
String result = tessreact.doOCR(imageFile);
System.out.println(imageFile.getName()+":"+result);
} catch (TesseractException e) {
System.err.println(e.getMessage());
}
}
}
}
一切看上去都这么简单,运行一下=>各种内裤找不到,于是baidu、googleÿ