Разработка автоматизированной веб-ориентированной системы составления каталога товаров при поиске по изображениям
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
значен для параллельного выявления существующих магазинов в несколько потоков.
Класс ShopParser предназначен для асинхронного извлечения товарных позиций из магазина.
Класс ParseSession предназначен для запоминания и управления данными о процессе парса, для возможности продолжения его в случае отключения электроэнергии или в других нештатных ситуациях.
Класс AliExpressParser, содержащий объекты классов ParallelShopValidater, ShopParser, DBWorker предназначен для инициализации и управления этими объектами.
Класс FindWorker предназначен для поиска товаров в базе по изображениям.
Приведем структуру класса Shop:
class Shop
{id; // идентификатор магазинаstartParse=false; // флаг начала парса
bool endParse = false; // флагокончания парса
List subCategories; // подкатегории
магазина, определенные сайтом
List categoriesInShop; // подкатегории
магазина, придуманные саммим сайтом
List products; // коллекция товаров магазина
}
Приведем структуру класса Product
class Product
{
int id; // идентификатор товара
int subCategoryId; // айди подкатегории товара
int categoryIdInShop; // айди подкатегории товара,
определнной магазином
int shopId; // айди магазина
float price; // цена
float dostavkaPrice; // цена доставки
float totalPrice; // общая ценаname; // имя товара url; // ссылка на товар
string structurePath; // логический путь к товару на сайте
string itemSpecifics; // список основных
характеристик товараdescription; // другие характеристики товара
string html; // хтмл страницы
string mainImagePath; // путь к главной картинки
List images; // картинки товара
List feedbacks; // отзывы о товаре
List buyers; // покупатели, оставившие отзывы
}
Приведем структуру класса SubCategory
class SubCategory
{
string name = ""; // название категории
int id = 0; // идентификатор категорииurl = ""; // ссылка на категорию
}
Приведем структуру класса MarketUser:
class MarketUser
{
int newId; // айди
int id; // идентификатор покупателя
string name; // имя покупателя
string country; // страна покупателя
}
Приведем структуру класса MarketUser:
class Feedback
{
int newId;
int id; // идентификатор
int userId; // идентификатор покупателя
int productId; // идентификатор товара
int mark; // оценка
string coment; // текст коментария
int quantity; // количество купленного
}
Приведем структуру класса ProductImage
class ProductImage
{int id; // идентификатор изображенияint productId; // идентификатор товараstring path=""; // путьstring url=""; // ссылка на изобржение
}
Приведем структуру класса ProductInfoForCompare
class ProductInfoForCompare
{
int productId; // идентификатор товара
int shopId; // идентификатор магазина
int subCategoryId; // идентификатор категории
string name=""; // имя товара
string imagePath = ""; // путь к картинки
Bitmap image=null; // изображение
float [] [] descriptors = null; // дескрипторы изображения
bool findGroup = false;
}
Приведем структуру класса IdenticalProductGroup
class IdenticalProductGroup
{
int id; // идентификатор группы
int subCategoryId; // категория группы
bool validated; // флаг проверки группы при составлении
групп одинаковых товаров
List products; // товары группы
List etalonProducts;
// эталонные товары группы
List newEtalonProducts; // новые
эталонные товары группы
}
Описание интерфейса работы программы.
При запуска программы появляется главное окно приложения:
Рис. 7. Главное окно приложения
Приведем описание интерфейса
1.Вкладка "Парс" позволяет производить парс магазинов сайта.
Для начала парса необходимо выбрать начальные параметры для проверки магазинов на существование.
Возможны 2 варианта: задание диапазона и задание через список.
Так же необходимо ввести количество потоков для проверки магазинов на существование и для парса магазинов.
После ввода всех данных и нажати кнопки "Запуск" начинается процесс проверки магазинов а затем парс магазинов. Прогресс выполнения задач показывается компонентами ProgressBar. Также отображается сколько магазинов найдено.
.Вкладка "Группировка" позволяет разбить товары в базе на группы одинаковых.
Для начала необходимо определить необходимые для этого настройки:)Точность сравнения для одной точки - максимальная величина разности дескрипторов двух точек, при которой они считаются одинаковыми.
b)Процент удачного сравнения - минимальный процент совпавших точек 2х изображений, при котором они считаются одинаковыми.)Количество эталонов в группе - каждая группа одинаковости содержит некоторое количество эталонных товаров, которые её определяют, этот параметр ограничивает их максимальное количество.
После нажатия на кнопку "Запуск" начинается процедура составления дескрипторов и группировка товаров. Т.к. процедура длинная на форме предусмотрены 2 элемента ProgressBar отображающие ход работы.
.Вкладка "Обзор" позволяет просмотреть созданные группы.
В комбобоксе сверху необходимо выбрать категорию товаров т.к. группы одинаковых товаров формируются внутри конкретной категории, чтобы уменьшить количество сравнений.
В таблице снизу появляются группы одинаковости для этой категории. В таблице только один столбец - id этой группы.
Справа от неё появляется таблица товаров, принадлежащих выбранной группе и соответственно изображение, выбранного товара.
.Вкладка "Поиск" позволяет производить поиск в базе по изображениям.
Для начала можно изме