tesseract-ocr安装使用

描述:

在centos上安装 tesseract

并在springboot项目中使用

步骤一:安装

确认使用的版本tesseract和test4j版本需要匹配,这里选择最新版 tesseract5.3.3 ,test4j 5.9.0

版本匹配可查看

Releases · nguyenq/tess4j · GitHub

或者 【这个更新不及时】 Tess4J & Lept4J API Documentation

将对于版本的tar.gz包下载,解压 tar -zxvf 包名

tesseract-ocr安装使用_第1张图片

进入解压后的文件夹

1.安装

分开执行

./autogen.sh
./configure
make
sudo make install

2. 配置环境变量

编辑~/.bashrc,加入 export TESSDATA_PREFIX=/usr/share/tesseract  路径为包含tessdata语言包路径

3. 问题

问题:如果在执行./configure报错configure: error: Your compiler does not have the necessary C++17 support! Cannot proceed.,需要升级c++编译器

具体为

wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
tar -zxvf gcc-10.2.0.tar.gz
cd gcc-10.2.0
./contrib/download_prerequisites
./configure
make
sudo make install

问题:在./configure中报错configure: error: Leptonica 1.74 or higher is required. Try to install libleptonica-dev,说明leptonica的版本低于最低要求,需要更新Leptonica,如果yum或者其他包管理工具中有对应版本则直接下载,否则,手动下载并安装

这里安装后一定要配置环境变量,否则系统仍然使用老版本Leptonica

  • 下载并解压
    • Releases · DanBloomberg/leptonica · GitHub
    • tar -zxvf xxx
  • 进入解压包
  • mkdir build
    cd build
    cmake -DLEPTONICA_ROOT=/usr/local ..
    make
    sudo make install

其余问题:

大多都是依赖不完全,比如 tensorflow,ICU版本过低等

在./configure中日志 checking for libarchive... no checking for ICU_UC... no checking for ICU_I18N... no,这个说明需要添加icu_uc的依赖,用于对unicode的支持,同样通过yum或者编译返回安装

wget https://github.com/unicode-org/icu/releases/download/release-69-1/icu4c-69_1-src.tgz
tar -xzvf icu4c-69_1-src.tgz
cd icu/source
./configure --prefix=/usr/local/icu
make
sudo make install

其余安装方式一[失败]:

因为使用编译方式安装需要自己配置依赖,比如libtiff、Leptonica等

如果需要快速安装,则可以直接使用yum 安装,但是这里库中只有3.0版本的

这里找到了snap安装方式,里面有5.0版本的【这个安装方式暂时没找到如何添加语言包】

具体过程为:

  1. 下载snap
    yum install epel-release
    yum install snapd

  2. 启动服务
    systemctl enable --now snapd.socket

    如果查询服务状态是inactive (dead),那么重启服务,如果仍然dead,尝试重新生成密钥

    sudo snap install snapd --edge
    sudo systemctl restart snapd

  3. 安装tesseract
    snap install --edge tesseract

  4. 查看版本
    # 1.查看snap安装位置
    which snap
    /usr/bin/snap
    
    # 2.查看tesseract版本
     /usr/bin/snap run tesseract -v
    tesseract 5.0.0-alpha-20201224
     leptonica-1.74.2
      libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8
    
     Found AVX512BW
     Found AVX512F
     Found AVX2
     Found AVX
     Found FMA
     Found SSE
     Found OpenMP 201307
    
    # 3.将/usr/bin/snap run配置到环境变量中
    #   在~/.bashrc中加入下面命令
    alias tesseract='/usr/bin/snap run tesseract'
    
    # 4.在此检查版本
    tesseract -v
    
    tesseract 5.0.0-alpha-20201224
     leptonica-1.74.2
      libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8
    
     Found AVX512BW
     Found AVX512F
     Found AVX2
     Found AVX
     Found FMA
     Found SSE
     Found OpenMP 201307

其余安装方式二[成功]:

使用conda进行安装

1 下载conda



Free Download | Anaconda

tesseract-ocr安装使用_第2张图片

将下载的脚本在目标机中执行

# 执行安装脚本,途中都选yes
bash Anaconda3-2023.09-0-Linux-x86_64.sh

# 激活
source ~/.bashrc

# 验证
conda --version

2 下载tesseract

版本无法下载最新版,目前是5.2版本

# 安装
conda install -c conda-forge tesseract

# 验证
tesseract --version

步骤二:语言包下载

1 下载

安装中文简体语言包,下载后将其放到/usr/share/tesseract/tessdata目录下

wget https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata

2 查看

# tesseract --list-langs
List of available languages in "/usr/share/tesseract/tessdata/" (1):
chi_sim

3 验证

保存一张图片

然后执行命令 

这将进行识别图片并将结果保存到文本文件中

tesseract your_image.png output.txt

步骤三:在springboot中使用

思路:

通过docker容器卷加载conda环境到容器中,并配置环境变量,让springboot使用宿主机上的tesseract

1 maven依赖

具体可参见步骤一的版本依赖选择

        
            net.sourceforge.tess4j
            tess4j
            5.3.0
        

2 示例

将识别test.png并返回识别结果

        String imagePath = "/usr/share/tesseract/test.png";
        File imageFile = new File(imagePath);
        ITesseract tesseract = new Tesseract();
        tesseract.setDatapath("/usr/share/tesseract/tessdata"); // 设置 Tesseract 数据目录,根据实际情况修改
        tesseract.setLanguage("chi_sim"); // 设置中文语言包
        try {
            String result = tesseract.doOCR(imageFile);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
            return "Error during OCR processing";
        }

3 镜像打包

conda版

Dockerfile中将conda的路径配置到环境变量中,将conda的lib也加入,将语言包路径加入环境变量

如果通过编译安装的tesseract,则将tesseract可执行路径添加到环境变量

FROM eclipse-temurin:8-jre
LABEL org.opencontainers.image.authors="[email protected]"


# 设置 Tesseract 可执行文件路径添加到 PATH
ENV PATH="/root/anaconda3/bin:${PATH}"
ENV LD_LIBRARY_PATH="/root/anaconda3/lib:${LD_LIBRARY_PATH}"
ENV TESSDATA_PREFIX="/usr/share/tesseract/"

COPY remarkback.jar /usr/local/
WORKDIR /usr/local
CMD ["java", "-jar", "remarkback.jar"]
在docker compose 文件中加conda通过容器卷加入到容器,将语言包也加入到容器
    volumes:
      - /root/anaconda3:/root/anaconda3
      - /usr/share/tesseract/:/usr/share/tesseract/
编译版

通过编译安装的tesseract,需要设置环境变量略微复杂一些

1. 先将需要的so文件拷贝到容器卷文件夹中

将该文件夹下路径拷贝到容器卷文件夹下 【容器卷文件夹:待会需要加载到容器中,并且是添加到path路径下】

#/home/opencv_so 是加载到容器中的可执行位置
cp -r ./* /home/opencv_so 

将libgomp.so.1也拷贝进去【后续运行测试时可能也会报错,比如什么文件不存在,那么就在物理机拷贝到容器卷文件中再测试】

2. docker file设置环境变量 

so文件需要配置

# 1.通过命令查看安装路径
whereis tesseract
#   说明执行路径位置和 语言包位置
tesseract: /usr/local/bin/tesseract /usr/share/tesseract

# 2.docker file 配置环境变量
# 设置so文件夹位置,容器内
ENV OPENCV_DIR /usr/local/opencv
RUN mkdir -p $OPENCV_DIR
# 本地库文件环境变量
ENV LD_LIBRARY_PATH $OPENCV_DIR/lib64:$LD_LIBRARY_PATH
#   tesseract环境变量
ENV PATH="/usr/bin/tesseract:${PATH}"
#   tesseract数据路径
ENV TESSDATA_PREFIX="/usr/share/tesseract/"
3. docker compose 
      # so可执行文件的位置,和docker file需要一致
      - /home/docker/remark/back/img/opencv_so:/usr/local/opencv/lib64
      # tesseract命令行位置
      - /usr/bin/tesseract:/usr/bin/tesseract
      # tesseract 语言包位置
      - /usr/share/tesseract:/usr/share/tesseract

4 验证

进入运行的容器,查看是否能正常使用tesseract

docker exec -it ecfaf8883424 bash
root@ecfaf8883424:/usr/local# tesseract -v
tesseract 5.2.0
 leptonica-1.82.0
  libgif 5.2.1 : libjpeg 9e : libpng 1.6.39 : libtiff 4.5.1 : zlib 1.2.13 : libwebp 1.2.4 : libopenjp2 2.4.0
 Found AVX512BW
 Found AVX512F
 Found AVX2
 Found AVX
 Found FMA
 Found SSE4.1
 Found OpenMP 201511
 Found libarchive 3.6.2 zlib/1.2.13 liblzma/5.4.2 bz2lib/1.0.8 liblz4/1.9.4 libzstd/1.5.2

再调用接口,查看是否能正常返回

tesseract-ocr安装使用_第3张图片

你可能感兴趣的:(其它,ocr,spring)