linux安装图文识别(tesseract)的详细步骤(避坑)

时间:2025-04-02 18:42:00

之前在windows环境上部署了一套图文识别的项目,今天由于项目转移到了linux,忽然发现之前的图文识别出错了,找了度娘发现,tesseract需要在linux环境构建环境才行。好了,参考网上步骤如下:

一、查看centos版本
#cat /etc/redhat-release
CentOS release 6.5 (Final)node

二、检查gcc和g++版本
#gcc --version
#g++ --version
gcc的当前版本编译tesseract4.1会出错,须要gcc更高的版本,本人是经过yum安装的8.5.0版本,经过yum安装gcc有以下好处:
1) 安装方便,特别是不少依赖的软件包自动安装;
2) gcc的版本能够灵活切换,老的版本得以保留;

3)g++这个必须安装,因为在后续安装tesseract时需要它。

三、安装gcc 6.3.1
#yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++
执行以下命令使gcc6当即生效
#source /opt/rh/devtoolset-6/enable
再次查看gcc和g++版本
#gcc --version
#g++ --version

如需永久生效则须要把命令添加到/etc/profile文件
vim /etc/profile
在最后添加以下内容:
source /opt/rh/devtoolset-6/enable
执行以下命令使之当即生效
#source /etc/profile

四、安装依赖库
#yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel

五、安装autoconf
查看本地的autoconf版本,若是太低则移除
#rpm -qa | grep autoconf
#rpm -e --nodeps autoconf-2.63

得到2.69版本autoconf
#wget ftp:///gnu/autoconf/autoconf-2.
#tar xzvf autoconf-2.
#cd autoconf-2.69

编译并安装
#./configure
#make
#make install

检查一下autoconf是不是2.69版本
#autoconf --version

六、安装autoconf-archive
本人安装的是2018.03.13版本,固然要选择高一些的版本啦
#wget /gnu/autoconf-archive/autoconf-archive-2018.03.
#xz -d autoconf-archive-2018.03.
#tar xvf autoconf-archive-2018.03.
#cd autoconf-archive-2018.03.13

编译并安装
#./configure
#make
#make install

最后一步很关键,必须把m4目录下的文件复制到/usr/share/aclocal/目录下,这些命令后面编译tesseract用获得,不然后面编译tesseract的时候会报command not found错误
#cp ./m4/* /usr/share/aclocal/

也能够去下面的网址下载其余版本,至少应下载2016版本以上吧
/gnu/autoconf-archive/

七、安装leptonica
我安装的是leptonica-1.82.0版本,在安装之前最好也先安装libjpeg-devel、libpng-devel这两个依赖,这两个是tesseract识别jpg和png需要的依赖。

安装步骤:

#yum install libjpeg-devel
#yum install libpng-devel

若不安装,在执行tesseract识别jpg和png时会报如下错误

Tesseract Open Source OCR Engine v3.02.03 with Leptonica
Error in pixReadStreamJpeg:function not present
Error in pixReadStream: jpeg: no pix returned
Error in pixRead: pix not read
Unsupprted image type

然后安装leptonica,步骤如下
#wget /source/leptonica-1.82.
#tar xzvf leptonica-1.82.
#cd leptonica-1.82.0

编译并安装
#./ 
#./configure
#make
#make install

添加环境变量
#vim /etc/profile
最后添加以下内容
export LD_LIBRARY_PATH=$LD_LIBRARY_PAYT:/usr/local/lib
export LIBLEPT_HEADERSDIR=/usr/local/include
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
执行以下命令使之当即生效
#source /etc/profile

执行以下命令,确认有lept输出,若是没有,再检查上面的步骤吧。
#pkg-config --list-all | grep lept

也能够去下面的网址下载其余版本,至少应下载1.74版本以上吧。
/

若./configure 这步出现错误提示,可能时第二步的g++没有安装。

八、安装tesseract
最激动人心的来了,咱们编译并安装tesseract当前最新的版本:4.1.0
#wget /tesseract-ocr/tesseract/archive/4.1. -O tesseract-4.1.
#tar xzvf tesseract-4.1.
#cd tesseract-4.1.0

编译并安装,若是有错误请检查之前的步骤
#./ 
#./configure
#make
#make install

安装完毕查看tesseract版本
#tesseract --version
4.1.0

可执行文件路径:
#which tesseract 
/usr/local/bin/tesseract

语言包的路径:
/usr/local/share/tessdata
目前空空如也

九、下载tesseract语言包
去下面网址下载一些训练好的语言包吧
/tesseract-ocr/tessdata_best
咱们体验的时候只要下载英文和简体中文语言包便可:、chi_sim.traineddata、chi_sim_vert.traineddata,看名称就很容易理解,前者为英文,后两个为简体中文,把这些语言包放到/usr/local/share/tessdata目录下

十、初体验tesseract识别
先体验英文识别,eng_test.jpg是咱们准备的英文文字图片,eng_result.txt为输出结果:
#tesseract eng_test.jpg eng_result --psm 3
#vim eng_result.txt
英文的识别结果:18AX,不是很理想吧,可是要知道这个图片是个验证码,是否是能够破解通常的验证码了!

再体验一下中文识别,chi_sim_test.jpg是咱们准备中文文字图片,chi_sim_result.txt为输出结果:
#tesseract chi_sim_test.jpg chi_sim_result -l chi_sim --psm 3

或  tesseract phototest -l eng

或  tesseract result -l chi_sim

#vim chi_sim_result.txt
查看中文识别结果:益码通付平台,各位朋友也能够识别本身准备的中文图片,不理想的话也不要紧,由于后续咱们本身能够训练本身的语言包了。

下面简单介绍一下经常使用的参数
-l参数表示要用的语言包,chi_sim表示简体中文语言包,默认为英文;
--psm参数能够简单理解成图片中的文字的布局方式,默认为:3
0 = Orientation and script detection (OSD) only.
1 = Automatic page segmentation with OSD.
2 = Automatic page segmentation, but no OSD, or OCR.
3 = Fully automatic page segmentation, but no OSD. (Default)
4 = Assume a single column of text of variable sizes.
5 = Assume a single uniform block of vertically aligned text.
6 = Assume a single uniform block of text.
7 = Treat the image as a single text line.
8 = Treat the image as a single word.
9 = Treat the image as a single word in a circle.
10 = Treat the image as a single character

在windows上项目是可以正常运行的,部署到Linux上后,运行报异常,异常内容为:Unable to load library 'tesseract': Native library (linux-x86-64/libtesseract)

可能是tesseract和leptonica没有安装好。网上有人说需要将/usr/local/lib下相关的tesseract和leptonica的library(.so)的文件复制到 /usr/lib下,但是我试过之后却没有解决。

还有一种说法,在Windows中,需要直接指定到.traineddata所在目录,在Linux中,则需要指定到一个目录,其中包含一个叫做tessdata的文件夹,tessdata内部是.traineddata文件。

在Windows中,("lngData/tessdata");

在Linux中,("lngData");

但是这个情况我没有出现,我任然使用的是("lngData/tessdata");