基于百度AI实现文字和图像敏感内容审核

基于,百度,ai,实现,文字,图像,敏感,内容,审核 · 浏览次数 : 202

小编点评

**代码实现** ```csharp namespace BaiduAIAuditClient.Helper { /// /// 百度AI识别帮助类 /// public class BaiduAI { public static string APP_ID = RamData.Instance.BaseConfig.BaiduAI.AppId; public static string API_KEY = RamData.Instance.BaseConfig.BaiduAI.API_KEY; public static string TEXT_URL = RamData.Instance.BaseConfig.BaiduAI.TEXT_URL; public static string IMAGE_URL = RamData.Instance.BaseConfig.BaiduAI.IMAGE_URL; public static BaiDuResult CheckedText(string text) { //构造请求参数 var params = new Dictionary(); params.Add("text", text); //发送请求 var response = WebClient.PostAsync(TEXT_URL, params); //解析响应 var result = JsonSerializer.Deserialize(response.Content); return result; } public static BaiDuResult CheckedImage(byte[] imageBytes) { //构造请求参数 var params = new Dictionary(); params.Add("image", Convert.ToBase64String(imageBytes)); //发送请求 var response = WebClient.PostAsync(IMAGE_URL, params); //解析响应 var result = JsonSerializer.Deserialize(response.Content); return result; } } } ``` **其他说明** * `RamData.Instance.BaseConfig` 是一个配置文件类,包含 BaiduAI 的 API 密钥和 URL。 * `WebClient` 是一个用于发送 HTTP 请求的类。 * `JsonSerializer` 是一个用于序列化 JSON 数据的类。 * `BaiDuResult` 是一个包含 `IsSuccess` 和 `Messge` 属性的类。 * `ImageHelper.ImageToBytes()` 是一个用于将图像转换为字节的 helper 方法。

正文

前言

百度AI是指百度公司的人工智能技术全称。它采用深度学习技术,包括自然语言处理、语音识别、计算机视觉、知识图谱等,可应用于各个领域如互联网、医疗、金融、教育、汽车、物流等。百度AI的发展将帮助人类更好地理解世界和提高生活品质,接下来就通过一个小案例演示实现百度AI在文字和图像敏感审核应用。

项目准备

1.注册并登录百度智能云账号

官方地址:https://cloud.baidu.com/

image

2.完成个人或企业认证

image

3.进入控制台总览

image

4创建应用,申请BaiduAI官方的授权KEY

image

image

5.应用列表

image

项目搭建与配置

1.创建Winform客户端

  • 项目结构

image

  • 文本审核窗体设计

image

  • 图像审核窗体设计

image

2.Nuget安装BaiduAI包

NuGet\Install-Package Baidu.AI -Version 4.15.13

3.添加应用Key配置

文件:BaseConfig.json配置申请的应用信息

{
  "BaiduAI": {
    "AppId": "xxxx",//配置自己申请的
    "ApiKey": "xxxx",//配置自己申请的
    "SecretKey": "xxxx"//配置自己申请的
  }
}

项目代码实现

贴出实现功能的核心代码,整个项目的源码文末尾提供获取方式。

  • BaiduAI帮助类

    namespace BaiduAIAuditClient.Helper
    {
        /// <summary>
        /// 百度AI识别帮助类
        /// </summary>
        public class BaiduAI
        {
            public static string APP_ID = RamData.Instance.BaseConfig.BaiduAI.AppId;
            public static string API_KEY = RamData.Instance.BaseConfig.BaiduAI.ApiKey;
            public static string SECRET_KEY = RamData.Instance.BaseConfig.BaiduAI.SecretKey ;
    
            /// <summary>
            /// 检测文本
            /// </summary>
            /// <param name="text"></param>
            /// <returns></returns>
            public static BaiDuResult CheckedText(string text)
            {
                //判断是否审核为空文本
                if (string.IsNullOrEmpty(text)) { return new BaiDuResult(); }
                //初始化
                var client = new Baidu.Aip.ContentCensor.TextCensor(API_KEY, SECRET_KEY);
                client.Timeout = 60000;  // 超时,毫秒
                var result = client.TextCensorUserDefined(text);
                var baiduResult = new BaiDuResult();
                if (result != null)
                {
                    if (result["conclusionType"] == null || result["conclusionType"].ToString() == "1")
                    {
                        baiduResult.IsSuccess = true;
                    }
                    else
                    {
                        baiduResult.IsSuccess = false;
                        if (result["data"][0]["msg"] != null)
                        {
                            baiduResult.Messge = result["data"][0]["msg"].ToString() + ";";
                        }
                        if (result["data"][0]["hits"][0]["words"] != null)
                        {
                            baiduResult.Messge += "\r\n敏感词:\r\n" + result["data"][0]["hits"][0]["words"].ToString() + "。";
                        }
                    }
                }
    
                return baiduResult;
            }
    
            /// <summary>
            /// 检测图片
            /// </summary>
            /// <param name="text"></param>
            /// <returns></returns>
            public static BaiDuResult CheckedImage(byte[] image)
            {
                //判断是够为空
                if (image == null || image.Length == 0) { return new BaiDuResult(); }
                //初始化
                var client = new Baidu.Aip.ContentCensor.ImageCensor(API_KEY, SECRET_KEY);
                client.Timeout = 60000;  // 超时,毫秒
                var result = client.UserDefined(image);
    
                var baiduResult = new BaiDuResult();
                if (result["conclusionType"].ToString() == "1")
                {
                    baiduResult.IsSuccess = true;
                }
                else
                {
                    baiduResult.IsSuccess = false;
                    if (result["data"][0]["msg"] != null)
                    {
                        baiduResult.Messge = result["data"][0]["msg"].ToString() + ";";
                    }
                }
                return baiduResult;
            }
        }
        /// <summary>
        /// 自定义返回实体
        /// </summary>
        public class BaiDuResult
        {
            /// <summary>
            /// 是否通过
            /// </summary>
            public bool IsSuccess { get; set; } = true;
    
            /// <summary>
            /// 消息
            /// </summary>
            public string Messge { get; set; }
        }
    
    }
    
  • 文本审核调用

          #region 文本审核
          /// <summary>
          /// 审核文本
          /// </summary>
          /// <param name="sender"></param>
          /// <param name="e"></param>
          private void btAuditTxt_Click(object sender, EventArgs e)
          {
              try
              {
                  if (string.IsNullOrEmpty(rtbAuditContent.Text))
                  {
                      MessageBox.Show("审核文本不能为空!","提示",MessageBoxButtons.OK);
                      return;
                  }
    
                  BaiDuResult baiDuResult = BaiduAI.CheckedText(rtbAuditContent.Text);
                  if (baiDuResult.IsSuccess)
                  {
                      rtbTxtAuditResult.ForeColor = Color.Green;
                      rtbTxtAuditResult.Text = "文字审核通过!";
                  }
                  else
                  {
                      rtbTxtAuditResult.ForeColor = Color.Red;
                      rtbTxtAuditResult.Text = baiDuResult.Messge;
                  }
    
              }
              catch (Exception ex)
              {
                  _logger.Error(ex.Message);
              }
          }
    
          #endregion
    
    
    
  • 图片审核调用

            #region 图片审核
            /// <summary>
            /// 浏览选择图片
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btBrowse_Click(object sender, EventArgs e)
            {
                try
                {
                    //创建对象
                    OpenFileDialog ofg = new OpenFileDialog();
                    //设置默认打开路径,桌面
                    ofg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                    //设置打开标题、后缀
                    ofg.Title = "请选择审核图片";
                    ofg.Filter = "Png 图片|*.png|Jpg 图片|*.jpg|Jpeg 图片|*.jpeg|Bmp 图片|*.bmp|Gif 图片|*.gif";
                    if (ofg.ShowDialog() == DialogResult.OK)
                    {
                        //得到打开的文件路径(包括文件名)
                        txtImagePath.Text = ofg.FileName.ToString();
                        Image img = Image.FromFile(ofg.FileName.ToString());
                        this.picAuditImage.Image = img;
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error(ex.Message);
                }
             
            }
    
            /// <summary>
            /// 审核图片
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btAuditImage_Click(object sender, EventArgs e)
            {
                try
                {
                   var ImageBytes = ImageHelper.ImageToBytes(txtImagePath.Text);
                    if (ImageBytes==null)
                    {
                        lbImageAuditResult.ForeColor = Color.Red;
                        lbImageAuditResult.Text = "确认选择的文件是否正确";
                    }
                    BaiDuResult baiDuResult = BaiduAI.CheckedImage(ImageBytes);
                    if (baiDuResult.IsSuccess)
                    {
                        lbImageAuditResult.ForeColor =Color.Green;
                        lbImageAuditResult.Text = "图片审核通过!";
                    }
                    else
                    {
                        lbImageAuditResult.ForeColor = Color.Red;
                        lbImageAuditResult.Text = baiDuResult.Messge;
                    }
    
                }
                catch (Exception ex)
                {
                    _logger.Error(ex.Message);
                }
            }
    
            #endregion
    

演示调用

  • 文字审核

    image

  • 图像审核

image

源码获取

关注公众号,后台回复关键字:BaiduAI文字和图像敏感审核

与基于百度AI实现文字和图像敏感内容审核相似的内容:

基于百度AI实现文字和图像敏感内容审核

前言 百度AI是指百度公司的人工智能技术全称。它采用深度学习技术,包括自然语言处理、语音识别、计算机视觉、知识图谱等,可应用于各个领域如互联网、医疗、金融、教育、汽车、物流等。百度AI的发展将帮助人类更好地理解世界和提高生活品质,接下来就通过一个小案例演示实现百度AI在文字和图像敏感审核应用。 项目

基于ReAct机制的AI Agent

当前,在各个大厂纷纷卷LLM的情况下,各自都借助自己的LLM推出了自己的AI Agent,比如字节的Coze,百度的千帆等,还有开源的Dify。你是否想知道其中的原理?是否想过自己如何实现一套AI Agent?当然,借助LangChain就可以。

声音好听,颜值能打,基于PaddleGAN给人工智能AI语音模型配上动态画面(Python3.10)

借助So-vits我们可以自己训练五花八门的音色模型,然后复刻想要欣赏的任意歌曲,实现点歌自由,但有时候却又总觉得少了点什么,没错,缺少了画面,只闻其声,却不见其人,本次我们让AI川普的歌声和他伟岸的形象同时出现,基于PaddleGAN构建“靓声靓影”的“懂王”。 PaddlePaddle是百度开源

万物皆可集成系列:低代码通过Web API对接百度AI服务

数据录入在应用中是最常见也是最繁重的一项工作,而对于基础数据的维护更是要保证其准确性。比如需要录入身份证信息时,手工输入的效率低还容易出错;报销填发票时,要从一张一张的发票中找到金额、开票日期等一堆信息,一直重复着复杂的工作,类似的场景数不胜数。但现在,我们可以完全通过百度AI文字识别功能解决以上问

跟我学Python图像处理丨图像分类原理与案例

摘要:本篇文章将分享图像分类原理,并介绍基于KNN、朴素贝叶斯算法的图像分类案例。 本文分享自华为云社区《[Python图像处理] 二十六.图像分类原理及基于KNN、朴素贝叶斯算法的图像分类案例丨【百变AI秀】》,作者:eastmount 。 一.图像分类 图像分类(Image Classifica

基于百度智能云的OCR接口进行图文识别

由于一些客户的内部系统需要提取一些记录信息,如果手工录入会变得比较麻烦,因此考虑使用百度云的OCR进行图片文字的提取处理,综合比较了一下开源免费的Tesseract 类库进行处理,不过识别效果不太理想,因此转为了百度的OCR云接口处理方式,测试的效果比较理想,基本上较少出现错别字。本篇随笔介绍如何利用百度OCR进行图片文字的提取处理,以便从别的系统中批量化获得响应的系统数据,然后进行相应的格式化处

#Python实例 计算外卖配送距离(基于百度API接口)---第二篇

https://www.cnblogs.com/simone331/p/17218019.html 在上一篇中,我们计算了两点的距离(链接为上篇文章),但是具体业务中,往往会存在一次性计算多组,上百甚至上千的距离。 所以我们需要利用python函数,批量去处理和传参,批量计算距离。前面的操作去第一篇

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - Docker)

[toc] [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览](https://www.cnblogs.com/vipsoft/p/17439619.html) [百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Padd

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服务化部署 - CentOS 7)

Paddle Serving 是飞桨服务化部署框架,能够帮助开发者轻松实现从移动端、服务器端调用深度学习模型的远程预测服务。 Paddle Serving围绕常见的工业级深度学习模型部署场景进行设计,具备完整的在线服务能力,支持的功能包括多模型管理、模型热加载、基于Baidu-RPC的高并发低延迟响应能力、在线模型A/B实验等,并提供简单易用的Client API。Paddle Serving可以

防微杜渐,未雨绸缪,百度网盘(百度云盘)接口API自动化备份上传以及开源发布,基于Golang1.18

奉行长期主义的开发者都有一个共识:对于服务器来说,数据备份非常重要,因为服务器上的数据通常是无价的,如果丢失了这些数据,可能会导致严重的后果,伴随云时代的发展,备份技术也让千行百业看到了其“云基因”的成长与进化,即基于云存储的云备份。 本次我们使用Golang1.18完成百度网盘(百度云盘)接口AP