Задать вопрос
MRXWOLF
@MRXWOLF

Как в ходе распознавание номеров, записывать данные в БД, при этом исключить дубли?

работает скрипт который распознает номер авто и пишет в бд
Но чтобы не допускать дублей, я постоянно дёргаю БД
Это соответственно грузит её
Как можно реализовать запись авто, таким образом чтобы я знал сколько оно стоит на сервисе, но чтобы не было дублей в бд
Проблема в основном в том что нейронка ошибается,.так как если механик станет напротив номера она напишет дубль этого автомобиля. Как исключить такие ситуации с логической точки зрения?
  • Вопрос задан
  • 337 просмотров
Подписаться 2 Простой 5 комментариев
Решения вопроса 2
mayton2019
@mayton2019
Bigdata Engineer
Автор ты прикалываешся? Задача дедубликации сведений в БД - решена еще в XX веке через unique
index на поле. Или любой программист тебе на коленке сделает хештабличку или дерево для этого на любом
языке.

А задача машинного зрения это в миллион раз более сложная по сути задача. И ты умудрился в вопрсе через
запятую это писать? Это все равно что ты бы спросил как изобрести колесо чтоб атомный реактор
ехал.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Проблема в основном в том что нейронка ошибается,.так как если механик станет напротив номера она напишет дубль этого автомобиля.
Я так понимаю проблема в том что проходящий механик заставляет нейронку еще раз считывать номер машины и заново считать интервал простоя авто в боксе?

Если да, то:
(поля и таблицы приведены для примера, естественно в реале они у вас будут немного другие)
1) Номера должны лежать в отдельной табличке, идентифицирующей авто (cars например). Поля - id | number | comments. Номер должен быть с индексом unique.
2) Интервалы пишутся в другую табличку - intervals, где есть id | car_id | start_time | end_time
3) При заезде на сервис номер распознается и запрашивается из базы, если не находится - создаем новый, запоминаем id. Записываем в intervals.start_time текущее время, в intervals.car_id запомненный id машины или id выбранный из базы машин. Пишем end_time по таймеру, последняя запись будет временем окончания стоянки.

В такой конфигурации то что механик прервал на минуту простой авто на общее количество времени не повлияет, и дублей, естественно, не будет. Просто для отчета нужно будет выбирать все интервалы за день для машин(ы). Агрегировать их или выводить списком особо разницы нет, тут как интерфейс устроен.

PS: Оказывается проблема в "дублях", которые артефакты распознавания. Ну и реальная проблема в том что интервал на 1 машину только один, и даже небольшой перерыв в записи тупо стирает старые данные. Решается банальной нормализацией, выносом интервалов в отдельную сущность и связи по ключам машина-интервал.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
martin74ua
@martin74ua Куратор тега MySQL
Linux administrator
Индекс на поле уникальный назначить религия не позволяет?
Ответ написан
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Если нужно исключить дубли при считывании номера за какой-то небольшой период, это можно сделать программно. Программа может запоминать номер и время в какую-то переменную и при распозновании сверяться с этим списком. Если вышел интервал "запрета", то уже писать в БД
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы