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 包名

进入解压后的文件夹

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-20201224leptonica-1.74.2libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8Found AVX512BWFound AVX512FFound AVX2Found AVXFound FMAFound SSEFound OpenMP 201307# 3.将/usr/bin/snap run配置到环境变量中
    #   在~/.bashrc中加入下面命令
    alias tesseract='/usr/bin/snap run tesseract'# 4.在此检查版本
    tesseract -vtesseract 5.0.0-alpha-20201224leptonica-1.74.2libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8Found AVX512BWFound AVX512FFound AVX2Found AVXFound FMAFound SSEFound 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.0leptonica-1.82.0libgif 5.2.1 : libjpeg 9e : libpng 1.6.39 : libtiff 4.5.1 : zlib 1.2.13 : libwebp 1.2.4 : libopenjp2 2.4.0Found AVX512BWFound AVX512FFound AVX2Found AVXFound FMAFound SSE4.1Found OpenMP 201511Found libarchive 3.6.2 zlib/1.2.13 liblzma/5.4.2 bz2lib/1.0.8 liblz4/1.9.4 libzstd/1.5.2

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis之缓存

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

使用 iperf 和 iftop 测试网络带宽

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

CSS中神奇的filter属性

CSS是Web开发中不可或缺的一部分&#xff0c;它可以帮助开发者在页面上添加各种各样的样式和效果。其中一个比较神奇的CSS属性就是filter&#xff0c;它可以让我们实现各种有趣的图形处理效果。 一、filter属性的基础 filter属性是CSS中用于对元素进行图形效果处理的属性之一…

C语言—每日选择题—Day47

第一题 1. 以下逗号表达式的值为&#xff08;&#xff09; (x 4 * 5, x * 5), x 25 A&#xff1a;25 B&#xff1a;20 C&#xff1a;100 D&#xff1a;45 答案及解析 D 本题考查的就是逗号表达式&#xff0c;逗号表达式是依次计算每个表达式&#xff0c;但是只输出最后一个表…

【算法题】开源项目热度榜单(js)

解法 const lines ["4","8 6 2 8 6","camila 66 70 46 158 80","victoria 94 76 86 189 211","athony 29 17 83 21 48","emily 53 97 1 19 218", ]; const lines2 ["5","5 6 6 1 2","…

CSS BFC详解

概念 BFC&#xff08;Block Formatting Context&#xff09;是CSS中的一个概念&#xff0c;用于描述一个独立的渲染区域&#xff0c;其中的元素按照一定规则进行布局和渲染。 BFC具有以下特性和作用 清除浮动&#xff1a;当一个元素的float属性设置为left或right时&#xff…

ArkTS入门

代码结构分析 struct Index{ } 「自定义组件&#xff1a;可复用的UI单元」 xxx 「装饰器&#xff1a;用来装饰类结构、方法、变量」 Entry 标记当前组件是入口组件&#xff08;该组件可被独立访问&#xff0c;通俗来讲&#xff1a;它自己就是一个页面&#xff09;Component 用…

运维开发实践 - Kubernetes - 用户权限管控

1.背景 当我们有一个k8s 集群&#xff0c;并且需要将该集群提供给用户使用的时候&#xff0c;我们当然只希望用户只能操作我们预先定义好的资源&#xff0c;即权限管控&#xff0c;RBAC 2. 介绍 Kubernetes中有2种权限管控&#xff0c;一种是为Pod中的应用提供权限管理&…

tuxera2023破解版免费下载 NTFS for Mac读写工具(附序列号)

Tuxera ntfs 2023 破解安装包是一个mac读写ntfs磁盘工具允许您访问&#xff0c;它允许您访问NFTS 驱动器上的文件。 该应用程序提供访问访问Mac 设备中NFTS 格式文件的驱动力&#xff0c;因此您有权基于格式文件进行无困难的访问Windows 数据。 在发生电力灾难或断电时使用防损…

协议到底是什么?

一、为什么需要协议呢&#xff1f; 我们都知道在计算机的世界里只有0和1&#xff0c;那么计算机是怎么从一堆1、0组成的数据中识别出特定的内容的呢&#xff1f;这就需要使用到协议。协议是指两台或者多台设备之间进行通信所必须共同遵守的规定或规则&#xff0c;可以形象的理解…

Signal EM的流程与分析

RedhawkTM 提供了一种在设计中分析Power EM和SignalEM的单一平台方法。Power EM通常作为Static IR和Dynamic IR分析的组成部分进行。Signal EM分析是单独进行分析的,检查设计中所有信号线和过孔的平均(单向或双向)、RMS和峰值电流密度【1】。 1 SignalEM 流程介绍 如图7…

ArrayList集合的两个实例应用,有趣的洗牌算法与杨辉三角

本节课的内容&#xff0c;就让我们来学习一下ArrayList集合的应用&#xff0c;ArrayList的本质就是一个顺序表&#xff0c;那下面一起来学习吧 目录 一、杨辉三角 1.题目详情及链接 2.剖析题目 3.思路及代码 二、洗牌算法 1.创造牌对象 2.创造一副牌 3.洗牌操作 4.发…

人工智能(pytorch)搭建模型22-基于pytorch搭建SimpleBaseline(人体关键点检测)模型,并详细介绍该网络模型与代码实现

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型22-基于pytorch搭建SimpleBaseline(人体关键点检测)模型&#xff0c;并详细介绍该网络模型与代码实现。本文将介绍关于SimpleBaseline模型的原理&#xff0c;以及利用pytorch框架搭建模型…

lwIP 细节之三:errf 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程&#xff0c;其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数&#xff0c;注册到协议栈&#xff0c;在适当的时候&#xff0c;由协议栈自动调用&#xff0c;所以称为回调。 注&#xff1a;除非特别说明&#xff0c;以下内…

大模型应用_chuanhu川虎

https://github.com/GaiZhenbiao/ChuanhuChatGPT 1 功能 整体功能&#xff0c;想解决什么问题 官网说明&#xff1a;为ChatGPT等多种LLM提供了一个轻快好用的Web图形界面和众多附加功能 当前解决了什么问题&#xff0c;哪些问题解决不了 支持多种大模型&#xff08;也可接入本…

颠倒二进制位(力扣

uint32_t reverseBits(uint32_t n) {int i0,nums[32]{0};while(n){nums[i]n%2;n/2;}i0;while(i<32&&!nums[i])i;while(i<32)nn*2nums[i];return n; }

【华为OD】依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列

题目描述主管期望你来实现英文输入法单词联想功能需求如下:依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀注意1.英文单词联想时,区分大小写2.缩略形式如"dont",判定…

Matlab程序设计

成绩设计 输入一个成绩&#xff0c;判定等级90-100优秀&#xff0c;80-89良好&#xff0c;70-79中等&#xff0c;60-69及格。低于60不合格。 ainput("请输入成绩&#xff1a;") if a>90&a<100disp(优秀) elseif a>80&a<89disp(良好) elseif a&…

Pytorch学习概述

目录 学习目标人工智能1. 智能&#xff08;Intelligence&#xff09;1.1 人类智能1.2 机器学习&#xff08;人工智能&#xff09;1.3 深度学习1.4 学习系统的发展历程传统的机器学习策略 2. 传统机器学习算法的一些挑战3. 神经网络的简要历史3.1 Back Propagation&#xff08;反…

公司怎么防止办公文件数据\资料外泄?

PC访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 公司可以采取以下措施来防止办公文件数据和资料外泄&#xff1a; 文件加密&#xff1a;对文件进行加密是一种常见的数据安全保护手段。加密后的文件只能在单位内部电脑上…