生活中我们可能会遇到想从图片上直接复制上边的文字,该如何获取呢,接下来看看如何使用Java程序实现从图片中读取文字。
实现过程
1、引入Tess4J 依赖
<!--Tess4J 依赖-->
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>5.12.0</version>
</dependency>
2、下载字体库
https://github.com/tesseract-ocr/tessdata
3、核心代码
// imagePath为图片路径,language为识别语言
public String getWordFromImage(String imagePath, String language) {
//创建Tesseract对象
ITesseract tesseract = new Tesseract();
//设置字体库路径
tesseract.setDatapath("E:\\xxxx\\traineddata");
//设置识别语言 chi_sim/eng
tesseract.setLanguage(language);
//执行ocr识别
String result = null;
try {
result = tesseract.doOCR(new File(imagePath));
} catch (TesseractException e) {
log.error("识别有误",e);
}
return result;
}
错误处理
Please make sure the TESSDATA_PREFIX environment variable is set to your “tessdata” directory
出现这个问题的原因是设置字体库路径时,路径中包含中文无法识别,需要把字体库放到一个全英文的路径下即可
ITesseract tesseract = new Tesseract();
//设置字体库路径
tesseract.setDatapath("E:\\xxx\\xxx\\traineddata");
这里的路径不可以包含中文,不然读取不到