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如何实现识别图片上的文字相关推荐

  1. python3识别图中的文字_Python3.x:如何识别图片上的文字

    Python3.x:如何识别图片上的文字 安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google ...

  2. 识别图片上的文字,如何在线识别?

    如何在线识别图片上的文字?其实很简单的,我们借助一些工具就可以进行识别了.不会识别图片文字的小伙伴们,可以跟着小编一起来学习一下哈! 步骤一:首先我们就是要在电脑上,下载一款工具.下载安装完成识别图片 ...

  3. 教你用OCR文字识别工具快速识别图片上的文字

    OCR文字识别工具,指利用OCR(Optical Character Recognition,光学字符识别) 技术,将图片.照片上的文字内容,直接转换为可编辑文本的工具.软件可以把图片 转换成可以编辑 ...

  4. 可以识别图片上的文字的小程序

    微信上的小程序相信大家都不陌生,近年来,微信小程序从"跳一跳"之后,越发火了.由于小程序的出现,微信上的功能也逐渐增加了,今天就给大家介绍一个小程序,比较实用,它可以快速识别图片上 ...

  5. 技能分享:怎么识别图片上的文字,还不快学起来

    我们在日常办公中,经常会遇到需要录入一些工作文件的情况,而当我们收到大量的图片文件时,想要直接进行文本的录入就不是特别好操作了.这个时候如果我们能够用一些识别软件来提取图片上的文字,就可以方便又快捷地 ...

  6. OCR文字识别工具,轻松帮你识别图片上的文字

    目前手机上OCR图片文识别的软件有很多,拍照识别提取图片上的文字,翻译识别出来的结果, 很方便.但是,如果你的手机上没有安装类似的软件,这个时候该怎么办呢?其实只要你的手机 上有一个微信就可以,一个小 ...

  7. 怎么识别图片上的文字?告诉你3款简单又实用的识别软件

    平时大家在整理一些图片中的文字资料时,是否会想到运用文字识别工具来提升效率呢?现在市面上的图片文字识别工具多种多样,那我们应该选用哪些工具比较好呢?如果你目前有这个困扰的话,就来看看这篇文章吧,可以轻 ...

  8. 如何用python批量识别图片上的文字(一)

    最近收到一个任务,任务内容如下: 指定一个目录,内含数千张图片,要求能将指定区域的数字记录下来,便于分析,图片如下所示 红框部分是需要识别出的区域 先分析下功能需求 1.识别指定区域的数据 2.将数据 ...

  9. 我们怎样识别图片上的文字?图片识别文字软件有哪些?

    在日常生活中,大家都会保留很多照片.比如老师上课的PPT.上班办公的文档.随手截取的网页图片等等.这些有时候是因为我们来不及记录,而拍照作备用的,后期还需要我们去手写抄录.其实这效率未免太慢了,如果可 ...

  10. python识别图片上的文字_python识别图片文字

    因为学校要求要刷一门叫<包装世界>的网课,而课程里有200多道选择题,而且只能在手机完成,网页版无法做题,而看视频是不可能看视频的,这辈子都不可能看...所以写了几行代码来进行百度搜答案. ...

最新文章

  1. ICANN敦促业界使用DNSSEC,应对DNS劫持攻击
  2. RabbitMQ(九):RabbitMQ 延迟队列,消息延迟推送(Spring boot 版)
  3. 清华构建新一代数据集NICO,定义图像分类新标准
  4. 计算机技术在环境中的好处,浅谈计算机技术在德育现代化中的作用
  5. c与python的区别-c语言和python的区别是什么
  6. ThreadLocal原理与使用
  7. python xml字符串_python -解析字符串,并返回xml格式字符串 急该如何解决
  8. SuperEdge正式成为CNCF沙箱项目,腾讯云携手六家厂商在边缘计算领域踏入新篇章
  9. 猫眼java开发工资_Java硕士京东工作1年,跳槽后他期望薪资26K,大家感觉他可以吗...
  10. 网络监控工具 开源_在不到一个月的时间内,我如何使用开源工具成为网络漫画家
  11. python基础知识学习笔记(2)
  12. 使用UI创建vue项目并添加element ui和axios
  13. 【年终总结】可圈可点的2018年
  14. OpenCV探索之路(五):图像变换——边缘检测(canny、sobel、laplacian)
  15. 基于密度聚类的DBSCAN和kmeans算法比较
  16. C# 利用NPOI 实现Excel转html
  17. JavaScript批量定义对象
  18. apache Ignite 安装和helloworld
  19. 1-MySQL事务特性
  20. data单复数一样吗_Data和media的复数是什么?——别以为你很懂复数!

热门文章

  1. 普莱得电器递交注册:上半年营收3.7亿 拟募资5.6亿
  2. 数据分析中的常用数学模型实战教程笔记(上)
  3. 系统自动校时后发广播android,校园定时播放软件
  4. 未来生活进行时: 畅想未来新兴技术40年——百大趋势性技术汇总(中)
  5. windows功能_windows必备的系统功能增强2具,免费,简单,实用
  6. Cookie和Session
  7. JS中的this是什么,this的四种用法
  8. 微信公众号开发80端口映射解决方案
  9. 计算机桌面底部图标一直闪烁,win7系统桌面上的图标一直闪烁怎么办?图标一直闪烁的解决方法...
  10. 阿里巴巴-菜鸟网络和申通快递面试