若依前后端分离版整合Tess4J实现图片的文字识别

一、新建模块

点击New→Module 新建一个ruoyi-Tess4J子模块。

在这里插入图片描述

二、添加依赖

在pom.xml文件中加入以下依赖:
在这里插入图片描述

   <dependencies>
        <dependency>
            <groupId>net.sourceforge.tess4j</groupId>
            <artifactId>tess4j</artifactId>
            <version>4.5.4</version>
        </dependency>
    </dependencies>

三、添加Tessdata语言库

简介:Tessdata 是 Tesseract OCR 引擎使用的语言库,包含了训练数据和配置文件,用于识别不同语言的文本。这些文件定义了字符识别模型、字体特征和语言规则,帮助 Tesseract 在识别文本时进行正确的解析和处理。

这个需要从GitHub进行下载,地址:https://github.com/tesseract-ocr/tessdata/tree/master

在这里插入图片描述

四、创建OCR服务类

在这里插入图片描述

@Service
public class OcrServiceImpl implements OcrService {

    public String recognizeText(File imageFile) throws TesseractException {
        Tesseract tesseract = new Tesseract();

        // 设定训练文件的位置(如果是标准英文识别,此步可省略)
        tesseract.setDatapath("E:\\Tessdata");
        tesseract.setLanguage("chi_sim");
        return tesseract.doOCR(imageFile);
    }

}

在这段代码中,recognizeText(File imageFile)方法负责执行对本地文件的OCR任务

五、创建对应的控制层

在这里插入图片描述

控制层相关代码如下:

@RestController
@RequestMapping("/tess4j/api/ocr")
public class OcrController extends BaseController {

    @Autowired
    private OcrService ocrService;

    @PostMapping("/upload")
    public AjaxResult uploadImage(@RequestParam("file") MultipartFile file) {
        try {
            File convFile = new File("E:\\Tess4j_Files" + file.getOriginalFilename());
            file.transferTo(convFile);
            String result = ocrService.recognizeText(convFile);
            return AjaxResult.success(result);
        } catch (Exception e) {
            logger.error(e.getMessage());
            return AjaxResult.error("识别发生错误:" + e.getMessage());
        }
    }

}

六、测试

完成上面的步骤后,可以通过Api Post或者PostMan进行测试:

这里我是使用Api Post进行测试的:

新建目录以及接口后输入请求的地址点击发送:

在这里插入图片描述

测试使用的图片:

在这里插入图片描述

最后的测试结果:
在这里插入图片描述

Logo

快速构建 Web 应用程序

更多推荐