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

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

работает скрипт который распознает номер авто и пишет в бд
Но чтобы не допускать дублей, я постоянно дёргаю БД
Это соответственно грузит её
Как можно реализовать запись авто, таким образом чтобы я знал сколько оно стоит на сервисе, но чтобы не было дублей в бд
Проблема в основном в том что нейронка ошибается,.так как если механик станет напротив номера она напишет дубль этого автомобиля. Как исключить такие ситуации с логической точки зрения?
  • Вопрос задан
  • 182 просмотра
Подписаться 2 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 4
martin74ua
@martin74ua Куратор тега MySQL
Linux administrator
Индекс на поле уникальный назначить религия не позволяет?
Ответ написан
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 машину только один, и даже небольшой перерыв в записи тупо стирает старые данные. Решается банальной нормализацией, выносом интервалов в отдельную сущность и связи по ключам машина-интервал.
Ответ написан
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Если нужно исключить дубли при считывании номера за какой-то небольшой период, это можно сделать программно. Программа может запоминать номер и время в какую-то переменную и при распозновании сверяться с этим списком. Если вышел интервал "запрета", то уже писать в БД
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Автор ты прикалываешся? Задача дедубликации сведений в БД - решена еще в XX веке через unique
index на поле. Или любой программист тебе на коленке сделает хештабличку или дерево для этого на любом
языке.

А задача машинного зрения это в миллион раз более сложная по сути задача. И ты умудрился в вопрсе через
запятую это писать? Это все равно что ты бы спросил как изобрести колесо чтоб атомный реактор
ехал.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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