现在的位置: 首页 > 综合 > 正文

【调研】特殊网络图像的敏感词检测,图像文本检测提取

2018年04月12日 ⁄ 综合 ⁄ 共 2534字 ⁄ 字号 评论关闭

一 调研·敏感图像能做点什么

1  特殊网络文本图像:

扭曲? 倾斜?验证码形式? 

躲避OCR。

related work: 验证码类型?

特殊网络文本图像是一类用来躲避OCR的图像,大多包含敏感信息。(人能够读懂,机器无法识别?)

针对这类图像的图像文本检测识别算法?现有工作。

创新点:套用现有技术,应用到这类识别中。做出来的结果会比现有工作好。或者更好解决了特殊网络文字图像识别问题。

2 关键词检测与推送:

关键词检测方法: 

词库。 相近词。 推断一段语句是否敏感。现有工作。

(可选)创新点: 

基于文本的舆情分析已经十分成熟。

但是获知重要舆情,如何实时性得知最近舆情?别人都是怎么做的?电子邮件,短信。。。。

创新点:我们提出了对舆情进行推送,圆满解决了这一问题。

二 网络图像文本提取

1 数据集

 ICDAR 2011 born-digital 

2 评测方法

0 从icdar获取gt数据(官方没有提供,我们就爬下来吧)
 for((i=1; i<103; i++)) do 
      wget "http://www.cvc.uab.es/icdar2011competition/?com=results&action=image_2&id_submit=1130&image_num=`echo $i`" 
          -O "`echo $i`.html"; 
      done   // crawl web content
 for((i=1; i<103; i++)) do 
      s=$( cat $i.html |  grep -o "http:\/\/158.109.8.42\/gt\/datasets\/webimages\/[^\"\']*gt[^\"\']*.png" ) ;  // get image url
      wget $s -O gt_$i.png;   // save gt images
      done;

1 testSeg 评测文本区域提取效果:

a 对提取结果图像和gt图像进行比对 (myeval.cc) 获得单副图像的准确率、召回率
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>
#include <stdio.h>
using namespace std;
using namespace cv;
int main(int argc, char** argv )
{
	Mat gt, grey;
	gt = imread(argv[2]);
	grey = imread(argv[1]);

	cvtColor(gt, gt, CV_RGB2GRAY);
	threshold(gt, gt, 254, 255, CV_THRESH_BINARY); // <- for ICDAR gt
	cvtColor(grey, grey, CV_RGB2GRAY);
	threshold(grey, grey, 254, 255, CV_THRESH_BINARY); // <- for ICDAR grey

	Mat tmp_mask = gt & (grey);
	int a = countNonZero(tmp_mask), b = countNonZero(gt), c = countNonZero(grey);
	cout << a << " " << b << " " << c << endl;
	// cout << "now calculate" << endl;
	// cout << "Pixel level recall = " << ((float) a) / b << endl;
	// cout << "Pixel level precission = " << (c == 0? 0.0: ((float)a) / c) << endl;
	return 0;
}

b 把所有测试结果汇总(alleval.cc )成总的准确率召回率
#include <iostream>
using namespace std;

int main(){
	int a, b, c;
	int a_ = 0, b_ = 0, c_ = 0;
	char buf[100];
	while(cin >> buf){
		if ( !buf[0] ) break;
		// cout << " add " << buf << endl;
		cin >> a >> b >> c;
		a_ += a, b_ += b, c_ += c;
	}
	cout << a_ << ":"<< b_ << ":" << c_ << endl;
	cout << " recall: " << (float)a_ / b_ << endl;
	cout << " precision: " << (float)a_ / c_ << endl;
	return 0;
}

c 编译以上文件,生成评测软件

g++ myeval.cc `pkg-config opencv --libs` -o myeval ; sudo  ln -s `pwd`/myeval /usr/bin/;

g++ alleval.cc `pkg-config opencv --libs` -o alleval ;  sudo  ln -s `pwd`/alleval /usr/bin/;

d 评测
检测文字:
 for file in `ls | grep "jpg"`; do text_extraction $file; textdetect $file; done

评测脚本:

#!/bin/sh
for file in `ls | grep "png"`; do name=`echo $file|sed 's/.png//'`; echo $name.jpg; myeval $1/$name.jpg.out.png gt/gt_$name.png; done 

最新评测脚本:

for((i=1; i<142; i++)) do 
     textdetect img_$i.png > tmp; 
     echo $i.png;  myeval out1/img_$i.png.out.png gt/gt_$i.png; 
     done > org11

调用: sh  sc.sh  out1/out2 > result_i 对所有图像进行评测

执行     cat result_i | alleval  获得汇总后的评测结果

sh sc.sh out1 > org1; sh sc.sh out2 > org2; cat org1 | alleval; cat org2 | alleval; 

3 使用的方法

目测采用graph邻接图描述regions的相似关系  。

添加 笔划宽度另类方差统计。获得每个region的置信度。

再在regions【】上graph cut。得到结果集合(包含文本的regions)。

抱歉!评论已关闭.