若依前后端分离版整合Tess4J实现图片的文字识别
Tess4j文字识别
·
若依前后端分离版整合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进行测试的:
新建目录以及接口后输入请求的地址点击发送:
测试使用的图片:
最后的测试结果:
更多推荐
已为社区贡献5条内容
所有评论(0)