废话不多说,先上码:
依赖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 {}
一切看上去都这么简单,运行一下=>各种内裤找不到,于是baidu、google,一顿找之后发现本地需要安装tessreact,
吐槽一下:TMD既然提供了jar包,为什么不把依赖的lib等等都集成进去,非得单独安装。
说安装我们就来安装
==========MAC下安装tessreact===================
mac要比win费劲一些,毕竟网上大都是些windows的贴,找了很多网站,stackoverflow等等都翻了一遍,
最后聚焦到三个单词:brew install tesseract ;
如果找不到brew命令 ,自行百度谷歌安装brew,这里就不细说了,这个命令类似Linux的yum,apt-get,也是一方神器,我之前没用过,安装还费了些劲,就提一点吧,如果brew update很长时间没反应,可能是被great wall挡了,你需要梯子
安装之前还有一点需要注意,mac下brew安装默认会到/usr/local目录下,但是这个目录是root才能访问,切换到root,然后chown -R xx(你的用户名)/usr/local/ ,修改/usr/local的归属,如果改不成功,提升没权限,那是因为mac做了防护机制,你需要重启电脑然后按着Command+R,在修复界面,调出终端,然后在命令行输入csrutil disable ,关闭防护机制,然后再执行即可;
安装完成之后:tesseract --version 查看下,会显示如下信息:
tesseract 3.05.01
leptonica-1.75.3
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
说明安装成功!
接下来找到你本地的tessdata目录,brew方式默认安装到/usr/local/share/tessdata目录,可以自己copy出来自定义目录,比如我放在/Users/xx/Desktop/test/tessdata,对应设置tessreact.setDatapath("/Users/xx/Desktop/test/tessdata")即可,最后需要下载识别的语言包,地址:https://github.com/tesseract-ocr/tessdata
这里根据自己的需要下载相应的语言包,比如下载eng.traineddata,然后把eng.traineddata放到tessdata目录里面,至此main方法跑起来,成功!
注:数字和英文组合的验证码就用eng.traineddata/enm.traineddata,git上提供的语言包不是很准,有个别数字字母出不来的可以自己去训练自己的语言文件,这里我暂时没有进一步尝试了,自行百度吧。
==========LINUX下安装tessreact===================
有了MAC的安装经历,linux还不是分分钟的事。。
源码安装走一波:
1、依赖工具
yum install autoconf automake libtool
yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel
2、leptonica-1.72
wget http://www.leptonica.com/source/leptonica-1.72.tar.gz
tar xzvf leptonica-1.72.tar.gz
cd leptonica-1.72
./configure
make && make install
3、tesseract-ocr 3.04
wget https://github.com/tesseract-ocr/tesseract/archive/3.04.00.tar.gz
tar xzvf 3.04.00.tar.gz
cd tesseract-3.04
./configure
make && make install
安装完成之后,剩下的内容和mac基本一样,参照mac配置即可。
可能遇到的问题:我的是centos64位的系统,运行时报错提示
java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native library (linux-x86-64/libtesseract.so) not found in resource path ....
这个问题困扰了很久,最后
cp -r /usr/local/lib/ /usr/lib64 解决,猜想是jvm默认读取的系统类库路径不一样吧。