欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Java进行图片识别文字

Java进行图片识别文字

2025/3/1 10:41:25 来源:https://blog.csdn.net/u010142228/article/details/145900349  浏览:    关键词:Java进行图片识别文字

对比了apache的tika以及Tesseract,发现同样的图片,Tesseract识别率更高,所以采用Tesseract识别。

注意:Windows环境可以在没有安装Tesseract引擎的情况下运行,Linux环境必须安装Tesseract引擎

1.Windows

1.1 添加tess4j依赖

<dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>5.11.0</version>
</dependency>

1.2 下载训练文件

chi_sim.traineddata、eng.traineddata,

下载地址:GitHub - tesseract-ocr/tessdata: Trained models with fast variant of the "best" LSTM models + legacy models

1.3 编写代码

String imageBase64 = Base64后的图片信息;
String imageText = "";
try {ITesseract tesseract = new Tesseract();tesseract.setDatapath("***"); //这里是训练文件所在的路径tesseract.setLanguage("chi_sim");imageText = tesseract.doOCR(ImgUtil.toImage(imageBase64));log.debug("ocr={}", imageText);
} catch (Exception e) {log.error("Tesseract解析图片出现异常", e);throw new AiBusinessException("Tesseract解析图片出现异常", e);
}

1.4 测试

修改对应的代码,运行测试程序就可以查看运行结果了。

2.Linux

因为服务是使用Docker发布的,所以需要将Tesseract引擎安装在docker镜像中。

2.1 编写Dockerfile

# 使用官方支持Java8的Alpine镜像(2025年验证有效)
FROM eclipse-temurin:8-jdk-alpine# 安装glibc兼容层(必须步骤)
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \&& wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r3/glibc-2.35-r3.apk \&& apk add --no-cache glibc-2.35-r3.apk# 安装Tesseract OCR组件
RUN apk add --no-cache \tesseract-ocr=5.0.1-r0 \tesseract-ocr-data-eng=4.1.3-r0 \tesseract-ocr-data-chi_sim=4.1.3-r0 \leptonica-dev=1.82.0-r0 \libstdc++=12.2.1_git20220924-r4# 强制创建符号链接(Alpine特有路径)
RUN ln -sv /usr/lib/libtesseract.so.5 /usr/lib/libtesseract.so# 配置环境变量
ENV LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH"

2.2 打包镜像

这个需要较长时间,我本地执行了10分钟:

docker build -t tesseract-jdk8:v1 .

2.3 制作应用镜像

将SpringBoot应用打好jar包,并将训练文件放在tessdata目录下,编写如下应用Dockerfile

FROM tesseract-jdk8:v1ENV TIME_ZONE Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime# 部署应用
COPY ./app.jar /app.jar
ADD ./tessdata /tessdataEXPOSE 9078ENTRYPOINT ["java","-Xmx512m","-Xms512m","-XX:+PrintGCDetails","-jar","/app.jar"]
docker build -t tesseract-test:v1 .

2.4 运行docker服务

docker run -d -p 9078:9078 --name tesseract-test tesseract-test

2.5 测试

测试在发布后的服务能否进行图片文字识别

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词