0


Spring Boot 整合开源 Tess4J库 实现OCR图片文字识别

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
💕《Jenkins实战》专栏主要介绍Jenkins+Docker+Git+Maven的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

Spring Boot整合开源 Tess4J 实现OCR图片文字识别

1、前言

之前在某一个项目中,客户要求根据上传的文档图片系统自动识别图片内容,这就需要到了

  1. OCR

技术,我们公司一般做法通常是使用

  1. 阿里云

  1. 腾讯云

  1. OCR

图片识别(大厂的训练量更多更大,识别更精准)无奈客户资金有限,又希望我们满足需求,最后我们决定采用开源

  1. Tesseract

文字识别

  1. OCR

引擎来实现

  1. Tesseract

是一个功能强大的

  1. OCR

引擎,其发展经历了多个版本的迭代。最初由惠普实验室开发,后由 Google 维护和发展。

  1. Tesseract

通过神经网络和图像处理技术,对图像中的文字进行识别和提取。

2、什么是 Tess4J

  1. Tess4J

是一个

  1. Java

  1. OCR

(光学字符识别)库,基于

  1. Tesseract OCR

引擎实现。

  1. Tess4J

为 Java 开发者提供了一个便捷的接口,能够在 Java 项目中轻松调用

  1. Tesseract

的 OCR 功能。

温馨提示
Tess4J 只是就是封装了Tesseract OCR的API,让Java可以直接调用,千万不要错误以为是Tess4J实现的

3、项目初始化

3.1 引入Tess4J 依赖

创建 Spring Boot 项目,打开

  1. pom.xml

文件,添加

  1. Tess4J

的依赖

  1. <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- tess4j 最新版5.11.0 --><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>5.11.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

3.2 配置 Tesseract 数据文件

  1. Tess4J

依赖

  1. Tesseract

数据文件来识别不同语言的文本。可以从 Tesseract Github仓库 下载所需语言的训练数据。
在这里插入图片描述
如上图所示:Tesseract有三个独立的语言模型存储库 tessdata、tessdata-best、tessdata-fast 他们分别都存储了语言模型,主要有以下区别
数据模型存储库描述速度识别精度支持再训练tessdata_best最好(最准确)的训练LSTM模型最慢最高支持tessdata使用“最佳”LSTM模型+遗留模型的快速变体训练模型均衡均衡不支持tessdata_fast训练LSTM模型的快速版本最快最低不支持
博主选择Tesseract最高的

  1. tessdata_best

中文数据文件,下载完成后,将数据文件放在项目的资源目录中,

  1. src/main/resources/tessdata

如果你只是处理中文、英文的文字识别,无需将整个库下载,找到chi_sim.traineddata 和eng.traineddata下载即可

如果整个存储库下载过大,大家根据自己的需求下载对应语言版本或者特殊的模型(如数学公式:equ.traineddata 模型),语言版本参考官方地址:https://tesseract-ocr.github.io/tessdoc/Data-Files.html
在这里插入图片描述

4、代码实现

4.1 创建 OCR 服务类

首先,创建一个 OCR 服务类,用于处理图片文字识别的逻辑

  1. importnet.sourceforge.tess4j.Tesseract;importnet.sourceforge.tess4j.TesseractException;importorg.springframework.stereotype.Service;importjava.io.File;@ServicepublicclassOCRService{publicStringextractTextFromImage(File imageFile){Tesseract instance =newTesseract();//设置 tessdata 目录
  2. instance.setDatapath("src/main/resources/tessdata");//设置语言 中文
  3. instance.setLanguage("chi_sim");try{return instance.doOCR(imageFile);}catch(TesseractException e){
  4. e.printStackTrace();return"读取图像时出错";}}}

4.2 创建OCRController

创建一个控制器,用于处理前端请求并调用 OCR 服务

  1. importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.http.HttpStatus;importorg.springframework.http.ResponseEntity;importorg.springframework.web.bind.annotation.*;importorg.springframework.web.multipart.MultipartFile;importjava.io.File;importjava.io.IOException;@RestController@RequestMapping("/api/ocr")publicclassOCRController{@AutowiredprivateOCRService ocrService;@PostMapping("/extract-text")publicResponseEntity<String>extractTextFromImage(@RequestParam("file")MultipartFile file){if(file.isEmpty()){returnnewResponseEntity<>("未选择图片!",HttpStatus.BAD_REQUEST);}try{// 将 MultipartFile 转换为 FileFile imageFile =convertMultiPartToFile(file);String result = ocrService.extractTextFromImage(imageFile);returnnewResponseEntity<>(result,HttpStatus.OK);}catch(Exception e){
  2. e.printStackTrace();returnnewResponseEntity<>("文件处理错误",HttpStatus.INTERNAL_SERVER_ERROR);}}privateFileconvertMultiPartToFile(MultipartFile file)throwsIOException{File convFile =newFile(System.getProperty("java.io.tmpdir")+"/"+ file.getOriginalFilename());
  3. file.transferTo(convFile);return convFile;}}

4.3 开始调试

准备一张文字图片,就以本篇文章开头文案图片来测试;

在这里插入图片描述
前端代码这里就不贴了,我们使用Apifox或Postman进行调试,博主这里使用Apifox测试效果如下:
在这里插入图片描述

5、出现 Unable to load library 'tesseract’问题

如果有小伙伴在测试过程中出现了

  1. Unable to load library 'tesseract'

的异常问题,且你也是MacOS系统,原因通常是因为 Tess4J 无法找到或加载 Tesseract OCR 引擎的本地库,需要在Mac上安装Tesseract lib

  1. #使用homebrew安装
  2. brew install tesseract
  3. #或者sudoapt-getinstall tesseract

6、总结

通过以上步骤,我们成功地在 Spring Boot 项目中集成了 Tess4J,实现了图片文字识别功能。本文详细介绍了从项目初始化、服务类和控制器的编写到最终测试,希望对大家有所帮助。如果有更复杂的需求,可以进一步优化和扩展此项目。


在这里插入图片描述


本文转载自: https://blog.csdn.net/lhmyy521125/article/details/139422730
版权归原作者 Micro麦可乐 所有, 如有侵权,请联系我们删除。

“Spring Boot 整合开源 Tess4J库 实现OCR图片文字识别”的评论:

还没有评论