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

打印 上一主题 下一主题

主题 897|帖子 897|积分 2691

前言

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

1.注册并登录百度智能云账号
官方地址:https://cloud.baidu.com/

2.完成个人或企业认证

3.进入控制台总览

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


5.应用列表

项目搭建与配置

1.创建Winform客户端

  • 项目结构


  • 文本审核窗体设计


  • 图像审核窗体设计

2.Nuget安装BaiduAI包
NuGet\Install-Package Baidu.AI -Version 4.15.13
3.添加应用Key配置
文件:BaseConfig.json配置申请的应用信息
  1. {
  2.   "BaiduAI": {
  3.     "AppId": "xxxx",//配置自己申请的
  4.     "ApiKey": "xxxx",//配置自己申请的
  5.     "SecretKey": "xxxx"//配置自己申请的
  6.   }
  7. }
复制代码
项目代码实现

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

  • BaiduAI帮助类
    1. namespace BaiduAIAuditClient.Helper
    2. {
    3.     /// <summary>
    4.     /// 百度AI识别帮助类
    5.     /// </summary>
    6.     public class BaiduAI
    7.     {
    8.         public static string APP_ID = RamData.Instance.BaseConfig.BaiduAI.AppId;
    9.         public static string API_KEY = RamData.Instance.BaseConfig.BaiduAI.ApiKey;
    10.         public static string SECRET_KEY = RamData.Instance.BaseConfig.BaiduAI.SecretKey ;
    11.         /// <summary>
    12.         /// 检测文本
    13.         /// </summary>
    14.         /// <param name="text"></param>
    15.         /// <returns></returns>
    16.         public static BaiDuResult CheckedText(string text)
    17.         {
    18.             //判断是否审核为空文本
    19.             if (string.IsNullOrEmpty(text)) { return new BaiDuResult(); }
    20.             //初始化
    21.             var client = new Baidu.Aip.ContentCensor.TextCensor(API_KEY, SECRET_KEY);
    22.             client.Timeout = 60000;  // 超时,毫秒
    23.             var result = client.TextCensorUserDefined(text);
    24.             var baiduResult = new BaiDuResult();
    25.             if (result != null)
    26.             {
    27.                 if (result["conclusionType"] == null || result["conclusionType"].ToString() == "1")
    28.                 {
    29.                     baiduResult.IsSuccess = true;
    30.                 }
    31.                 else
    32.                 {
    33.                     baiduResult.IsSuccess = false;
    34.                     if (result["data"][0]["msg"] != null)
    35.                     {
    36.                         baiduResult.Messge = result["data"][0]["msg"].ToString() + ";";
    37.                     }
    38.                     if (result["data"][0]["hits"][0]["words"] != null)
    39.                     {
    40.                         baiduResult.Messge += "\r\n敏感词:\r\n" + result["data"][0]["hits"][0]["words"].ToString() + "。";
    41.                     }
    42.                 }
    43.             }
    44.             return baiduResult;
    45.         }
    46.         /// <summary>
    47.         /// 检测图片
    48.         /// </summary>
    49.         /// <param name="text"></param>
    50.         /// <returns></returns>
    51.         public static BaiDuResult CheckedImage(byte[] image)
    52.         {
    53.             //判断是够为空
    54.             if (image == null || image.Length == 0) { return new BaiDuResult(); }
    55.             //初始化
    56.             var client = new Baidu.Aip.ContentCensor.ImageCensor(API_KEY, SECRET_KEY);
    57.             client.Timeout = 60000;  // 超时,毫秒
    58.             var result = client.UserDefined(image);
    59.             var baiduResult = new BaiDuResult();
    60.             if (result["conclusionType"].ToString() == "1")
    61.             {
    62.                 baiduResult.IsSuccess = true;
    63.             }
    64.             else
    65.             {
    66.                 baiduResult.IsSuccess = false;
    67.                 if (result["data"][0]["msg"] != null)
    68.                 {
    69.                     baiduResult.Messge = result["data"][0]["msg"].ToString() + ";";
    70.                 }
    71.             }
    72.             return baiduResult;
    73.         }
    74.     }
    75.     /// <summary>
    76.     /// 自定义返回实体
    77.     /// </summary>
    78.     public class BaiDuResult
    79.     {
    80.         /// <summary>
    81.         /// 是否通过
    82.         /// </summary>
    83.         public bool IsSuccess { get; set; } = true;
    84.         /// <summary>
    85.         /// 消息
    86.         /// </summary>
    87.         public string Messge { get; set; }
    88.     }
    89. }
    复制代码
  • 文本审核调用
    1.       #region 文本审核
    2.       /// <summary>
    3.       /// 审核文本
    4.       /// </summary>
    5.       /// <param name="sender"></param>
    6.       /// <param name="e"></param>
    7.       private void btAuditTxt_Click(object sender, EventArgs e)
    8.       {
    9.           try
    10.           {
    11.               if (string.IsNullOrEmpty(rtbAuditContent.Text))
    12.               {
    13.                   MessageBox.Show("审核文本不能为空!","提示",MessageBoxButtons.OK);
    14.                   return;
    15.               }
    16.               BaiDuResult baiDuResult = BaiduAI.CheckedText(rtbAuditContent.Text);
    17.               if (baiDuResult.IsSuccess)
    18.               {
    19.                   rtbTxtAuditResult.ForeColor = Color.Green;
    20.                   rtbTxtAuditResult.Text = "文字审核通过!";
    21.               }
    22.               else
    23.               {
    24.                   rtbTxtAuditResult.ForeColor = Color.Red;
    25.                   rtbTxtAuditResult.Text = baiDuResult.Messge;
    26.               }
    27.           }
    28.           catch (Exception ex)
    29.           {
    30.               _logger.Error(ex.Message);
    31.           }
    32.       }
    33.       #endregion
    复制代码
  • 图片审核调用
    1.         #region 图片审核
    2.         /// <summary>
    3.         /// 浏览选择图片
    4.         /// </summary>
    5.         /// <param name="sender"></param>
    6.         /// <param name="e"></param>
    7.         private void btBrowse_Click(object sender, EventArgs e)
    8.         {
    9.             try
    10.             {
    11.                 //创建对象
    12.                 OpenFileDialog ofg = new OpenFileDialog();
    13.                 //设置默认打开路径,桌面
    14.                 ofg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    15.                 //设置打开标题、后缀
    16.                 ofg.Title = "请选择审核图片";
    17.                 ofg.Filter = "Png 图片|*.png|Jpg 图片|*.jpg|Jpeg 图片|*.jpeg|Bmp 图片|*.bmp|Gif 图片|*.gif";
    18.                 if (ofg.ShowDialog() == DialogResult.OK)
    19.                 {
    20.                     //得到打开的文件路径(包括文件名)
    21.                     txtImagePath.Text = ofg.FileName.ToString();
    22.                     Image img = Image.FromFile(ofg.FileName.ToString());
    23.                     this.picAuditImage.Image = img;
    24.                 }
    25.             }
    26.             catch (Exception ex)
    27.             {
    28.                 _logger.Error(ex.Message);
    29.             }
    30.          
    31.         }
    32.         /// <summary>
    33.         /// 审核图片
    34.         /// </summary>
    35.         /// <param name="sender"></param>
    36.         /// <param name="e"></param>
    37.         private void btAuditImage_Click(object sender, EventArgs e)
    38.         {
    39.             try
    40.             {
    41.                var ImageBytes = ImageHelper.ImageToBytes(txtImagePath.Text);
    42.                 if (ImageBytes==null)
    43.                 {
    44.                     lbImageAuditResult.ForeColor = Color.Red;
    45.                     lbImageAuditResult.Text = "确认选择的文件是否正确";
    46.                 }
    47.                 BaiDuResult baiDuResult = BaiduAI.CheckedImage(ImageBytes);
    48.                 if (baiDuResult.IsSuccess)
    49.                 {
    50.                     lbImageAuditResult.ForeColor =Color.Green;
    51.                     lbImageAuditResult.Text = "图片审核通过!";
    52.                 }
    53.                 else
    54.                 {
    55.                     lbImageAuditResult.ForeColor = Color.Red;
    56.                     lbImageAuditResult.Text = baiDuResult.Messge;
    57.                 }
    58.             }
    59.             catch (Exception ex)
    60.             {
    61.                 _logger.Error(ex.Message);
    62.             }
    63.         }
    64.         #endregion
    复制代码
演示调用


  • 文字审核

  • 图像审核

源码获取

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

乌市泽哥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表