1.首先遇到的是版本不兼容问题:
tess4j 与Tesseract版本不兼容,最终tess4j 5.16.0,Tesseract 5.3.0
2.为了安装Tesseract 5.3.0又遇到各种问题:
Tesseract官网最新版好像是5.8,想要安装Tesseract 5.3.0只能通过源码本地编译,编译过程又需要安装各种前置工具,一通折腾,最终Tesseract 5.3.0安装成功,在终端输入
Tesseract --version
得到
tesseract 5.3.0
leptonica-1.85.0
libgif 5.2.2 : libjpeg 8d (libjpeg-turbo 3.0.4) : libpng 1.6.50 : libtiff 4.7.0 : zlib 1.2.12 : libwebp 1.5.0 : libopenjp2 2.5.3
Found NEON
Found libcurl/8.7.1 SecureTransport (LibreSSL/3.3.6) zlib/1.2.12 nghttp2/1.64.0
3.JNA又不兼容了
最终解决如下:
<!-- OCR识别(Tesseract Java绑定) -->
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>5.16.0</version> <!-- 或更高的 6.x 版本 -->
<!-- 排除自带的JNA依赖 -->
<exclusions>
<exclusion>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 手动添加兼容版本的JNA -->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.13.0</version> <!-- 与Tess4J 5.16.0兼容的版本 -->
</dependency>
4.加载libtesseract.dylib、libleptonica.dylib失败
##查找libtesseract.dylib的路径
find / -name "libtesseract.dylib" 2>/dev/null
##查找libleptonica.dylib的路径
find / -name "libleptonica.dylib" 2>/dev/null
最终查到:
libtesseract.dylib路径:/usr/local/lib/libtesseract.dylib
libleptonica.dylib路径:/opt/homebrew/lib/libleptonica.dylib
于是在代码中指定Tesseract库路径:
private String doOcr(BufferedImage image, String lang) throws TesseractException {
System.setProperty("jna.library.path", "/usr/local/lib:/opt/homebrew/lib"); // 替换为实际路径
ITesseract tesseract = new Tesseract();
tesseract.setDatapath("/usr/local/share/tessdata/"); // 替换为你的语言包路径
tesseract.setLanguage(lang); // 语言参数:eng(英文)、chi_sim(简体中文)
return tesseract.doOCR(image);
}