springboot实现OCR

1、引入依赖

XML 复制代码
<dependency>
	<groupId>net.sourceforge.tess4j</groupId>
	<artifactId>tess4j</artifactId>
	<version>4.5.4</version>
</dependency>

2、config

java 复制代码
@Configuration
public class TessOcrConfiguration {

   @Bean
   public Tesseract tesseract() {
      Tesseract tesseract = new Tesseract();
      // 设置训练数据文件夹路径
      tesseract.setDatapath("D:/tessdata");
      // 设置为中文简体
      tesseract.setLanguage("chi_sim");
      return tesseract;
   }
}

3、定义api

java 复制代码
@PostMapping(value = "/ocr", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String ocr(@RequestParam("file") MultipartFile file) throws TesseractException, IOException {
    return weChatService.ocr(file);
}

4、定义service

java 复制代码
@Resource
private Tesseract tesseract;

@Override
public String ocr(MultipartFile file) throws TesseractException, IOException {
    InputStream sbs = new ByteArrayInputStream(file.getBytes());
    BufferedImage bufferedImage = ImageIO.read(sbs);
    return tesseract.doOCR(bufferedImage);
}

5、将官方的简体中文训练数据(后缀为.traineddata的文件)放到配置的目录(D:/tessdata)下

下边是官方训练数据的下载地址,打开后可以找到简体中文的文件 chi_sim.traineddata,下载下来放到指定位置就可以了

tess4j官方训练数据下载https://digi.bib.uni-mannheim.de/tesseract/tessdata_fast/6、测试效果

测试图片

postman调用

可以发现【霜】被识别成了【需】,说明还是有一定的误差

相关推荐
悟空码字5 分钟前
SpringBoot 整合 ElasticSearch,给搜索插上“光速翅膀”
java·后端·elasticsearch
骚戴15 分钟前
DeepSeek V3 & Llama 3 推理避坑指南:自建 vLLM 集群 vs API 网关架构深度对比
java·人工智能·python·大模型·api·vllm
墨雪不会编程20 分钟前
C++基础语法篇八 ——【类型转换、再探构造、友元】
java·开发语言·c++
老毛肚25 分钟前
登录架构设计
java·开发语言
月明长歌25 分钟前
【码道初阶】【牛客BM30】二叉搜索树与双向链表:java中以引用代指针操作的艺术与陷阱
java·数据结构·算法·leetcode·二叉树·笔试·字节跳动
小坏讲微服务28 分钟前
Spring Boot4.0整合RabbitMQ死信队列详解
java·spring boot·后端·rabbitmq·java-rabbitmq
undsky30 分钟前
【RuoYi-SpringBoot3-Pro】:接入 AI 对话能力
spring boot·ai编程
yuuki23323330 分钟前
【C++】内存管理
java·c++·算法
消失的旧时光-194334 分钟前
Java 线程池(第四篇):ScheduledThreadPoolExecutor 原理与定时任务执行机制全解析
java·开发语言
刃神太酷啦34 分钟前
Linux 进程核心原理精讲:从体系结构到实战操作(含 fork / 状态 / 优先级)----《Hello Linux!》(6)
java·linux·运维·c语言·c++·算法·leetcode