tesseract-ocr安装使用

2023-12-13 13:19:33

描述:

在centos上安装?tesseract

并在springboot项目中使用

步骤一:安装

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

版本匹配可查看

Releases · nguyenq/tess4j · GitHub

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

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

?

进入解压后的文件夹

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

其余问题:

大多都是依赖不完全,比如?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

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

# 执行安装脚本,途中都选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依赖

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

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

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 镜像打包

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

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

FROM eclipse-temurin:8-jre
LABEL org.opencontainers.image.authors="fooleryang@139.com"


# 设置 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/
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

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

文章来源:https://blog.csdn.net/hey_lie/article/details/134946317
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。