通过自维护的敏感词库利用DFA技术和阿里云的第三方接口已经可以满足文本内容安全校验。

但是有些用户可能会发一些图片,在图片上加一些违规内容,阿里云的图片检测只能检测涉黄、暴恐涉政、违规、二维码等不良场景,他是无法校验文本是否违规的。其实使用阿里云的图片OCR识别是可以进行检测的,但是公司可能不希望承担这笔费用,想要节省开支。所以如果我们自己去校验的话,就需要利用OCR技术识别图片中的文字,然后将文字添加到需要文本内容检测的字段中,再利用DFA技术和阿里云的内容文本检测就可以判断用户发送的图片内容是否违规了。

OCR技术简介

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程

常见的OCR技术:

  1. 百度OCR,这种是收费的
  2. Tesseract-OCR,这是Google维护的开源OCR引擎,支持Java,Python等语言调用
  3. Tess4J,封装了Tesseract-OCR ,支持Java调用,比谷歌的更实用一些

Tess4j的使用

  1. 引入依赖
<dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.1.1</version>
</dependency>
  1. 创建工具类,简单封装一下tess4j
import lombok.Getter;
import lombok.Setter;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.awt.image.BufferedImage;
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "tess4j")//表示此类引用yml中的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;}
}
  1. 如果工具类是在一个单独的模块中,没有启动类,需要利用springboot自动装配原理,在resources目录下创建META_INF包,创建spring.factories文件,在文件中添加以下内容,这样就可以让此类注册成为bean对象进行使用了:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.heima.audit.tess4j.Tess4jClient
  1. 在需要使用此工具类的微服务的yml配置中添加两个属性:
tess4j:data-path: E:\workspace\tessdata # 表示tesseract的本地包路径language: chi_sim # 表示检测图片中的中文
  1. @Autowired注入tess4jClient,将需要审核的图片转成BufferedImage类型,通过tess4jClient对象调用doOCR方法,传入图片,就可以将图片中设计的文本生成字符串返回给你了。

测试举例:

    /*** 测试文本内容审核*/@Testpublic void testScanText() throws Exception {byte[] bytes = fileStorageService.downLoadFile("http://192.168.200.130:9000/leadnews/2021/11/19/test.png");//将图片的字节数组转换为butteredImageByteArrayInputStream in = new ByteArrayInputStream(bytes);BufferedImage imageFile = ImageIO.read(in);//识别图片的文字String result = tess4jClient.doOCR(imageFile);System.out.println("图片文字识别结果 "+result);}

图片文字识别—OCR技术相关推荐

  1. 吴恩达《Machine Learning》精炼笔记 12:大规模机器学习和图片文字识别 OCR

    作者 | Peter 编辑 | AI有道 系列文章: 吴恩达<Machine Learning>精炼笔记 1:监督学习与非监督学习 吴恩达<Machine Learning>精 ...

  2. 轻量级图片文字识别 OCR Paddle 使用说明

    百度轻量级 图片文字识别OCR 1.原文链接:https://www.paddlepaddle.org.cn/hub/scene/ocr 2.快速安装     https://github.com/P ...

  3. 吴恩达《机器学习》第十八章:图片文字识别OCR

    文章目录 十八.应用实例:图片文字识别OCR 18.1 问题描述和流程图 18.2 滑动窗口 18.3 获取大量数据和人工数据 18.4 上限分析:下一步工作 十八.应用实例:图片文字识别OCR 18 ...

  4. 开源免费图片文字识别 OCR 工具 tesseract v4.1.0 的 Docker 镜像制作与使用

    开源免费图片文字识别 OCR 工具 tesseract v4.1.0 的 Docker 镜像制作与使用 一 背景 在日常的一些工作中,偶尔也需要我们把图片转换为文字.目前大部分办公软件还无法实现类似的 ...

  5. python批量识别图片中文字_python实现中文图片文字识别--OCR about chinese text--tesseract...

    0.我的环境: win7 32bits python 3.5 pycharm 5.0 1.相关库 安装pillow: pip install pillow 安装tesseract: 自带了英文语言包, ...

  6. 【图片识别】java 图片文字识别 ocr (转)

    http://www.cnblogs.com/inkflower/p/6642264.html 最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为 ...

  7. 图片文字识别OCR模型免费API接口工具及DEMO

    jiaying系列 网页版演示地址:ai.moneymeeting.club 一.简介: paddleocr是一个开源的图片文字识别工具​. 目前我们提供的免费在线API支持png.jpg​文件格式. ...

  8. python图片转文字easyocr_支持40种语言的图片文字识别(OCR)项目

    Hi!大家好呀!我是你们努力的喵哥! OCR(光学字符识别)是我们日常很常用的人工智能技术.我们总会有从图片中提取文字的需求.你是不是有需要从图片复制文字的经历?手打是最低效的选择.我们可以使用 OC ...

  9. 批量图片文字识别OCR场景试用体验-静图变活字,腐朽变神奇

    [优爱酷]图片转文字,批量转.多任务并行转.离线转.场景转,支持表格https://gitee.com/uicoolcn/UiCoolOCR 动态OCR: 针对短视频文案.音频歌词.电影字幕.动态网页 ...

  10. attention 文字识别算法_支持40种语言的图片文字识别(OCR)项目

    Hi!大家好呀!我是你们努力的喵哥! OCR(光学字符识别)是我们日常很常用的人工智能技术.我们总会有从图片中提取文字的需求.你是不是有需要从图片复制文字的经历?手打是最低效的选择.我们可以使用 OC ...

最新文章

  1. redis 操作dict array
  2. 洛谷 [P1198] 最大数
  3. 性能测试知多少--系统计数器与硬件分析
  4. JAVA多线程提高十四: 面试题
  5. C# WinForm开发系列 - Excel
  6. Dojo学习笔记(7. dojo.dom)
  7. CVPR 2019 CLIC 图像压缩挑战赛冠军方案解读
  8. python行数据切片_通过切片访问DataFrame行
  9. 检查硬件变化的命令kudzu
  10. @bean 什么时候执行_写好一个Spring组件的实现步骤是什么?
  11. TypeScript 的存在削弱了 JavaScript 生态系统?
  12. 天时、地利、人和,技术成熟推动闪存联盟2.0落地
  13. 国外程序员访谈:学无止境
  14. 网络对抗技术——密码破解技术
  15. Latex中导入VISIO图片
  16. Android窗口被隐藏了怎么办,Android studio中IDE窗口怎么显示或者隐藏?
  17. Error: PostCSS received undefined instead of CSS string核心解决方法
  18. 大数据,云计算和物联网,三者之间的关系是什么?
  19. 从基础接口工具postman开始夯实软件测试基础(一)
  20. LOJ#2863. 「IOI2018」组合动作 交互

热门文章

  1. 转行之后,我为什么选择做软件测试
  2. 提供搜题公众号题库接口
  3. MySQL数据库实操教程(24)——用户管理
  4. excel学习-批量填充单元格
  5. 爬虫项目报错Traceback (most recent call last): File D:/studay/python/one/day01/07_post请求.py, line 38,
  6. iPhone屏幕数据
  7. 京东无法登录显示服务器异常,京东账号异常怎么解决?方法介绍
  8. python怎么换背景颜色_更换python默认编辑器背景色的操作方法
  9. 群晖套件 Transmission 汉化
  10. [CVE-2021-45105] Apache Log4j2 漏洞复现与原理详细分析