记录springboot 使用tess4j+ tesseractOcr 实现图片识别及部署到Linux

Tess4j& Tesseract OCR简介

Tess4j& Tesseract OCR简介
Tess4J 是一个基于 Tesseract OCR 引擎的 Java 接口,可以用来识别图像中的文本。Tesseract 是一个由 Google 开发的开源 OCR 引擎,可以识别多种语言的文本。Tess4J 将 Tesseract 引擎的优势和简单性与 Java 的可移植性和易用性相结合,是一个非常强大的 OCR 解决方案。
Tess4J 提供了丰富的 API,可以很方便地进行图像处理和文本识别。它支持多种格式的图像文件,包括 BMP、PNG、JPEG、GIF 和 TIFF 等格式。Tess4J 还可以进行图像预处理,例如裁剪、缩放和二值化等,以提高文本识别的准确性
tess4J Maven 版本:https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j
Tesseract OCR代码库:https://github.com/tesseract-ocr/

简单实现

引入maven依赖

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>4.0.0</version>
</dependency>

添加一个简单的实现方法

        System.out.println("=======================================");
        ITesseract iTesseract = new Tesseract();

        //默认识别英文
        //如果需要识别英文之外的语种,需要指定识别语种,并且需要将对应的语言包放进项目中
        iTesseract.setDatapath("/usr/local/tesseract/share/tessdata");
        iTesseract.setLanguage("chi_sim");
        File img = new File(path);
         long startTime = System.currentTimeMillis();

        //识别结果
        String ocrResult = iTesseract.doOCR(img);

上述代码文件路径对应需求更改

语言库下载

语言库下载地址,选择需要的语言即可,下载后在resources下新建data文件夹
在这里插入图片描述
到这里一个简单的windows环境,ocr图片识别功能就做完了

Linux环境使用

提示:在Linux环境中我们没法开箱即用,需要安装配置相应的环境
首先安装最基本的依赖 ,如缺少依赖后续安装tesseract和识别时会报错

yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel gcc gcc-c++

环境安装配置

由于tess4j是对tesseract的封装,tesseract又依赖于leptonica。所以我们需要先安装好tesseract与leptonica。
tesseract下载地址:https://github.com/tesseract-ocr/tesseract/releases/tag/4.1.1
leptonica下载地址:http://www.leptonica.org/download.html

下载好后放在自己定义好的服务器文件夹中。这里我们放到/opt/下。

安装命令

cd /opt
mkdir  /usr/local/leptonica
tar -xzvf leptonica-1.79.0.tar.gz
cd leptonica-1.79.0
./configure --prefix=/usr/local/leptonica  && make  && make install //这里的安装位置是/usr/local/leptonica ,看自己心情安装

cd /opt
mkdir /usr/local/tesseract
tar -xzvf 4.1.1.tar.gz
cd tesseract-4.1.1
# 必须先运行autogen.sh文件才会有configuer文件
./autogen.sh
# 编译安装到指定文件夹
./configure --prefix=/usr/local/tesseract  && make && make install

配置leptonica环境变量

vim /etc/profile

在开头或者末尾添加 注意替换成自己的安装路径

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/leptonica/lib/pkgconfig
export PKG_CONFIG_PATH
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/leptonica/include/leptonica
export CPLUS_INCLUDE_PATH
C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/leptonica/include/leptonica
export C_INCLUDE_PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/leptonica/lib
export LD_LIBRARY_PATH
LIBRARY_PATH=$LIBRARY_PATH:/usr/local/leptonica/lib
export LIBRARY_PATH
LIBLEPT_HEADERSDIR=/usr/local/leptonica/include/leptonica
export LIBLEPT_HEADERSDIR

配置tesseract环境变量:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/leptonica/lib:/usr/local/tesseract/lib
export LD_LIBRARY_PATH
LIBRARY_PATH=$LIBRARY_PATH:/usr/local/leptonica/lib:/usr/local/tesseract/lib
export LIBRARY_PATH
LIBLEPT_HEADERSDIR=/usr/local/leptonica/include/leptonica
export LIBLEPT_HEADERSDIR


PATH=$PATH:/usr/local/tesseract/bin
export PATH
export TESSDATA_PREFIX=/usr/local/xxx/xxxx  ##注意:该位置是训练库所在文件目录
export PATH=$PATH:$TESSDATA_PREFIX

环境生效:

source /etc/profile

测试是否安装成功:

tesseract --version

出现一下信息即为安装成功
在这里插入图片描述
测试一下识别本地图片:tesseract 222.jpg out -l chi_sim
在这里插入图片描述
springboot 调用代码识别:

在这里插入图片描述

踩坑记录

报错信息:

 Could not initialize class net.sourceforge.tess4j.TessAPI] with root cause

java.lang.ExceptionInInitializerError: Exception java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract':
libtesseract.so: 错误 ELF: ELFCLASS64
libtesseract.so: 错误 ELF: ELFCLASS64
/usr/lib/libtesseract.so.4: 错误 ELF: ELFCLASS64
Native library (linux-x86/libtesseract.so) not found in resource path ([jar:file:/opt/czsj/chuzhou-audit-robot-base-1.1.0.jar!/BOOT-INF/classes!/

jdk 版本装错了 要装64位的

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f7ab74ecef9, pid=5614, tid=0x00007f7adb2fe700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_391) (build 1.8.0_391-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.391-b13 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libtesseract.so+0x26bef9]  ERRCODE::error(char const*, TessErrorLogCode, char const*, ...) const+0x129
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /opt/czsj/hs_err_pid5614.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

jvm报错程序崩溃:
解决方案:好像是因为tess4j 版本和tesseract 版本不匹配 可以更换版本尝试是否能够解决,个人由 4.5.4 配 tesseract 4.0.0 换成了 4.5.1 配 4.1.1 就可以了

完结撒花

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值