摘 要 通过分析干部测评工作的特点,利用图像识别技术采集数据,采用优化的数据统计算法计算测评结果,提供了灵活的表格定制功能,设计了干部测评统计分析系统,从而提高了测评数据的统计速度和准确率。
关键词 干部测评;图像识别;数据统计;表格定制
1 引言
党的十六届四中全会提出了“抓紧制定体现科学发展观和正确政绩观要求的干部实绩考核评价标准”的要求。为了做好领导干部的考核和评价,各单位需要结合实际情况设定考评内容、指标,科学设置实现的途径、方法,以及正确运用考评结果,从而产生不同种类的测评表和统计分析方法。因此,迫切需要一个功能完善的测评统计系统对各种测评内容进行识别,对测评数据进行统计分析。
本文通过分析干部测评工作的特点,设计出干部测评统计分析系统的体系结构,然后对系统中的关键技术进行了阐述,最后介绍了系统的应用情况。
2 系统设计
2.1 需求分析
通过对干部测评的内容和标准进行分析,我们发现干部测评的内容较多,测评项目变化比较频繁,如果系统采用统一的测评格式不能满足用户的需要。WWW.133229.cOm同时,大部分单位采用“无记名投票”的方式对干部进行评价,这种方式简单易行,用户容易接受。我们对用户的选票进行对比后发现:用户的选票的内容和数目虽然各不相同,但是基本格式比较类似,可以归类实现。因此,我们决定从选票着手,对选票进行扫描转换成图像格式,利用图像识别和分析算法对选票进行分析计算,从而得到准确的测评数据。
通过对基于图像识别的相关系统进行对比,我们发现对于图像的识别可以分为三类:①对复杂的图像进行识别,如人脸、指纹的识别。②利用的专用的硬件设备对专用的卡片进行识别,如考试答题卡的识别。③对简单图像的模式识别;如对汽车牌照数字的识别。我们使用的选票(测评表如图1所示)是普通的表格(图1),既没有指纹的复杂图像,也没有答题卡的标准格式。在每个表格中一般是用户填写的勾或圈。如果系统进行模式识别,需要存储大量的勾或圈的特征模式库,将用户的勾和模式库中的图像数据进行对比,这样识别结果受到模式库大小的限制,同时识别的速度较慢。因此我们采用“定位识别区域,比较像素数目”的方法对测评表图像进行识别,这种识别方法在保证识别正确率的同时,提高了识别的速度。
图1 测评表图例
系统完成对测评表图像的识别后,得到了测评数据。我们需要对测评数据进行存储。测评系统的数据主要包括:测评主体信息,测评表信息、测评数据和系统配置信息。系统中没有多媒体数据,数据量不大,因此,采用小型的数据库系统可以满足数据的存储需求。
系统需要为用户提供统计结果。因为测评的内容较多,并每个测评项目包括多个测评小项,所以,系统要提供对不同测评项目的结果进行统计,同时将得票数加权计算成百分制,最后按照不同的排序方式直观地显示给用户。
最后,不同的测评表具有不同的格式,相同的表包括测评项目不同,因此,系统需要提供修改测评表类型和测评项目的表定制功能。
2.2 系统结构
根据系统的需求分析,系统采用三层结构:数据库层、数据处理层和用户接口层,如图2所示。
(1)数据库层是存储数据的数据库系统。为了达到较小的数据冗余,保证数据记录间逻辑关系合理,在测评项目修改时,减少对测评数据的影响。数据库的设计按照“数据表尽量小,多表连接”的原则,使用小型的数据表存储基本数据,将基本表连接后提供不同的数据视图。数据库的结构如图3所示,数据库中主要包括7个表:测评数据表、人员信息表、测评客体表、测评内容表(测评小项表)、测评等级表、测评大项表和表基本信息表。各个表之间按照惟一的id号进行关联。从而构成完整的测评数据库。
图2 系统结构图
图3 数据库结构和关系图
(2)数据处理层包括数据的读写、分析和统计接口。这一层是系统的核心部分,它负责从底层数据库中读取数据,将数据统计分析后,提交给上层界面显示;并且从用户接口层接收到输入的数据进行处理,最后写入到数据库中存储。处理层包含系统主要的类:初始化和连接数据库的cadorecordset 类和cadoconnection类,用于数据管理的cdatamgr类,用于数据统计的cdatastat类。
(3)用户接口层包括图像识别、数据显示、系统设置和打印排序等功能。图像识别功能提供了用户选择测评主体和显示识别进度的界面。数据显示功能具有按照测评项目、测评小项、测评等级等多种形式显示测评结果的能力。系统设置包括对测评主体、测评表类型、测评表等级、测评表项目等信息的设置。排序操作提供了对测评结果按照不同属性进行排序的功能。打印操作和普通系统的打印功能不相同,它将测评结果数据导出到word中显示,用户可以根据自己的需要,修改格式后打印。它避免了部分系统不能完全显示打印数据的缺陷,同时提高了打印操作的灵活性。用户接口层含有最多的类,其中有:完成打印功能的cdataprint类,提供排序的cdatasort类,显示主窗口的cmainframe类,显示主要框架的cuserinfoview类和cuserlistview类,还有实现系统设置功能的类。
3 关键技术
3.1 图像识别
由于经过扫描设备扫描生成的是8位bmp灰度图像文件,文件的每个字节数据对应图像的单个像素,根据这一特点对图像的每个有关像素进行读取和分析。
处理步骤如下:
(1)将文件中的数据读入缓冲区中,并得到位图文件的大小,如图像高度、宽度以及每一行的像素个数。
(2)从数据缓冲区的一个较小偏移处开始顺序读取。为了避免扫描图像出现黑边干扰判读,取值应避免是图像边界,以后每读到图像边界都应跳过边界范围。
(3)由于对于位图的读取是按照从下至上、从左至右的顺序逐行逐个像素点读取。因此,理想情况下得到的第一个深色像素点且满足两根线交叉点条件的点应是表格的左下角点,如果得到的第一个这样的点经过判定不是左下角点,则应该是图像出现右下倾斜的情况,得到的应是右下角点。为避免这种情况,可给出一定的判定条件,保证得到的第一个满足这些条件的点应是表格的左下角点。
(4)根据表格的特点和实际测评对象数沿线搜索得到评价区域的左下起始位置点。在搜索过程中,通过得到的一些与表格起始位置点同行或同列的点的情况,判断出表格是否发生倾斜,如果倾斜超过一定程度,则应认为这个图像出错,应重新扫描这个表格生成新的图像文件。
(5)找到评价区域左下起始点后,从通用性来讲,应该找到第一行每个单元格的下边界点,从而以此为依据得到每一列单元格的宽度;再找到第一列每个单元格的左边界点,从而可以得到每一行单元格的高度。根据这些宽度和高度值得到每一个单元格的四个角点的位置,确定每一个单元格的范围。
(6)根据每个单元格的范围,取一定的子范围搜索每个单元格内的深色像素点的个数,为避免可能将边框包括在内的情况,对于单元格中同行或同列的深色像素点只按照一个深色像素点来计数,这样即使将四个边框都包括进来,也只会认为只有四个像素点,不会对结果有大的影响。
(7)根据测评表要比较的项目情况,根据先前给出的有关参数,以一定数目的单元格为一组,对中间出现的深色像素点个数进行比较,找到深色像素点个数最多的单元格,得到其对应位置,进行相应项的计数,作为后面的统计依据。
3.2 数据统计和分析
按照需求分析,系统需要提供按照测评项目和不同的测评小项的数据统计,同时提供票数、分数和等级百分比等多种形式的综合测评结果。因此,系统需要将测评数据统一存储,按照用户的需求快速地查找并统计出测评结果。为了实现这个目标,系统从数据库层到数据的处理层进行了合理的设计。
首先,为了减少数据的冗余,并提供综合的测评数据,系统的基本数据:人员信息、测评项目、测评等级、测评小项等分别存储在不同的基本表中,并且具有连续的惟一id号。如图4所示,测评等级信息表中的每一个等级具有惟一的id号“dj_djid”,并且id号从‘1’连续编号到‘5’。因此我们在测评数据表“cpdata”中的等级字段只需要存储等级id号即可,从而保证了较小的数据冗余度和灵活的数据修改能力,最重要的是id号可以用于数据统计时数组的下标。
图4 测评等级信息表
所有的测评数据储存在基本表“cpdata”中。如图5所示,这个表包含基本信息的id号,如人员id,测评项目id和测评等级id,除此之外,还有所对应的得票数“cd_shumu”。因此,系统通过读取此表的信息就可以获得所有的数据。
图5 测评数据表
对多人员、多项目的分别统计是非常耗时的工作,sql语句没有提供这种功能。因此,我们采用一种基于项目id号的统计方法。系统将测评数据读入到一个二维数组中,同时初始化统计结果的数组。假设我们需要统计不同等级的得票数,我们初始化一个长度为等级数目的数组dj[djnum]后从第一条记录开始计算。如图5所示,第一条记录等级id号为‘2’我们将对应的得票数‘12’加入到数组dj[1]中。依次类推,当我们浏览完所有记录时,各个等级的总得票数存入到数组dj中。我们仅读取一遍数据就可以完成不同数据的统计,从而大大提高了数据的统计速度。
如上所述,我们在浏览记录的同时可以对多项内容进行累加,从而得出多项统计结果。同时,每一测评等级本身具有权值,将此等级所得的票数和权值相乘就得出用户所得分数。因此,系统只需进行一次数据记录的遍历,就可以得出所有的统计值,保证了数据统计的效率。
3.3 测评表的定制
用户使用的测评表多种多样,不但格式不尽相同,测评项目也有所变化。因此,为了对多种测评表进行图像识别和数据统计,系统需要提供对测评表的定制功能。通过对不同的测评表进行对比,我们发现测评表所包含的信息有五类:测评主体、测评客体、测评项目、测评等级和基本信息。
(1)测评主体,即被评价人员。不同的测评表所包含的测评主体的数目不相同,相关信息有所差异。因此,测评表的定制功能需要设置测评主体的数目并提供填写相关信息的接口。
(2)测评客体是指参评人员的类型,如领导和普通人员对测评主体的评价分量是不相同的。不同测评客体的权值也不相同。
(3)测评项目指评价指标,测评表的评价项目不相同,每一种评价指标的权值不相同。并且可能测评项目下含有不同的测评小项。测评项目是测评表的关键内容,需要详细进行划分。所以,系统设置了测评项目和测评小项两类数据,分别存储在不同的基本表中。
(4)测评等级的变化不大,每一种等级需要对应不同的分值,用于最终测评主体得分的计算。
(5)表基本信息包括表的id号、表的名称、所属的基本类型、表的行列数、表的测评项目数、表的测评等级数和相关的备注信息。
根据以上对测评表的分析,系统需要分别提供对这些内容的设置接口。用户定制或修改表内容是一个自顶向下的过程。首先,用户添加表的基本信息,如:表名称、表的基本类型和行列数。然后,用户分别添加各项的信息,在添加测评项目时,先添加测评大项,然后将所属的测评小项逐一加入。同时,在每项内容的设置界面上提供了查看、修改和删除项目的功能。
通过对测评表每项内容的设置,系统提供了统一的表定制功能,这种设置方式简单、灵活。用户添加新型的测评表后,系统自动读取表的关键信息,如行列数,从而确定图像识别的有效区域;读取测评项目和等级信息,完成图像信息和测评数据的转换;读取所有信息完成测评数据的统计和分析。
4 应用情况
干部测评统计分析系统已经应用于测评工作。我们使用富士通“fi-2150c”型扫描仪将纸质测评表扫描成灰度图像,利用本系统对图像文件进行识别和数据统计。
首先,由于图像的识别速度远大于图像的扫描速度,因此整个图像识别工作的速度取决于测评表的扫描速度。同时系统对扫描的图像要求较低,所以扫描速度相对较快,利用富士通扫描仪大约每分钟可以扫描20张测评表。
在图像识别后,测评数据自动存储到数据库中,用户根据自己的需要查看测评结果。数据的统计速度较快,我们利用10000张扫描表进行测试,数据计算所花费的时间为13ms。
通过对统计结果进行验证,系统除不能识别严重变形的图像外,统计数据的正确率达到100%。
本系统利用图像识别技术对测评表进行数据识别,采用优化的数据统计算法达到多种测评数据的高速统计,提供了灵活的表格定制功能,对不同格式的测评表进行数据统计,从而大大地提高测评数据的统计速度和准确率,减轻用户的统计负担。
参考文献
[1] 建立体系科学发展观要求的党政领导班子和领导干部综合考核评价软件体系[eb/ol]. (2007-11-9) [2008-1-10].http://omr.com/software/165223297. html
[2]字符结构知识在车牌识别中的应用[eb/ol]. (2007-5-26) [2008-1-9]. http:///h/090130808/239820.htm
[3]于炳琪,陈杰春.用delphi开发质谱图扫描图像识别系统[j/ol]. 电子器件,1999,22(4),317-321
[4]萨师煊,王珊. 数据库系统概论[[m].北京:高等教育出版社,2000.2:84-86