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:v1


ENV TIME_ZONE Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime


# 部署应用
COPY ./app.jar /app.jar
ADD ./tessdata /tessdata

EXPOSE 9078

ENTRYPOINT ["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 测试

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lswsmj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值