在CentOS服务器上安装Tesseract完整版,附带解决错误的办法,Java程序进行图像识别
安装
- 安装gcc、gcc-c++、make,如果有就不需要安装:
yum install gcc gcc-c++ make
- 安装编译相关工具,没有的话编译时候可能报错:
yum install autoconf automake libtool
- 安装对图片识别相关支持工具,没有这些在后续执行Tesseract命令时会报错,可以尝试一下:
yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel
-
安装leptonica,首先去leptonica
下载
,下载后放到服务器解压并编译,leptonica是一个tesseract必须的工具:
#到leptonica的目录执行
./configure
make
make install
- 下载对应的Tesseract,执行:
链接:https://github.com/tesseract-ocr/tesseract/archive/3.04.00.tar.gz
./autogen.sh
./configure
make
make install
ldconfig
- 下载Tesseract语言包
https://github.com/tesseract-ocr/tessdata
然后复制tessdata到tess4j下(路径随意的,因为bash_profile可以更改,看你个人)
cp tessdata /usr/local/tess4j -R
- 配置环境变量,否则在执行时会出现找不到语言包的错误:
vim ~/.bash_profile
加入一下内容
export TESSDATA_PREFIX=/usr/local/tess4j/tessdata
然后执行
source ~/.bash_profile
测试下:
tesseract -v
如果能出现
就说明安装已经成功!可以开始做识别测试了。
测试的语句:(test.png是已经进入这张图片的父目录才可以这样,否则请加绝对路径,比如/usr/local/test.png)(eng+chi_sim是同时识别英文和中文,请确认你下载好这两个训练包)
tesseract test.png out -l eng+chi_sim
然后(输出结果,如果结果差不多就证明Linux上可以用了!!!)
cat out.txt
错误汇总:
我在安装完,并且用上面语句测试确实能识别出相应的文字后,然后开始测试Java代码的识别。
有个错误很恼火:
java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.tess4j.TessAPI
这个初始化错误我现在总结四个解决办法:
①确认你的dataPath是否设置正确,最好吧tessdata文件夹放在代码项目的根目录
②确认你的代码lib包的版本和上面安装在服务器中的版本一致,比如上面所说的安装的是3.04版本,那你在springboot的maven中更换成3.0.0版
③so动态链接库确认复制好了没,如果没有,实用下面语句复制(将/usr/local/lib/ 目录下的so文件拷贝到 /usr/lib64/)
cp /usr/local/lib/*.so.* /usr/lib64/
④重启下服务器,让服务器自动加载下动态链接库
最好把四个步骤都做下,我就是做完这四个步骤后成功在Java项目中识别成功!
我的博客中还有Mac安装Tesseract的步骤和错误汇总。