Spring Boot 集成 tess4j 实现图片识别文本
前言
tesseract是一个开源的光学字符识别(OCR)引擎,它可以将图像中的文字转换为计算机可读的文本。支持多种语言和书面语言,并且可以在命令行中执行。它是一个流行的开源OCR工具,可以在许多不同的操作系统上运行。
Tess4J是一个基于Tesseract OCR引擎的Java接口,可以用来识别图像中的文本,说白了,就是封装了它的API,让Java可以直接调用。
一、安装 tesseract (OCR)
安装链接:Index of /tesseract (uni-mannheim.de)

二、下载训练数据
通过网盘分享的文件:tessdata各语言集合包.zip
链接: https://pan.baidu.com/s/13oPR2r7qOE6lt6SgbpWOQA 提取码: uaaw
三、创建springboot项目
1、导入依赖
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>5.3.0</version>
</dependency>
2、编写配置类
package com.songwp.config; import net.sourceforge.tess4j.Tesseract;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; /**
* @ClassName:TesseractOcrConfig
* @Description: ocr配置类
* @Author: songwp
* @Date: 2025/6/29 19:24
*/
@Configuration
public class TesseractOcrConfig { @Value("${tess4j.data-path}")
private String dataPath; @Value("${tess4j.language}")
private String language; @Bean
public Tesseract tesseract() { Tesseract tesseract = new Tesseract();
// 设置训练数据文件夹路径
tesseract.setDatapath(dataPath);
// 设置为中文简体
tesseract.setLanguage(language);
return tesseract;
}
}
3、编写controller
package com.songwp.controller; import com.songwp.service.OcrService;
import lombok.extern.slf4j.Slf4j;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; /**
* @ClassName:OcrController
* @Description: ocr识别controller
* @Author: songwp
* @Date: 2025/6/29 18:40
*/
@RestController
@RequestMapping("/ocr")
@Slf4j
public class OcrController { private final OcrService ocrService; public OcrController(OcrService ocrService) {
this.ocrService = ocrService;
} @PostMapping(value = "/recognize", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String recognizeImage(@RequestParam("file") MultipartFile file) throws TesseractException, IOException { log.info(ocrService.recognizeText(file));
// 调用OcrService中的方法进行文字识别
return ocrService.recognizeText(file);
}
}
5、编写service
package com.songwp.service; import net.sourceforge.tess4j.TesseractException;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; /**
* @ClassName:OcrService
* @Description: ocr识别接口
* @Author: songwp
* @Date: 2025/6/29 19:27
*/
public interface OcrService { public String recognizeText(MultipartFile imageFile) throws IOException, TesseractException;
}
5、编写service实现类
package com.songwp.service.impl; import com.songwp.service.OcrService;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream; /**
* @ClassName:OcrServiceImpl
* @Description: ocr识别实现类
* @Author: songwp
* @Date: 2025/6/29 19:28
*/
@Service
public class OcrServiceImpl implements OcrService {
private final Tesseract tesseract; public OcrServiceImpl(Tesseract tesseract) {
this.tesseract = tesseract;
} /**
*
* @param imageFile 要识别的图片
* @return
*/
@Override
public String recognizeText(MultipartFile imageFile) throws IOException, TesseractException {
// 转换
InputStream sbs = new ByteArrayInputStream(imageFile.getBytes());
BufferedImage bufferedImage = ImageIO.read(sbs); // 对图片进行文字识别
return tesseract.doOCR(bufferedImage);
}
}
6、运行调试


注:图片颜色比较多的时候有有点识别不清楚了以及一些带字体的文本
参考链接:Spring Boot 集成 tess4j 实现图片识别文本_springboot tesseract-CSDN博客
Spring Boot 集成 tess4j 实现图片识别文本的更多相关文章
- Spring Boot集成Hazelcast实现集群与分布式内存缓存
Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展.高性能的分布式内存计算.并通过提供诸如Map,Queue,ExecutorService,Lock和JCach ...
- 81. Spring Boot集成JSP疑问【从零开始学Spring Boot】
[原创文章,转载请注明出处] 针对文章: ()Spring Boot 添加JSP支持[从零开始学Spring Boot] 有网友提了这么一些疑问: 1.Spring Boot使用jsp时,仍旧可以打成 ...
- 【Swagger】可能是目前最好的 Spring Boot 集成 swagger 的方案
[Swagger]可能是目前最好的Spring Boot集成 swagger 的方案 来进行存储,本文将介绍 Spring Boot 集成 ...
- Spring Boot集成Jasypt安全框架
Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPl ...
- Spring boot集成swagger2
一.Swagger2是什么? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格 ...
- Spring Boot 集成 Swagger,生成接口文档就这么简单!
之前的文章介绍了<推荐一款接口 API 设计神器!>,今天栈长给大家介绍下如何与优秀的 Spring Boot 框架进行集成,简直不能太简单. 你所需具备的基础 告诉你,Spring Bo ...
- spring boot 集成 zookeeper 搭建微服务架构
PRC原理 RPC 远程过程调用(Remote Procedure Call) 一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远程系统资源,R ...
- Spring Boot 集成Swagger
Spring Boot 集成Swagger - 小单的博客专栏 - CSDN博客https://blog.csdn.net/catoop/article/details/50668896 Spring ...
- spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,guava限流,定时任务案例, 发邮件
本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...
随机推荐
- 在Unity中实现(纯C#)热更新--使用ILRunTime{学习日志}
热更新的逻辑:热更新的那部分内容其实就是一个dll的库文件,到时候修改也是改这个库文件: 我们只需要在主工程(我们的Unity项目)中引入并调用这个dll库里的代码就行了. 首先我们需要在Unity中 ...
- rabbitmq的消息的有顺序性
一.rabbitmq:拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点:或者就一个queue但是对应一个consumer,然后这个consumer内部用内 ...
- c#几种场景获取程序运行目录
控制台.app等桌面应用程序(兼容系统自启) 1 System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.File ...
- 微信支付功能的设计实现与关键实践(UniApp+Java)全代码
感觉本篇对你有帮助可以关注一下我的微信公众号(深入浅出谈java),会不定期更新知识和面试资料.技巧!!! 温馨提醒:阅读时可打开导航栏 概述 在移动互联网时代,支付功能已成为应用开发的核心能力之一. ...
- 什么是AC自动机?如何实现?
什么是AC自动机? 是基于 Trie树 和 KMP失配指针 的一种高效多模式匹配算法.AC自动机能够一次构建,随后在遍历文本时同时匹配多个敏感词. AC自动机算法的典型应用是敏感词匹配,在各大社交媒体 ...
- Java线程控制: sleep、yield、join深度解析
结论先行 sleep:主动让出CPU但保持锁,适合控制执行节奏和优化CPU占用 yield:建议让出CPU但无强制力,适用场景有限且效果不稳定 join:通过等待机制实现线程顺序控制,底层基于wait ...
- Windows配置VS Code详细流程
本文介绍Visual Studio Code(VS Code)软件在Windows操作系统电脑中的下载.安装.运行方法. Visual Studio Code(简称VS Code)是一款由微软 ...
- python任务调度之schedule
本文通过开源项目schedule来学习定时任务如何工作 schedule简介 先来看下做做提供的一个例子 import schedule import time def job(): print(&q ...
- Vim编辑器基本用法
热门的Linux操作系统中都会默认安装一款文本编辑器-----Vim.它有三种模式:命令模式,末行模式和编辑模式. 命令模式 控制光标的移动,可对文本进行删除,复制,粘贴. 输入模式 正常的文本录入 ...
- debug与DOSBox安装&&debug命令操作
文章目录 一. DOSBox && debug使用 1.安装配置(以下方法们按照从麻烦到简便的顺序) (1) 多步骤(可行,但不推荐) (2)一步到位(强烈推荐) 2. 窗口大小 二. ...