Linux上跑使用Tesseract-OCR技术的Tess4j踩的坑

在Linux系统中,使用Tess4j结合Tesseract-OCR进行图像识别时,遇到动态链接库加载问题。在Windows上运行正常,但在Linux上,Tess4j无法自动加载liblept.so.5导致识别失败。解决方案包括将liblept.so文件放入/usr/local/lib目录,并在/etc/profile中设置LC_ALL=C,然后重新加载配置。尽管如此,仍存在Tomcat崩溃的问题,原因待查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Java通过Tess4j使用Tesseract-OCR技术时,须加载对应操作系统所使用的动态链接文件。在Linux下是.so文件,而在Win下是.dll文件。官方规定可以将这些文件以特定的命名及路径放置在项目的classpath路径下,例如这个样子

这样, 系统在要加载Tesseract时会先把动态链接库加载到内存中以便使用,这种做法在Win上跑是没有问题的,项目启动Tess4j会自动去Classpath下找到动态链接库并加载进内存。但在Linux上就不同了,Linux下Tess4j虽然会去Classpath下加载libtesseratc.so文件,但liblept.so文件并不会自动加载,这样在调用Tesseract类中的方法doOCR进行图像识别时就会报错。错误信息大概是这样

ERROR 16902 --- [nio-8080-exec-3] o.s.b.w.servlet.support.ErrorPageFilter  : Forwarding to error page from request [/imageToText] due to exception [Could not initialize class net.sourceforge.tess4j.TessAPI]

或者是

liblept.so.5: cannot open shared object file: No such file or directory

大致意思就是加载liblept.so.5的类库失败了,所以调用失败了。

解决方案:

1. 在服务器上将liblept.so文件放到/usr/local/lib下(也可以命名不为liblept.so,可根据报错信息调整为相应的命名文件始终为此文件),这里的动态链接会被加载。而classpath下的Linux-x86-64下只

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值