通过Java实现OCR
一、TesseractOCR
本文使用的是TesseractOCR进行识别
二、引入pom
xml
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>5.8.0</version>
</dependency>
训练集下载地址
三、引入训练集
下载训练集 放入到 resources下的tessdata文件夹下
三、使用
java
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import java.io.File;
/**
* @author Mr.NaCl
* @since 2024/2/5
*/
public class OCRServer {
public static void main(String[] args) throws TesseractException {
long start = System.currentTimeMillis();
System.out.println("开始OCR文字识图,请稍后...");
//加载要识别的图片
File image = new File("14-OCR/src/main/resources/test.jpg");
//设置配置文件夹位置、识别语言、识别模式
Tesseract tesseract = new Tesseract();
tesseract.setDatapath("14-OCR/src/main/resources/tessdata");
//设置识别语言为中文简体,(如果要设置为英文可改为"eng")
tesseract.setLanguage("chi_sim");
//使用 OSD 进行自动页面分割以进行图像处理
tesseract.setPageSegMode(1);
//设置引擎模式是神经网络LSTM引擎
tesseract.setOcrEngineMode(1);
//开始识别整张图片中的文字
String result = tesseract.doOCR(image);
//如果只想识别图片中特定部分的文字,可以像下面这样选定长宽范围识别:
//String result = tesseract.doOCR(image, new Rectangle(300, 200));
long time = System.currentTimeMillis() - start;
System.out.println("识别结束,耗时:" + time + " 毫秒,识别结果如下:");
System.out.println(result);
}
}