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

请关注微信公众号:拾荒的小海螺
博客地址: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 {

    @Autowired
    private 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 技术,并将其应用到实际项目中。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拾荒的小海螺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值