Парсер недвижимости. Определять дубли одного объекта с разных источников по фото преобразуя его в hash

fazan

Client
Регистрация
25.12.2014
Сообщения
95
Благодарностей
8
Баллы
8
Всем привет. Есть проект парсинга объявлений недвижимости с разных сайтов. Проект складывает данные с разных источников (досок объявлений)в БД.
Необходимо перед добавлением найденного объекта проверить, добавляли ли объект с такими же фото ранее с этого или других сайтов.
Понимаю что 100% от дублей избавиться не удастся, т.к. фото могут быть и разными, но как правило авторы в объявлениях используют одни и те же снимки.
Искал в поиске и понимаю, что нужно преобразовывать изображения в hash. В этой теме https://zennolab.com/discussion/threads/bolshoj-pak-dlja-raboty-s-izobrazhenijami-unikalizacija-narezka-i-analiz-sxozhesti-izobrazhenij.64826/ проект который по hash сравнивает изображения и выдает числовое значение.
Примерно понимаю, что в момент добавления мне необходимо сохранять hash каждого изображения в таблицу и при каждом последующем добавлении нового объекта сравнивать hash нового изображения с hash ранее добавленными.

Прикрепил пример фото одной и той же квартиры, но с разных сайтов источников (наложены водяные знаки сайтов).
Проект преобразовывает их в hash
hash1: 4484514556742998046
hash2: 9096200575170385950
hashdiv: 1
Не совсем ясно как сравнивать hash1 добавляемого изображения с 1-10К hash2 ранее добавленных изображений. Может кто-нибудь ткнуть в нужном направлении?
90532


90533
 

one

Client
Регистрация
22.09.2015
Сообщения
6 796
Благодарностей
1 264
Баллы
113
Плохая идея... Качество картинок будет разной на разных сайтах, водяные знаки будут разные в разных местах. от этого хеши тоже будут разные. Вообщем не в том направлении двигаетесь коллега, ИМХО.
 

fazan

Client
Регистрация
25.12.2014
Сообщения
95
Благодарностей
8
Баллы
8
Качество картинок будет разной на разных сайтах, водяные знаки будут разные в разных местах.
Все же от какой-то части дублей удастся избавиться. На одних и тех же сайтах встречаются клоны объявлений с аналогичными фото и водяными, но различными прочими данными (url, автор, телефон и т.п.).
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
632
Благодарностей
543
Баллы
93
https://www.nuget.org/packages/ImageHashing

C#:
var ImageOne = ImageHashing.ImageHashing.AverageHash((Bitmap) Image.FromFile(@"C:\Users\Sleep\Desktop\1.jpg")); // Получим bitmap-hash первой картинки
var ImageTwo = ImageHashing.ImageHashing.AverageHash((Bitmap) Image.FromFile(@"C:\Users\Sleep\Desktop\2.jpg")); // Получим bitmap-hash второй картинки
if(ImageHashing.ImageHashing.Similarity(ImageOne, ImageTwo) > 90) project.SendWarningToLog("Картинки схожи на: " + ImageHashing.ImageHashing.Similarity(ImageOne, ImageTwo)); // Покажем в лог, если процент схожести более 90%
 
  • Спасибо
Реакции: fazan

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)