你好呀,我是小羊。
ocr是一种文字识别技术,可以把图片中的文字转换为文档识别出来,很多云平台都有这种服务,现在java 也能做到了,一起来看看吧。
简介
OCR是Optical Character Recognition的缩写,意为光学字符识别。它是一种技术,能够将印刷或手写文字转换为可编辑的文本格式。OCR技术通常用于扫描文档、图书和其他印刷材料,以便将它们转换为电子文档或进行文字识别。OCR技术可以提高文档的可搜索性和可编辑性,同时也可以帮助人们快速识别和处理大量的文字信息。Tess4J允许开发人员使用Java调用Tesseract OCR引擎,从而实现图像文本的识别。它提供了简化的API,使得在Java应用程序中集成OCR功能变得更加容易。通过Tess4J,你可以将图像中的文本提取出来,使其成为可用于文本分析、搜索、索引等应用的文本数据。
例子
java 实现 ocr 主要是利用springboot 集成 tess4j 这个开源项目项目,Tess4J是一个基于Java的OCR库,它使用Tesseract OCR引擎来识别图像中的文本。Tesseract OCR是一个开源的OCR引擎,最初由惠普实验室开发,后来由Google维护。
在java 中使用的话,先要安装 tess4j 的环境和训练库
先下载exe 安装包 https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.3.0.20221214.exe
下载好后直接安装
再下载 训练文件 chi_sim.traineddata https://digi.bib.uni-mannheim.de/tesseract/tessdata_fast/chi_sim.traineddata
放到d盘 tess4j 目录
pom 添加依赖
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.5.4</version>
</dependency>
配置 yml 训练文件路径
# 训练数据文件夹的路径
tess4j:
traineddata: D:tess4j
配置config,将训练数据注入到spring容器中
@Configuration
public class TesseractOcrConfiguration {
@Value("${tess4j.datapath}")
private String dataPath;
@Bean
public Tesseract tesseract() {
Tesseract tesseract = new Tesseract();
// 设置训练数据文件夹路径
tesseract.setDatapath(dataPath);
// 设置为中文简体
tesseract.setLanguage("chi_sim");
return tesseract;
}
}
配置service,识别的主要逻辑,首先读取图片的输入流,图片文字识别主要使用 tesseract.doOCR() 方法进行识别
@Service
@AllArgsConstructor
public class OcrService {
private final Tesseract tesseract;
/**
* 识别图片中的文字
* @param imageFile 图片文件
* @return 文字信息
*/
public String recognizeText(MultipartFile imageFile) throws TesseractException, IOException {
// 转换
InputStream sbs = new ByteArrayInputStream(imageFile.getBytes());
BufferedImage bufferedImage = ImageIO.read(sbs);
// 对图片进行文字识别
return tesseract.doOCR(bufferedImage);
}
}
controller 方法调用service
@RequestMapping("/ocr")
@RestController
@AllArgsConstructor
public class OcrController {
private final OcrService ocrService;
@PostMapping(value = "/recognize", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String recognizeImage(@RequestParam("file") MultipartFile file) throws TesseractException, IOException {
// 调用OcrService中的方法进行文字识别
return ocrService.recognizeText(file);
}
}
随便截一张图当需要识别的图片
postman 调用接口
下面是识别的文字,感觉效果还是不错的。正确路挺高。
推荐一款开源的大屏报表项目
原创 小羊的架构之路 小羊架构 2023-10-18 21:39 发表于广东
大家在平时应该都接触过各钟图表,像什么折线图,饼图,柱状图等等。有的小伙
伴还开发过,像我刚参加工作的时候,还开发过一个柱状图,放系统首页,像下面
这样
常见问题
如果报 Invalid memory access 错误的话,检查一下训练文件目录是否正确
总结
tess4j 有以下优点:
开源免费:Tess4J是基于Tesseract OCR引擎开发的,Tesseract是一个开源的OCR引擎,因此Tess4J也是免费的,可以节省成本。
跨平台性:Tess4J是基于Java开发的,因此具有很好的跨平台性,可以在多种操作系统上运行。
支持多种语言:Tess4J支持多种语言的识别,包括英语、中文、日语等,适用范围广泛。
可扩展性:Tess4J具有良好的可扩展性,可以通过自定义训练模型来提高识别准确度。
如果项目中需要用到文字识别技术,可以使用这个开源项目来实现。
相关链接
github
https://github.com/nguyenq/tess4j
springboot整tess4j demo
https://gitee.com/yangzheng1/springboot-ocr
往期精彩推荐
原文始发于微信公众号(小羊架构):推荐一款开源免费的ocr文字识别项目,方便集成,准确率高。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260067.html