SpringBoot+Tess4J实现本地与远程图片的文字识别

Spring Boot应用程序里集成Tess4J来实现OCR(光学字符识别),以识别出本地和远程图片中的文字

一、添加依赖

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

二、添加Tessdata语言库

github:https://gitcode.com/tesseract-ocr/tessdata/tree/main
本站蜘蛛下:https://pan.baidu.com/s/1uuSTBNo3byJib4f8eRSIFw 密码:8v8u
在这里插入图片描述

三、创建OCR服务类

@Service
public class OcrService{
   
	
	/**
		负责执行对本地文件的OCR任务
	*/
	public String recognizeText(File imageFile)throws TesseractException{
   
		
		Tesseract tesseract = new Tesseract();

		//设定训练文件的位置(如果是标准英文识别,此步可省略)
		tesseract.setDatapath("你的tessdata各语言集合包地址");
        tesseract.setLanguage("chi_sim");
        return tesseract.doOCR(imageFile);
	}

	/**
		则先将远程图片下载到本地,然后再执行OCR
	*/
	public String recognizeTextFromUrl(String imageUrl)throws Exception{
   
	
		URL url = new URL(imageUrl);
        InputStream in = url.openStream();
        Files.copy(in, Paths.get("downloaded.jpg"), StandardCopyOption.REPLACE_EXISTING);

        File imageFile = new File("downloaded.jpg");
        return recognizeText(imageFile);
	}
}

四、建立REST控制器

@RestController
@RequestMapping("/api/ocr")
public class OcrController{
   
	
	private final OcrService ocrService;

	// 使用构造器注入OcrService
    public OcrController(OcrService ocrService) {
   
        this.ocrService = ocrService;
    }

	//处理用户上传的本地图片
	@PostMapping("/upload")
	public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file){
   
		
		try{
   
			File convFile = new File(System.getProperty("java.io.tmpdir")+"/"+file.getOriginalFilename());
			file.transferTo(convFile);
			String result = ocrService.recognizeText(convFile);
			return ResponseEntity.ok(result);
		}catch(Exception e){
   
			e.printStackTrace();
			return ResponseEntity.badRequest().body("识别发生错误:" + e.getMessage());
		}
	}

	//处理给定URL的远程图片
	@GetMapping("/recognize-url")
	public ResponseEntity<String> recognizeFromUrl(@RequestParam("imageUrl") String imageUrl) {
   
        try {
   
            String result = ocrService.recognizeTextFromUrl(imageUrl);
            return ResponseEntity.ok(result);
        } catch (Exception e) {
   
            e.printStackTrace();
            return ResponseEntity.badRequest().body("从URL识别发生错误:" + e.getMessage());
        }
    }
}

五、测试

本地测试:
在这里插入图片描述
远程测试:
在这里插入图片描述
根据实际情况调整配置,例如在多语言环境中设置正确的语言包等。

相关推荐

  1. 利用Tess4J实现图片文字识别

    2024-02-18 17:36:01       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-18 17:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-18 17:36:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-18 17:36:01       82 阅读
  4. Python语言-面向对象

    2024-02-18 17:36:01       91 阅读

热门阅读

  1. 作业day6

    2024-02-18 17:36:01       45 阅读
  2. vivado FIR Filters

    2024-02-18 17:36:01       46 阅读
  3. 小程序API能力汇总——基础容器API(二)

    2024-02-18 17:36:01       41 阅读
  4. Z4.3 求最大公约数和最小公倍数。

    2024-02-18 17:36:01       46 阅读
  5. [AIGC] Kafka 消费者的实现原理

    2024-02-18 17:36:01       48 阅读
  6. ADO世界之FIRST

    2024-02-18 17:36:01       41 阅读
  7. 面试计算机网络框架八股文十问十答第七期

    2024-02-18 17:36:01       60 阅读
  8. 单点登录和单设备登录

    2024-02-18 17:36:01       45 阅读