2016-09-26 43 views
0

我有一个系统抓取网络并截取网页的屏幕截图。目前,我只是简单地对图像文件进行散列处理(作为png存储)。然而,对于博客中的文章有评论数的网页,这并不适用。或者查看次数。检测类似的网页

所以我的问题是什么是检测这些变化的最好方法?哪种算法最适合?

+1

原始图像不明确的,你真正想要做的......在比较的文本标记大多数情况下是什么这些页面将比图像处理简单得多。 –

+0

html标记可以非常不同,但生成相同的页面。例如。页面上的链接可能会非常不同。正如我提到我想检测类似的页面,所以我可以将它作为一个登录页面显示给用户,而不是看起来相同的多个页面。 –

+0

“所以如果你能建议那些完美的java库。” - 要求图书馆的建议是关于SO的话题。我建议你编辑该行,因为它会吸引密切的选票。 – samgak

回答

0

一个幼稚但很容易实现的方法是从每个页面中清除所有数字字符并仅比较它们的字符内容。

+0

我不是在寻找一个易于实施的解决方案,我一直在寻找解决我的问题的最佳方式。最简单的实现方法实际上是逐像素检查,并检查像素的特定百分比是否相同。然而,这可能不是最好的解决方案,这就是我想问这个问题的原因。 –

+0

如果您更喜欢使用困难的方式,Google搜索“文字相似性度量”, 这是一个示例: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.332.4480&rep=rep1&type= PDF格式 – Trifon

0

所以首先我们要检测变化的区域。一个简单的好办法就是取两个图像之间的差异,然后查找差别大于零的所有区域。 之后,我们将看看每组点,并查看原始图像中的这些点,并尝试使用某些OCR软件检测数字。

通用算法:

  1. DIFF = Im1的 - Im2的
  2. 阈值diff来获得阈值图像ThIm,即,如果DIFF(X,Y)> 0 = ThIm(X,Y)= 1其他智能ThIm(x,y)= 0.
  3. 在ThIm中查找连接的组件
  4. 对于每个连接的组件,找到它周围的边界框。
  5. 作物上使用裁剪区域边框
  6. 运行OCR和检查,如果你发现数字