Java也能做OCR!SpringBoot 整合 Tess4J 实现图片文字识别

IT·陈寒 2024-09-20 12:05:02 阅读 95

文章目录

1. 环境准备1.1 安装 Tesseract OCR 引擎1.2 引入 Tess4J 依赖

2. 创建 Spring Boot 项目2.1 初始化项目2.2 目录结构

3. 编写 OCR 功能代码3.1 创建服务层3.2 创建控制器层

4. 配置 Tesseract 语言包5. 运行和测试5.1 启动 Spring Boot 应用5.2 使用 Postman 或 cURL 进行测试

6. 处理常见问题6.1 图片格式不支持6.2 识别率低

7. 总结

在这里插入图片描述

🎉欢迎来到SpringBoot框架学习专栏~


☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹✨博客主页:IT·陈寒的博客🎈该系列文章专栏:SpringBoot📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏📜 欢迎大家关注! ❤️


光学字符识别(OCR)技术能够将图片中的文字转换为可编辑的文本,这在文档管理、票据处理等领域有广泛的应用。Tesseract 是一个开源的OCR引擎,Tess4J 则是 Tesseract 的 Java 封装库。本文将介绍如何使用 Spring Boot 整合 Tess4J,实现图片文字识别功能。

在这里插入图片描述

1. 环境准备

在开始之前,请确保已安装以下工具和库:

JDK 8 或更高版本Maven 3.6 或更高版本Spring Boot 2.4 或更高版本Tesseract OCR 引擎Tess4J 库

1.1 安装 Tesseract OCR 引擎

请根据你的操作系统选择合适的安装方式。

Windows:下载 Tesseract OCR Windows 版本 并安装。

Mac:使用 Homebrew 安装:

<code>brew install tesseract

Linux:使用包管理器安装,例如在 Ubuntu 上:

sudo apt-get install tesseract-ocr

1.2 引入 Tess4J 依赖

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

<dependency>

<groupId>net.sourceforge.tess4j</groupId>

<artifactId>tess4j</artifactId>

<version>4.5.4</version>

</dependency>

2. 创建 Spring Boot 项目

2.1 初始化项目

使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择以下依赖:

Spring WebSpring Boot DevTools

2.2 目录结构

创建一个基本的目录结构:

src/main/java/com/example/ocr

├── OcrApplication.java

├── controller

│ └── OcrController.java

└── service

└── OcrService.java

3. 编写 OCR 功能代码

3.1 创建服务层

service 包中创建 OcrService 类,负责处理图片文字识别的逻辑:

package com.example.ocr.service;

import net.sourceforge.tess4j.Tesseract;

import net.sourceforge.tess4j.TesseractException;

import org.springframework.stereotype.Service;

import java.io.File;

@Service

public class OcrService { -- -->

private final Tesseract tesseract;

public OcrService() {

tesseract = new Tesseract();

// 设置 Tesseract OCR 引擎的数据路径

tesseract.setDatapath("tessdata");

// 设置识别语言

tesseract.setLanguage("eng");

}

public String extractText(File imageFile) {

try {

return tesseract.doOCR(imageFile);

} catch (TesseractException e) {

e.printStackTrace();

return "Error: " + e.getMessage();

}

}

}

3.2 创建控制器层

controller 包中创建 OcrController 类,处理前端的请求:

package com.example.ocr.controller;

import com.example.ocr.service.OcrService;

import org.springframework.beans.factory.annotation.Autowired;

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("/api/ocr")

public class OcrController {

@Autowired

private OcrService ocrService;

@PostMapping("/extract-text")

public ResponseEntity<String> extractText(@RequestParam("file") MultipartFile file) {

if (file.isEmpty()) {

return ResponseEntity.badRequest().body("File is empty");

}

try {

// 将上传的文件转换为临时文件

File tempFile = File.createTempFile("ocr-", ".tmp");

file.transferTo(tempFile);

tempFile.deleteOnExit();

// 调用 OCR 服务提取文字

String extractedText = ocrService.extractText(tempFile);

return ResponseEntity.ok(extractedText);

} catch (IOException e) {

e.printStackTrace();

return ResponseEntity.status(500).body("Error: " + e.getMessage());

}

}

}

4. 配置 Tesseract 语言包

确保你的项目根目录有一个 tessdata 文件夹,其中包含 Tesseract OCR 的语言数据文件(例如 eng.traineddata 用于英文识别)。如果没有,可以从 Tesseract 语言数据文件 下载。

5. 运行和测试

5.1 启动 Spring Boot 应用

运行 OcrApplication 类中的 main 方法,启动 Spring Boot 应用。

package com.example.ocr;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class OcrApplication {

public static void main(String[] args) {

SpringApplication.run(OcrApplication.class, args);

}

}

5.2 使用 Postman 或 cURL 进行测试

使用 Postman 或 cURL 发送一个 POST 请求到 /api/ocr/extract-text,上传一张图片,检查返回结果是否正确识别了图片中的文字。

使用 cURL 示例:

curl -X POST http://localhost:8080/api/ocr/extract-text -F "file=@path/to/your/image.jpg"

6. 处理常见问题

6.1 图片格式不支持

确保上传的图片是Tesseract支持的格式(如JPEG、PNG、GIF等)。如果不支持,返回适当的错误信息。

6.2 识别率低

识别率低可能是由于图片质量差或者没有使用适当的语言数据文件。可以尝试以下方法提高识别率:

使用高质量的图片;确保图片中只有需要识别的文字,去除背景噪音;使用适当的语言数据文件;尝试不同的前处理技术,如二值化、去噪等。

7. 总结

本文详细介绍了如何使用 Spring Boot 整合 Tess4J 实现图片文字识别。通过这一示例,展示了如何在 Java 中利用开源OCR引擎 Tesseract 进行图片文字识别,并将其应用于实际的Web服务中。希望通过本文的介绍,能够帮助开发者更好地理解和应用OCR技术,提升应用程序的功能和用户体验。

继续保持对新技术的探索和实践,相信你会在开发过程中收获更多的乐趣和成就感。如果你有任何问题或建议,欢迎在评论区留言讨论。


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏

📜您可能感兴趣的内容:

【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)【Java学习路线】2023年完整版Java学习路线图【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。