java如何实现识别图片上的文字
1、概述
除了文本的敏感词识别,我们还会遇到识别图片上的问题,以及过滤敏感词的需求。
2、图片文字识别技术OCR
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。备选方案有以下几种:
我这里选用tess4J的方案。
3、tess4J方案示例
3.1、引入依赖
<dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.1.1</version>
</dependency>
3.2、导入中文字体库
中文字体库下载链接
链接:https://pan.baidu.com/s/1oTJEK6lVpL0jgenKfmFbdg
提取码:epa8
下载后解压,把tessdata文件夹拷贝到指定的文件夹下,比如:D:\tessdata
3.3、封装tess4J图片识别工具类
在yml配置文件中添加tess4J的相关配置
tess4j:data-path: D:\tessdatalanguage: chi_sim
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "tess4j")
public class Tess4jClient {private String dataPath;private String language;// 入参:图片流public String doOCR(BufferedImage image) throws TesseractException {//创建Tesseract对象ITesseract tesseract = new Tesseract();//设置中文字体库路径tesseract.setDatapath(dataPath);//中文识别tesseract.setLanguage(language);//执行ocr识别String result = tesseract.doOCR(image);//替换回车和tal键 使结果为一行result = result.replaceAll("\\r|\\n", "-").replaceAll(" ", "");return result;}
}
3.4、使用示例
try {for (String image : images) {byte[] bytes = fileService.downLoadFile(image);//从byte[]转换为butteredImageByteArrayInputStream in = new ByteArrayInputStream(bytes);BufferedImage imageFile = ImageIO.read(in);//识别图片的文字String result = tess4jClient.doOCR(imageFile);//再结合敏感词过滤算法,审核图片中的文字是否包含敏感词boolean isSensitive = sensitiveScan(result);}
}catch (Exception e){e.printStackTrace();
}
fileService部分代码,使用MinIO下载图片
public byte[] downLoadFile(String pathUrl) {String key = pathUrl.replace(minIOConfigProperties.getEndpoint()+"/","");int index = key.indexOf("/");String bucket = key.substring(0,index);String filePath = key.substring(index+1);InputStream inputStream = null;try {inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(minIOConfigProperties.getBucket()).object(filePath).build());} catch (Exception e) {log.error("minio down file error. pathUrl:{}",pathUrl);e.printStackTrace();}ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();byte[] buff = new byte[100];int rc = 0;while (true) {try {if (!((rc = inputStream.read(buff, 0, 100)) > 0)) break;} catch (IOException e) {e.printStackTrace();}byteArrayOutputStream.write(buff, 0, rc);}return byteArrayOutputStream.toByteArray();}
以上就是java实现图片文字识别技术,欢迎点赞收藏。
java如何实现识别图片上的文字相关推荐
- python3识别图中的文字_Python3.x:如何识别图片上的文字
Python3.x:如何识别图片上的文字 安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google ...
- 识别图片上的文字,如何在线识别?
如何在线识别图片上的文字?其实很简单的,我们借助一些工具就可以进行识别了.不会识别图片文字的小伙伴们,可以跟着小编一起来学习一下哈! 步骤一:首先我们就是要在电脑上,下载一款工具.下载安装完成识别图片 ...
- 教你用OCR文字识别工具快速识别图片上的文字
OCR文字识别工具,指利用OCR(Optical Character Recognition,光学字符识别) 技术,将图片.照片上的文字内容,直接转换为可编辑文本的工具.软件可以把图片 转换成可以编辑 ...
- 可以识别图片上的文字的小程序
微信上的小程序相信大家都不陌生,近年来,微信小程序从"跳一跳"之后,越发火了.由于小程序的出现,微信上的功能也逐渐增加了,今天就给大家介绍一个小程序,比较实用,它可以快速识别图片上 ...
- 技能分享:怎么识别图片上的文字,还不快学起来
我们在日常办公中,经常会遇到需要录入一些工作文件的情况,而当我们收到大量的图片文件时,想要直接进行文本的录入就不是特别好操作了.这个时候如果我们能够用一些识别软件来提取图片上的文字,就可以方便又快捷地 ...
- OCR文字识别工具,轻松帮你识别图片上的文字
目前手机上OCR图片文识别的软件有很多,拍照识别提取图片上的文字,翻译识别出来的结果, 很方便.但是,如果你的手机上没有安装类似的软件,这个时候该怎么办呢?其实只要你的手机 上有一个微信就可以,一个小 ...
- 怎么识别图片上的文字?告诉你3款简单又实用的识别软件
平时大家在整理一些图片中的文字资料时,是否会想到运用文字识别工具来提升效率呢?现在市面上的图片文字识别工具多种多样,那我们应该选用哪些工具比较好呢?如果你目前有这个困扰的话,就来看看这篇文章吧,可以轻 ...
- 如何用python批量识别图片上的文字(一)
最近收到一个任务,任务内容如下: 指定一个目录,内含数千张图片,要求能将指定区域的数字记录下来,便于分析,图片如下所示 红框部分是需要识别出的区域 先分析下功能需求 1.识别指定区域的数据 2.将数据 ...
- 我们怎样识别图片上的文字?图片识别文字软件有哪些?
在日常生活中,大家都会保留很多照片.比如老师上课的PPT.上班办公的文档.随手截取的网页图片等等.这些有时候是因为我们来不及记录,而拍照作备用的,后期还需要我们去手写抄录.其实这效率未免太慢了,如果可 ...
- python识别图片上的文字_python识别图片文字
因为学校要求要刷一门叫<包装世界>的网课,而课程里有200多道选择题,而且只能在手机完成,网页版无法做题,而看视频是不可能看视频的,这辈子都不可能看...所以写了几行代码来进行百度搜答案. ...
最新文章
- ICANN敦促业界使用DNSSEC,应对DNS劫持攻击
- RabbitMQ(九):RabbitMQ 延迟队列,消息延迟推送(Spring boot 版)
- 清华构建新一代数据集NICO,定义图像分类新标准
- 计算机技术在环境中的好处,浅谈计算机技术在德育现代化中的作用
- c与python的区别-c语言和python的区别是什么
- ThreadLocal原理与使用
- python xml字符串_python -解析字符串,并返回xml格式字符串 急该如何解决
- SuperEdge正式成为CNCF沙箱项目,腾讯云携手六家厂商在边缘计算领域踏入新篇章
- 猫眼java开发工资_Java硕士京东工作1年,跳槽后他期望薪资26K,大家感觉他可以吗...
- 网络监控工具 开源_在不到一个月的时间内,我如何使用开源工具成为网络漫画家
- python基础知识学习笔记(2)
- 使用UI创建vue项目并添加element ui和axios
- 【年终总结】可圈可点的2018年
- OpenCV探索之路(五):图像变换——边缘检测(canny、sobel、laplacian)
- 基于密度聚类的DBSCAN和kmeans算法比较
- C# 利用NPOI 实现Excel转html
- JavaScript批量定义对象
- apache Ignite 安装和helloworld
- 1-MySQL事务特性
- data单复数一样吗_Data和media的复数是什么?——别以为你很懂复数!
热门文章
- 普莱得电器递交注册:上半年营收3.7亿 拟募资5.6亿
- 数据分析中的常用数学模型实战教程笔记(上)
- 系统自动校时后发广播android,校园定时播放软件
- 未来生活进行时: 畅想未来新兴技术40年——百大趋势性技术汇总(中)
- windows功能_windows必备的系统功能增强2具,免费,简单,实用
- Cookie和Session
- JS中的this是什么,this的四种用法
- 微信公众号开发80端口映射解决方案
- 计算机桌面底部图标一直闪烁,win7系统桌面上的图标一直闪烁怎么办?图标一直闪烁的解决方法...
- 阿里巴巴-菜鸟网络和申通快递面试