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,一经查实,立即删除!

相关文章

使用 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","…

ArkTS入门

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

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

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

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;也可接入本…

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;对文件进行加密是一种常见的数据安全保护手段。加密后的文件只能在单位内部电脑上…

如何开发嵌入式中断控制系统?

目录 1、中断向量表 2、NVIC&#xff08;内嵌向量中断控制器&#xff09; 3、中断使能 4、中断服务函数 在嵌入式开发过程中&#xff0c;中断处理是一个不可或缺的环节。本篇博文将以STM32微控制器为核心案例&#xff0c;深入解析中断处理在MCU开发中的关键步骤和策略。主要有以…

mysql自动安装脚本(快速部署mysql)

mysql_install - 适用于生产环境单实例快速部署 MySQL8.0 自动安装脚本 mysql8_install.sh&#xff08;执行前修改一下脚本里的配置参数&#xff0c;改成你自己的&#xff09;&#xff08;博客末尾&#xff09; my_test.cnf&#xff08;博客末尾&#xff09;&#xff08;这个…

力扣24 两两交换链表中的节点 Java版本

文章目录 题目解题方法Code 题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;hea…

【五】Python 代理模式

文章目录 5.1 代理模式概述5.1.1 代理介绍5.1.2 代理模式的作用 5.2 代理模式的UML类图5.3 了解不同类型的代理5.3.1虚拟代理5.3.2 远程代理5.3.3 保护代理5.3.4 智能代理 5.4 现实世界中的代理模式5.5 代理模式的优点5.6 门面模式和代理模式之间的比较 5.1 代理模式概述 5.1.…

VSCode 配置自动生成头文件

相关文章 VSCode 开发C/C实用插件分享——codegeex VSCode 开发C/C实用插件分享——koroFileHeader VSCode 配置自动生成头文件 一、snippets二、配置步骤三、效果展示 一、snippets 相信大家对C、C都头文件都不陌生&#xff0c;都会发现每个头文件都会包括下面的这些格式&…

Cent OS7 磁盘挂载:扩展存储空间和自动挂载

文章目录 &#xff08;1&#xff09;概述&#xff08;2&#xff09;查看磁盘使用情况&#xff08;3&#xff09;VMware虚拟机挂载磁盘&#xff08;4&#xff09;物理机磁盘挂载&#xff08;5&#xff09;ntfs硬盘处理 &#xff08;1&#xff09;概述 在Linux系统中&#xff0c…

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.共生生物算法4.实验参数设定5.算法结果6.…