JavaServer集成图谱鉴黄

(适用于ydm-java接口与后台,如有误入,但愿也能给您带来帮助)
引子:

起源于社交,后宫应用,当时候业主考量周密,让增添这么一个功能,并推荐使用 图谱科技 的鉴黄。说白了就是在视频聊天时,截取两者的画面,传给接口,接口将图片地址告诉图谱,图谱给反馈,色情、性感、正常;并给出认定的百分比以及是否需要复审的状态。

碎碎念:
  • 图谱注册一个账户都需要人工审核,想要试用还得加客服QQ,这里也是一样的,官方提供 JavaSDK ,在客服的指引下上传公钥,保存私钥;客服一般会提供一些测试所需的AppKey之类;
  • 直到现在Android还做不到在融云视频聊天时截取图片上传,因为各种方面的限制吧;所以这个功能只在iOS上是完美的;App端开一个定时器,按照固定的秒数截取图片上传,以base64的形式,接口解作图片,将地址给图谱发过去,图谱就会有返回值了。这个时候各种逻辑啊,插入数据库啊之类的就开始了;另外,会做一个判断,在返回值是正常且不需要复审的情况下,将刚刚那张图片删除掉,以节省服务器空间;而有嫌疑的图片就留着,当做证据好了。
接口处理的代码:
/**
     * 保存鉴黄表信息
     */
    public String saveComplaint(Integer video_order,String img,String privateKey,HttpServletRequest request){
        //查询双方
        BalanceOfPayments balanceOfPayments  = balanceOfPaymentsMapper.queryConsumeById(video_order);
        //保存
        Complaint complaint = new Complaint();
        //请求图谱
        ArrayList<String> imgs = new ArrayList<String>();
        imgs.add(TUPUIMGPATH + img);
        String[] tags = {String.valueOf(video_order)};
        //返回值
        JSONObject obj = TuPuApi.tuPuApi(imgs, tags, privateKey);
        //验证是否请求成功
        Integer code = (Integer) obj.get("code");
        if(0 == code){
            log.info("成功接收到图谱的反馈,调用鉴黄成功");
            JSONObject objImg = (JSONObject) obj.get("54bcfc6c329af61034f7c2fc");
            List<JSONObject> fileList =  (List<JSONObject>) objImg.get("fileList");
            Double rate = (Double) fileList.get(0).get("rate");
            Integer label = (Integer) fileList.get(0).get("label");
            String name = (String) fileList.get(0).get("name");
            log.info(name);
            //fileList.get(0).get("tag");
            Boolean flag = (Boolean) fileList.get(0).get("review");
            Integer review = 2;
            if(flag){
                review = 1;
            }

            
            complaint.setVideo_order(video_order);//视频聊天订单号
            complaint.setBuy_id(balanceOfPayments.getBuyPersion().getId());//拨打人
            complaint.setSell_id(balanceOfPayments.getSellPersion().getId());//接听者
            complaint.setCreate_date(new Date());//鉴黄申请时间
            complaint.setReason("视频聊天自动鉴黄");//鉴黄备注
            complaint.setScreenshot(img);//鉴黄投诉图片
            complaint.setState(3);//图谱审核
            complaint.setType(0);//视频截图自动投诉

            complaint.setLabel(label);//(鉴黄)分类: 0:色情; 1:性感; 2:正常; 
            complaint.setReview(review);//(鉴黄)是否需要人工复审该图片  1需要  2不需要
            complaint.setRate(new BigDecimal(rate));//(鉴黄)图像被识别为某个分类的概率值


        }else{
            log.error("鉴黄反馈出错,具体原因为:" + obj.get("message"));
            return "passbuterror";
        }

        int count = complaintMapper.add_complaint(complaint);

        if(count != 1){
            log.error("保存鉴黄信息出错,视频订单id为:" + String.valueOf(video_order));
            return "passbuterror";
        }

        if(complaint.getLabel() == 2 && complaint.getReview() == 2){
            //删除鉴黄图片
            String var = PathUtil.GetAppName(request).replace("/", "\\");
            String project = PathUtil.GetAppRealPath(request);
            String path = project.replace(var+"\\", "").trim();
            FileUtil.delFile(path + img.replace("/", "\\"));
            return "pass";
        }else if(complaint.getLabel() != 2 && complaint.getReview() == 2){
            return "yellow";
        }else{
            return "maybe";
        }
    }

图谱提供的Api:

/**
     * 请求图谱
     * @param fileList   url的集合
     * @param tags       图片的附属信息
     * @param privateKey    私钥的路径
     * @return
     */
    public static JSONObject tuPuApi(ArrayList<String> fileList,String[] tags,String privateKey){
        
        Api api = new Api(SECRETID, privateKey);
        
        JSONObject result = api.doApiTest(ConfigUtil.UPLOAD_TYPE.UPLOAD_URI_TYPE, fileList,tags);
        
        return result;
    }
备注:
  • 因为图谱需要的私钥是以路径的形式传入的,不是像支付宝那样写在代码里的;不应该放到upload底下,实际应该放到服务器的某个位置,做自己的读取,放到upload下,外界都能访问到了;
  • 每一个(组)图片都对应一个tag,反馈的时候会带过来,我这里放的是订单的id,好对后台的逻辑进行判断;
  • 官方的做法是推荐传很多的url,但是这里是实时的需求,所以就单张单张的调用了;
  • base64的做法我认为不太可取,实际上App端传图还是以file的形式比较好,接口这边做文件上传的处理就行,另外图谱支持url和流的形式上传图片,当然以url的时候,需要做外网映射,不然图谱那边访问不到;
  • 在图谱官网上传公钥的时候,需要将头尾保留
  • 图谱应该是远近闻名了,在融云里、七牛里均有集成。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容