一种基于SVG动态图表的高鲁棒性图像识别方法

2018-07-06 08:51张帅
现代计算机 2018年16期
关键词:纵坐标图像识别页面

张帅

(广州工商学院计算机科学与工程系,佛山 528138)

0 引言

当前由于保护数据的需要,很多网站不会由页面直接读取数据。而是将数据转换为SVG(Scalable Vec⁃tor Graphics,可缩放矢量图形)格式的图表来在页面显示。SVG的是在页面加载时动态生成的,所以传统的爬虫技术[1-2]无法有效地爬取SVG图表信息。而利用图像识别[3-4]的方式读取数据经常会出现数据缺失的情况。当数据缺失时,图表会正常显示,但信息却看不到。此外图像识别的准确率也大大影响了数据获取的准确度。多种噪声的影响结合在一起,使爬取SVG图表数据几无可能。本文采用图像识别的方法对图片进行采样后识别图像点的实际值,进而计算出图像所有的点的值。利用随机采样的方法有效减少图像识别的次数,通过数学计算的方式来获取图表数值,有效降低时间消耗。同时利用多次采样过滤掉无法识别的点,增强了图像识别的识别率,保证数学计算获取数值的正确性。

1 现有技术的缺点分析

目前常用的网页数据获取技术主要是通过请求URL后得到完整的HTML静态文本内容,分析其内置的规律,从而找到对应的数据部分内容;这种方式一般只能获取到静态内容,对于SVG动态图表基本没有效果。另外常用的方法是下载图片内容或者屏幕截图方式,对于图片上的内容直观、简单的时候使用,直接通过图片的OCR(Optical Character Recognition,光学字符识别)识别来从一定程度上抓取对于的数据内容。这种方式由于准确率的原因,识别越多,错误的数据就越多。并且识别消耗时间随着坐标的增加而急剧增加;另外对于SVG中的数据丢失的值或者SVG图标中显示的是错误的值无法有效地进行处理。

2 SVG图表识别的基本思路

本技术方法的主要步骤:(1)通过分析网站获取SVG动态图表中的所有坐标值信息;(2)在坐标值组中随机选择3组坐标值。此外再获取纵坐标最大和最小的两组坐标值,共获取5组坐标值。(3)对每组坐标值通过鼠标模拟的方式来获取到实际数据展示图。(4)利用OCR的方式来获取每组坐标值的实际表示数据。(5)对数据进行两两分组,求出任意两点间的实际表示数字与坐标之间的比例值。对数据进行筛选,选出准确度最高的比例值。(6)通过数学计算的方式获取所有坐标值的实际数据。整体流程如图1所示。

图1

下面以某网站包括的SVG动态图表内容作为具体实施案例,对算法的各个步骤分别进行详细说明。

2.1 提取SVG 动态图表

通过浏览器的“开发者工具”功能,查找到SVG动态图表的标签。分析标签内容,可以查找到每一个坐标点的坐标值。

图2

2.2 选取坐标值组

在所有坐标中选取最大值和最小值的两个点。再随机选取3个坐标值,一共获取5组坐标值。这5组坐标值保证不能重复,如果发现重复,重新随机选取。

2.3 获取坐标点实际数据展示图

通过程序控制浏览器加载对应的URL(Uniform Resource Locator,统一资源定位器)的内容。在加载包含SVG动态图表的内容页面后,需要根据分析找出目标SVG坐标点位置。使用程序模拟实际的鼠标点击事件,促使页面动态加载包含实际业务意义数值的HTML(Hyper Text Markup Language,超文本标记语言)对象层。

模拟点击得到最大值提示:

图3

模拟点击得到最小值提示:

图4

根据分析得到的动态提示对象的位置规律,程序自动识别其边界,实现动态提示区域的图片截取。

2.4 识别每组坐标的实际表示数据

截取后的图片为便于识别,需要进行二值化、图片放大、插值等预处理,然后进行图片的数字识别,得到SVG图表纵坐标刻度代表的数值。在这个过程中,由于OCR识别准确率无法保证达到一个满意值,并且上一步获取的实际数据展示图本身可能会出现异常的数字或没有值。所以在识别之后要对结果进行筛选处理,去除掉异常结果。通过之前的随机选择坐标点,保证了这一步一定会获取到足够的信息值,进而保证了数据获取的准确度。

2.5 计算实际表示数字与坐标之间的比例

对5组坐标值进行两两分组,利用公式(1)计算实际表示数字与坐标之间的比例。

其中,v表示坐标代表的实际数值,y代表坐标点的纵坐标。每次计算之前要将纵坐标进行比较,保证最终结果的符号正确。如果每一组坐标都识别准确会产生完全一致的20个比例值。如表1所示:

表1

我们通过设定一个阈值的方法,出现次数大于阈值的被定为最终的比例值,排除掉识别不准或者数据异常的坐标值(表中的粗体数字),进一步保证准确度。同时我们也将表中未被选取的值作为异常值((x3,y3),(x5,y5)),异常值对应的坐标设为异常坐标。最后选取一个非异常坐标作为下一步计算的基准坐标(表1中在(x1,y1),(x2,y2),(x4,y4)中选取)。

2.6 推导所有坐标值的实际数据

虽然可以利用图像识别的方法循环所有的坐标点来进行类似处理,但在图表坐标点较多时,严重影响效率。为优化处理速度,采取类比推导的方式来计算其他各坐标点的纵坐标代表的数值。具体公式如公式(2)所示:

其中y是要计算的纵坐标,是基准坐标的实际数据和纵坐标。通过推导得到统计图表的所有坐标对应的统计结果值,进而得到完整的统计结果,实现抓取目的。

3 结语

通过对2014年至2017年的广东省各地区的百度指数SVG图表进行测试,结果表明,采用多点OCR识别的方法可以有效提高系统的鲁棒性;而利用计算实际表示数字与坐标之间比例值的方式,避免进行所有坐标的识别,提高运行速度,降低运行时间。

[1]付志鸿.基于Storm云平台的分布式网络爬虫技术研究与实现[D].电子科技大学,2015.

[2]张瑶.面向AJAX脚本网络的网页爬行及解析技术的研究与实现[D].东北大学,2012.

[3]王宇新.基于特征分布的图像识别方法研究与应用[D].大连理工大学,2012.

[4]朱旭锋.基于图像不变量特征的自动目标识别技术研究[D].中国科学院研究生院(西安光学精密机械研究所),2012.

猜你喜欢
纵坐标图像识别页面
更正
勘 误
刷新生活的页面
支持向量机的舰船图像识别与分类技术
浅谈图像识别技术在打击绿通假证逃费中的应用
答案
平面直角坐标系中的特殊点
让Word同时拥有横向页和纵向页
基于Resnet-50的猫狗图像识别
图像识别交互系统