- tess4j简介
- Tesseract安装
- Java代码实现
- 结语
Tesseract-OCR支持多语言识别(需要引入响应的语言库),并且开源和提供全套的训练工具,是快速低成本开发的首选。Tess4J是Tesseract在Java PC上的应用。在英文和数字识别中效果还是相当不错的,在中文识别中,无论速度还是识别率还是较弱,如果有条件可以针对场景进行训练,会获得较好结果。
tess4j对win的支持度很高,不需要额外的安装其他插件。但是我们多数应用服务都是部署在linux服务器中,本文就是针对这需求,重点讲解如何在centos服务器使用tess4j进行orc识别。
- 编译环境
通过命令安装编译环境,通常情况下,服务器都具备该编译环境,如果已经具备可以跳过此步骤。
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 测试安装结果
- 在maven项目中引入tess4j的资源
net.sourceforge.tess4j
tess4j
5.3.0
- 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);
结语
纸上得来终觉浅,绝知此事要躬行。



