JAVA:Spring Boot 集成 Tess4J 实现文字识别的技术指南

embedded/2024/10/15 22:45:03/

请关注微信公众号:拾荒的小海螺
博客地址:http://lsk-ww.cn/

1、简述

图片文字识别(Optical Character Recognition, OCR)是一项将图像中的文字转换为可编辑文本的技术。Tess4J 是 Tesseract OCR 引擎的一个 Java 封装,使其在 Java 应用程序中更易于使用。本文将介绍如何在 Spring Boot 项目中集成 Tess4J 实现图片文字识别。

在这里插入图片描述

GitHub:https://github.com/tesseract-ocr/tesseract.git
语言包GitHub:https://github.com/tesseract-ocr/tessdata.git

2、环境准备

  • JDK:确保已安装 JDK 8 或更高版本。
  • Maven:确保已安装 Maven,用于管理项目依赖。
  • Spring Boot:使用 Spring Initializr 创建一个新的 Spring Boot 项目。

在项目的 pom.xml 文件中添加 Tess4J 的 Maven 依赖:

<dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>5.4.0</version>
</dependency>
<dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.6.0</version>
</dependency>
<dependency><groupId>net.java.dev.jna</groupId><artifactId>jna-platform</artifactId><version>5.6.0</version>
</dependency>

3、下载 Tesseract OCR 引擎

tesseract-ocr目前训练的数据是放在tessdata文件夹下,后缀为traineddata文件,目前支持100多种语言。今天安装的为第三方支持的安装包。

https://github.com/UB-Mannheim/tesseract/wiki

到当前下载指定的版本,在window上进行安装:

在这里插入图片描述

安装完成将需要的语言包放在自己OCR安装目录tessdata下。

安装的软件可以直接使用tesseract.exe进行命令行执行文字识别。进入到exe存在的目录下。cmd进入到命命令执行框:

//官方
tesseract imagename outputbase [-l lang] [--oem ocrenginemode] [--psm pagesegmode] [configfiles...]
  • imagename :图片的位置
  • outputbase:输出的文件名字,不加后缀保存为txt格式
  • -l lang:识别的语言类型,不加默认为英文,中文使用-l chi_sim,使用多种语言识别如 -l eng+deu
  • –psm pagesegmode:参数
  • –oem:使用识别的引擎,新版都是用 --oem 1(LSTM模式)
  • configfiles: 可以执行输入的格式如 pdf, hocr ,tsv

4、编写图片文字识别代码

在项目中创建一个用于文字识别的服务类:

package com.example.springbootclient.service;import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.stereotype.Service;import java.io.File;@Service
public class OcrService {public String recognizeText(File imageFile) {ITesseract instance = new Tesseract();instance.setDatapath("D:\\wlsoft\\Tesseract-OCR\\tessdata"); // 设置Tesseract的tessdata路径instance.setLanguage("chi_sim"); // 设置识别语言try {return instance.doOCR(imageFile);} catch (TesseractException e) {e.printStackTrace();return "Error: " + e.getMessage();}}
}

在 tessdata 目录下存放 Tesseract 的语言数据文件(如 chi_sim.traineddata),该目录应放置在项目的资源目录下。

5、编写控制器

创建一个控制器,用于处理上传的图片并调用 OCR 服务:

package com.example.springbootclient.controller;import com.example.springbootclient.service.OcrService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;@RestController
@RequestMapping("/ocr")
public class OcrController {@Autowiredprivate OcrService ocrService;@PostMapping("/upload")public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file) {if (file.isEmpty()) {return new ResponseEntity<>("File is empty", HttpStatus.BAD_REQUEST);}try {// 将文件保存到本地File convFile = new File(System.getProperty("java.io.tmpdir") + "/" + file.getOriginalFilename());file.transferTo(convFile);// 调用OCR服务识别文字String result = ocrService.recognizeText(convFile);return new ResponseEntity<>(result, HttpStatus.OK);} catch (IOException e) {return new ResponseEntity<>("File upload error: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);}}
}

6、测试

启动 Spring Boot 应用,使用 Postman 或其他工具发送图片文件到 http://localhost:8080/ocr/upload 进行测试。以下是一个示例请求:

  • 请求类型:POST
  • URL:http://localhost:8080/ocr/upload
  • 请求体:选择 form-data,键为 file,值为要上传的图片文件。

如果一切配置正确,服务器将返回识别出的文本。

在这里插入图片描述

7、总结

通过本文的介绍,我们学习了如何在 Spring Boot 项目中集成 Tess4J 实现图片文字识别。我们介绍了如何配置项目、添加依赖、下载和配置 Tesseract OCR 引擎,以及编写识别服务和控制器。希望本文能帮助你更好地理解和使用 OCR 技术,并将其应用到实际项目中。

如果有任何问题或建议,欢迎在下方留言讨论。


http://www.ppmy.cn/embedded/118680.html

相关文章

MySQL 主键索引等值查询加什么锁?

这一期介绍读已提交、可重复读两个隔离级别下&#xff0c;主键索引等值查询的加锁情况。 作者&#xff1a;操盛春&#xff0c;爱可生技术专家&#xff0c;公众号『一树一溪』作者&#xff0c;专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品&#xff0c;原创内容未经…

IM开发首选:WebSocket实现分频道广播的设计思路和实现难点分析

IM开发首选&#xff1a;WebSocket实现分频道广播的设计思路和实现难点分析 即时通讯&#xff08;Instant Messaging&#xff0c;简称IM&#xff09;应用在现代社会中已经无处不在。无论是个人聊天、群组讨论&#xff0c;还是企业内部通信&#xff0c;IM都发挥着至关重要的作用。…

网络安全证书考取相关知识

目的 本文主要是记录一下可以考取的网络安全证书有哪些。同时记录考取这些知识所需的相关知识。 NISP&#xff08;网络安全信息人员认证&#xff09; 国家信息安全水平考试&#xff08;National Information Security Test Program&#xff0c;简称NISP&#xff09;&#xf…

深度学习500问——Chapter15:异构计算,GPU和框架选型(1)

文章目录 异构计算&#xff0c;GPU和框架选型指南 15.1 什么是异构计算 15.2 什么是GPU 15.3 GPU架构简介 15.3.1 如何通俗理解GPU的架构 15.3.2 CUDA的核心是什么 15.3.3 为什么要使用GPU 异构计算&#xff0c;GPU和框架选型指南 深度学习训练和推理的过程中&#xff0c;会涉…

WEB 编程:富文本编辑器 Quill 配合 Pico.css 样式被影响的问题之Shadow DOM

前情提要 前面我写过一篇文章讲这个事情。用的是 iframe 的方法。文章链接&#xff1a; WEB 编程&#xff1a;富文本编辑器 Quill 配合 Pico.css 样式被影响的问题-CSDN博客 问题来了 使用 iframe 确实可以在框架页面有 Pico.css 的情况下&#xff0c;在 iframe 里面的 Quil…

7款国内AI搜索引擎大全网站

与传统搜索引擎相比&#xff0c;AI搜索引擎利用先进的自然语言处理、机器学习和深度学习技术&#xff0c;提供更加精准和个性化的搜索服务。小编就来和大家分享国内免费的AI搜索引擎网站&#xff0c;方便大家体验使用。 AI搜索引擎网站大全&#xff1a;https://www.bgrdh.com/f…

uniapp APP自动更新组件

在uniapp中实现APP自动更新功能&#xff0c;主要涉及到客户端在功能不断迭代过程中&#xff0c;需要进行自动更新。uniapp一个详细的实现步骤&#xff0c;包括客户端和服务器端的配置&#xff1a; 服务器端配置 版本信息管理 服务器端需要维护一个数据库或配置文件&#xff…

Python编码系列—Python观察者模式:实现事件驱动架构的利器

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…