国外比较好的设计网站,win7和wordpress,免备案免费空间,设计公司企业想法场景
Tesseract
Tesseract是一个开源的光学字符识别#xff08;OCR#xff09;引擎#xff0c;它可以将图像中的文字转换为计算机可读的文本。
支持多种语言和书面语言#xff0c;并且可以在命令行中执行。它是一个流行的开源OCR工具#xff0c;可以在许多不同的操作系…场景
Tesseract
Tesseract是一个开源的光学字符识别OCR引擎它可以将图像中的文字转换为计算机可读的文本。
支持多种语言和书面语言并且可以在命令行中执行。它是一个流行的开源OCR工具可以在许多不同的操作系统上运行。
GitHub - tesseract-ocr/tesseract: Tesseract Open Source OCR Engine (main repository)
Tess4J
Tess4J是一个基于Tesseract OCR引擎的Java接口可以用来识别图像中的文本说白了就是封装了它的API让Java可以直接调用。
中文文字训练集下载
Tesseract引擎默认是无法识别中文的只能识别数字或者英文。如果我们想实现中文的识别就得去下载对应的训练集。
GitCode - 开发者的代码家园
下载之后找到中文简体训练集文件 将chi_sim.traineddata复制到某磁盘路径下这里放在D盘tessdata目录下
注
博客霸道流氓气质-CSDN博客
实现
1、搭建SpringBoot项目后添加Tess4J依赖 dependencygroupIdnet.sourceforge.tess4j/groupIdartifactIdtess4j/artifactIdversion4.5.4/version/dependency
2、在配置文件application.yml中添加训练集文件夹的路径
# 训练数据文件夹的路径
tess4j:datapath: D:/tessdata
3、新增配置类读取配置文件内容并初始化Tesseract类交给Spring管理
import net.sourceforge.tess4j.Tesseract;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class TesseractOcrConfiguration {Value(${tess4j.datapath})private String dataPath;Beanpublic Tesseract tesseract() {Tesseract tesseract new Tesseract();// 设置训练数据文件夹路径tesseract.setDatapath(dataPath);// 设置为中文简体tesseract.setLanguage(chi_sim);return tesseract;}
}
4、编写Service接口层
import java.io.InputStream;public interface IOcrService {String recognizeText(InputStream sbs);
}
5、编写ServiceImpl
import com.ruoyi.system.service.IOcrService;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;Service
public class OcrServiceImpl implements IOcrService {Autowiredprivate Tesseract tesseract;Overridepublic String recognizeText(InputStream sbs) {// 转换try {BufferedImage bufferedImage ImageIO.read(sbs);// 对图片进行文字识别return tesseract.doOCR(bufferedImage);} catch (IOException | TesseractException e) {e.printStackTrace();return null;}}
}
6、编写单元测试
import com.ruoyi.system.service.IOcrService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;RunWith(SpringRunner.class)
SpringBootTest(classes RuoYiApplication.class,webEnvironment SpringBootTest.WebEnvironment.RANDOM_PORT)
public class Tess4JOcrTest {Autowiredprivate IOcrService iOcrService;Testpublic void ocrLocalPng() {try {InputStream inputStreamnew FileInputStream(D://tess4j.png);String result iOcrService.recognizeText(inputStream);System.out.println(result);} catch (FileNotFoundException e) {e.printStackTrace();}}
}
7、这里的png文件随便截图并放在磁盘路径下运行单元测试 识别效果可能存在不准确的情况。
其它使用场景比如前端上传照片后台识别返回结果等可自己进行扩展。