基于PaddleOCR和ToolGood.Words测试从图片中检测敏感词
《测试.net开源敏感词检测库ToolGood.Words》介绍了基于ToolGood.Words实现敏感词检测的基本用法,而之前学习过使用PaddleOCR测试图片文字识别,于是想结合这两者实现基本的从图片中检测敏感词并用红框标识的功能。
代码实现逻辑比较简单:
第一步先调用PaddleOCR进行图片文字识别并记录识别出的文字区域,PaddleOcrAll类的识别结果返回类型PaddleOcrResultRegion的集合,其中记录有识别出的文字内容及位置信息,为后续敏感词检测做输入;
第二步逐区域检测敏感词,如果存在敏感词则记录其所属区域,最后用红框将所有含敏感词的文字区域标识出来。
程序的主要代码如下所示:
//记录检测的敏感词及其关联的图片区域private class MatchedRegion{public PaddleOcrResultRegion Region;public WordsSearchResult Result;}//图片文字识别OCRModel model = KnownOCRModel.PPOcrV2;model.EnsureAll();byte[] sampleImageData;using(MemoryStream ms = new MemoryStream()){picSrcImage.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);sampleImageData = ms.ToArray();}using (PaddleOcrAll all = new PaddleOcrAll(model.RootDirectory, model.KeyPath){AllowRotateDetection = true, // 允许识别有角度的文字Enable180Classification = false, // 允许识别旋转角度大于90度的文字})using (Mat src = Cv2.ImDecode(sampleImageData, ImreadModes.Color)){PaddleOcrResult result = all.Run(src);using(Graphics g =Graphics.FromImage(picSrcImage.Image)){Pen pThick = new Pen(Brushes.LightBlue, 5);foreach (PaddleOcrResultRegion region in result.Regions){Point2f[] ps = region.Rect.Points();int i = 0;for (; i < ps.Length - 1; i++){g.DrawLine(pThick, ps[i].X, ps[i].Y, ps[i + 1].X, ps[i + 1].Y);}g.DrawLine(pThick, ps[i].X, ps[i].Y, ps[0].X, ps[0].Y);m_regions.Add(region);}pThick.Dispose();}picSrcImage.Invalidate();}//逐区域检测敏感词WordsSearch ws = new WordsSearch();ws.SetKeywords(txtResearchWord.Text.Split(';', ';'));foreach (PaddleOcrResultRegion region in m_regions){List<WordsSearchResult> results = ws.FindAll(region.Text);foreach(WordsSearchResult result in results){MatchedRegion mr = new MatchedRegion();mr.Result = result;mr.Region = region;m_matchedRegions.Add(mr);}}
使用车牌截图及文本截图进行测试,效果如下所示,此时程序的关键变成了图片文字识别的准确率,如果准确率不高,则后续的敏感词检测也无从谈起。
参考文献:
[1]
基于PaddleOCR和ToolGood.Words测试从图片中检测敏感词相关推荐
- 一种基于DFA算法的敏感词检测JAVA程序片段
本文章提供一种基于DFA算法的敏感词检测JAVA程序片段,如下: 1.构造多叉树数据结构 import org.jetbrains.annotations.NotNull;/*** 多叉树* @aut ...
- 基于DFA算法实现过滤敏感词
该篇文章主要是记录我在实现敏感词过滤的实现, 通常我们如果对于敏感词过滤的话,首先想到的肯定是,把敏感词库制成一个数组或List,然后循环查询该list或数组,然后判断该次循环的敏感词是否在传入的字符 ...
- 基于PaddleOCR的集装箱箱号检测识别
基于PaddleOCR的集装箱箱号检测识别 项目背景 国际航运咨询分析机构 Alphaliner 在今年 3 月公布的一组数据,2021 年集装箱吞吐量排名前 30 的榜单中,上海港以 4702.5 ...
- 基于PaddleOCR的多视角集装箱箱号检测识别,实现模型串联推理
★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> 一.项目介绍 集装箱号是指装运出口货物集装箱的箱号,填写托运单时必填此项.标准箱号构成基本概念:采 ...
- 基于PaddleOCR的数字显示器字符识别
基于PaddleOCR的数字显示器字符识别 项目介绍 在电力工业的100多年历史中,"智能电表"仍处于部署和使用的初级阶段. 由于电表是电力公司的前端"收银机" ...
- 基于PaddleOCR复现RFLearning
请点击此处查看本环境基本用法. Please click here for more detailed instructions. 论文名称 Reciprocal Feature Learning v ...
- 生成常用验证码识别,基于PaddleOCR训练识别
★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> 生成常用验证码识别,基于PaddleOCR训练识别 零.背景 在一些传统网站或者App中登录需要验 ...
- 基于PaddleOCR的DBNet多分类文本检测网络之身份证识别
目的 全网的身份证识别大部分都是通过识别整张图片,然后再对数据进行格式化解析,这会照成很大的局限性,比如非摆正图片,图片上有其他干扰信息,这就会导致通过此方式来识别大大降低了准确率和不确定性.这篇文章 ...
- 基于PaddleOCR的FCENet论文总结和代码详解(持续更新)
Fourier Contour Embedding for Arbitrary-Shaped Text Detection 文末有总结一些CVPR有关OCR领域的最新论文及代码地址 Contribut ...
最新文章
- 用于Fluent Design的UWP社区工具包蓄势待发
- ajax请求flask以后得到的响应查看
- 理解卷积神经网络的利器:9篇重要的深度学习论文(上)
- 三国中最精辟的十句话
- 20151008_Android Application类
- Cknife与一句话木马提权
- 怎么清理c盘语言文件,怎么清理c盘垃圾
- 局域网中抓到NBNS数据包
- 最全-最详细的进制转换
- ζ(2)的夹逼代数证明
- 理解负反馈可以减小输出电阻
- JAVA学习6-集合工具类、流
- 华为快应用IDE:如何使用华为快应用IDE进行快应用测试
- SaaS、PaaS、DaaS、IaaS四种云系统说明
- 北京2021年初雪即为暴雪
- 世界的下一个主宰是谁?答案是人工智能!为什么这么说?
- 业务不间断重启-gr与nsr
- 大疆笔试——机器学习提前批
- 哨向 Mika Lelush 1
- 动态库编译通过,调用动态库函数运行出现undefined symbol