Tess4J -4.0.2- Linux 实践 [解决:Tess4J - Native library (linux-x86-64/libtesseract.so) not found in reso...

本文详细介绍了如何在CentOS 7上配置和使用Tess4J,包括Tesseract和Leptonica的安装,解决Tess4J找不到Linux native library的问题,以及设置Tesseract的数据目录。强调了版本选择的重要性,特别是Tess4J 4.0.2与Tesseract 4.0.0-beta.1的配合。此外,还讨论了训练数据的使用和获取。
摘要由CSDN通过智能技术生成

Tess4J是Tesseract的Java JNA wrapper。本文介绍了在CentOS 7 操作系统中使用Tess4J的步骤及注意事项。在正式开始之前,先花一点篇幅,对相关的技术作一简要介绍。

一点点背景

Tesseract

Tesseract 是一个著名的开源OCR引擎,支持100多种语言,可以开箱即用。还可以通过训练方式支持更多语言。Tesseract诞生于1984年,来自HP公司,2005年开源。自2006年起,由谷歌接手开发。截止目前,最新的稳定版本是2017年6月1日发布的3.05.01。还有一只比较活跃的基于LSTM(长短期记忆网络,是一种时间递归神经网络)的4.0版本,还在研发中,最新释放的是2018年6月26日的4.0.0-beta.3。Tesseract由C++开发。

站点:

https://github.com/tesseract-ocr/tesseract

Leptonica

Tesseract作为OCR引擎,避免不了使用图像处理。Tesseract使用的图像处理主要由leptonica提供。Leptonica 包含众多图像处理和图像分析相关的功能。

站点:

http://www.leptonica.com/

Java JNA Wrapper

JNA 是 Java Native Access的缩写,顾名思义,是一个实现Java调用操作系统Native应用的库。提起Java本地调用,大家自然联想的JNI,但JNI使用过程十分复杂,会让人望而生畏。JNA则采取更加自然的方式,为Java应用提供调用本地应用的支持。

站点:

https://github.com/java-native-access/jna

Tess4J

Tess4J通过Java JNA Wrapper,提供了Java的Tesseract API,同时还提供了Windows 32bit和64bit的Tesseract的DLL以及一些样例图像。通过Tess4J,可以在Windows下非常便利的通过Java使用Tesseract。对于Linux、MAC等其他操作系统,则需要自行构建Tesseract才可以使用Tess4J。

也就是说,原生的Tess4J并不是跨平台的,仅仅是对Windows开箱即用的。

这也是本文写作的初衷,记录在Linux环境中,使用Tess4J的步骤及淌过的坑。

本文使用的技术版本

为什么要单独强调版本?长期混迹开源坑的同志们一定了解一个事实:大部分的开源项目其质量(功能可用性,文档正确性、更新及时性)相对一般,在圈子里混,必须具备在众多繁杂的信息中去伪存真的能力,在社区里大声疾呼求关注的技巧,极强的动手能力以及百折不挠的精神。。。

对于某些技术问题,谷歌出来的结果中,很大一部分是无效的,会浪费大量的时间,甚至走入歧途。但同众多作者交流后发现,绝大部分这类情况是有文章介绍方案不完整,或者不够严谨导致的。

因此,我认为,作为分享的每一个实践,需要具备可重复操作的基本要求。所以,我会尽量精确的重复我实践过程使用的软件及环境的版本,希望对大家有所帮助。

Tess4J:4.0.2

Tesseract:4.0.0-beta.1

Leptonica:1.76.0

JDK:1.8 Update 102 64bit

运行环境:CentOS 7 (内核:3.10.0-862.3.3.el7.x86_64)64bit

                  GCC:4.8.5

                  Clang:3.4

开发环境:Windows 10 64bit

为何这样选?

这里的坑是,不能根据自己的喜好,使用新版本。我使用过Tesseract 4.0.0-beta.3,但运行JVM会报出Fatal Error最后自行退出,看报出的错误来判断,大概是Tesseract中某些函数签名变化,Tess4J中签名与之不匹配所致。

还记得官方文档(https://github.com/tesseract-ocr/tesseract/wiki)吗?

官方Wiki提到,Linux的so库,可以通过安装预先编译的包,如果按照Wiki操作,便会自动安装最新版本。我也曾经尝试通过yum列表旧版本安装,发现即使所谓的旧版本,也会导致Tess4J运行时报错。(通过yum下载并自动安装的rpm包如下所示)

这里必须根据Tess4J适配的版本来选择。

Tess4J的versionchanges.txt中描述了最近几个版本的变化:

Version 4.0.0 (28 April 2018)
Upgrade to Tesseract 4.0.0-beta.1 (45bb942)
- Update Lept4J to 1.9.3 (Leptonica 1.75.3)

Version 4.0.1 (2 May 2018)
- Fix a path issue when extracting resources from JAR to temp directory on Windows server

Version 4.0.2 (3 May 2018)
- Replace JNA string constant Platform.RESOURCE_PREFIX
- Update jai-imageio url
- Update Lept4J to 1.9.4

可见,最新版的Tess4J,仅对Tesseract 4.0.0-beta.1进行过适配,因此产生了上面描述的版本组合。鉴于无法确定预先构建的包哪个是从Tesseract 4.0.0-beta.1构建而来,因此只能通过源码自行构建。

构建Tesseract

1 修改yum的Repo

可能是我所在的环境网络非常差,yum默认会使用mirror,但绝大部分mirror连接不上,会导致下载过程在大量无效的mirror尝试中进行,非常浪费时间。

因此,我关闭了yum的fast mirror插件(/etc/yum/pluginconf.d),另外修改了CentOS-Base.repo。

2 安装必备包

1
2
3
yum -y update
yum -y  install  libstdc++ autoconf automake libtool autoconf-archive pkg-config  gcc  gcc -c++  make  libjpeg-devel libpng-devel libtiff-devel zlib-devel
yum group  install  -y  "Development Tools"

 注意:autoconf-archive 是官方说明中都没有提到的必备组件。

3 下载源码

Leptonica

http://www.leptonica.com/source/leptonica-1.76.0.tar.gz

Tes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值