在Centos服务器应用tess4j实现ORC图片识别
tess4j简介
Tesseract-OCR支持多语言识别(需要引入响应的语言库),并且开源和提供全套的训练工具,是快速低成本开发的首选。Tess4J是Tesseract在Java PC上的应用。在英文和数字识别中效果还是相当不错的,在中文识别中,无论速度还是识别率还是较弱,如果有条件可以针对场景进行训练,会获得较好结果。
tess4j对win的支持度很高,不需要额外的安装其他插件。但是我们多数应用服务都是部署在linux服务器中,本文就是针对这需求,重点讲解如何在centos服务器使用tess4j进行orc识别。
Tesseract安装
- 编译环境
通过命令安装编译环境,通常情况下,服务器都具备该编译环境,如果已经具备可以跳过此步骤。
yum install gcc gcc-c++ make
- 安装 autoconf automake libtool和libjpeg-devel libpng-devel libtiff-devel zlib-devel
yum install autoconf automake libtool
yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel
- 安装依赖的Leptonica库,依次执行以下命令安装,leptonca版本可以根据实际情况更换,资源地址
letonica版本资源
wget https://github.com/DanBloomberg/leptonica/releases/download/1.82.0/leptonica-1.82.0.tar.gz
tar -xzvf leptonica-1.82.0.tar.gz
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
- 安装 安装Tesseract-OCR,依次执行以下命令完成安装
wget https://github.com/tesseract-ocr/tesseract/archive/refs/tags/5.2.0.tar.gz
tar -xzvf tesseract-5.2.0.tar.gz
cd tesseract-5.2.0/
./autogen.sh
./configure
make && make install
sudo ldconfig
ps:在执行autogen.sh 时,我在另外一台服务器上遇到错误
configure.ac:8: error: Autoconf version 2.69 or higher is required
提示我的 Autoconf 版本太低,需要安装2.69或更高的版本,autoconf安装命令如下
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz
tar -zxvf autoconf-2.71.tar.gz
cd autoconf-2.71
./configure
make && make install
安装完成之后 重新执行
./autogen.sh
./configure
make && make install
sudo ldconfig
- 复制tess4j要的linux依赖库链接
cp /usr/local/lib/*.so.* /usr/lib64/
- 下载所需语言包上传到 /usr/local/share/tessdata
语言包下载地址 - 安装完成后可以执行 tesseract --version 测试安装结果
Java代码实现
- 在maven项目中引入tess4j的资源
<!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j -->
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>5.3.0</version>
</dependency>
- java代码实现demo
ITesseract instance = new Tesseract(); // JNA Interface Mapping
//tess4jDataPath 语言包路径
instance.setDatapath("/usr/local/share/tessdata");
//语言类型 chi_sim 中文 eng 英文
instance.setLanguage("chi_sim");
// 获取图片文件信息
String content =instance.doOCR(imageFile);
结语
纸上得来终觉浅,绝知此事要躬行。