31 авг 2017 (OFF) Undertakerr1 (B) :

Программист в одиночку реализовал прототип системы розыска угнанных авто стоимостью $70 миллионов

Власти австралийского штата Виктория в 2015 году работали над системой распознавания угнанных автомобилей по номерным знакам. По оценкам экспертов, реализация проекта обошлась бы штату в 86 млн австралийских долларов (70 млн долларов США или чуть более 4 млрд рублей). Местный программист Тэйт Браун решил сделать что-то подобное сам — и у него получилось!

В чём заключалась его идея?

Во-первых, знаки машин должны распознаваться локально — в противном случае счета за Интернет были бы астрономическими. Во-вторых, система должна распознавать изображения низкого качества, полученные с видеорегистратора. И в-третьих, всё используемое ПО должно быть открытым.

В своей системе Тэйт использовал библиотеку openalpr, запрос к которой укладывается в пару строк кода:
openalpr.IdentifyLicense(imagePath, function (error, output) {
// handle result
});
Несмотря на то, что изначально программа была рассчитана на американские номера, она отлично справилась с задачей.

Базу зарегистрированных номерных знаков программист получил, распарсив данные сервиса VicRoads. Он не предоставляет открытый API, поэтому пришлось пойти на хитрость:
// Open form and submit enquire for `rego`
function getInfo(rego) {
horseman
.userAgent('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0')
.open(url)
.type('#registration-number-ctrl input[type=text]', rego)
.click('.btn-holder input')
.waitForSelector('.ctrl-holder.ctrl-readonly')
.html()
.then(function(body) {
console.log(processInfo(body, rego));
return horseman.close();
});
}

// Scrape the results for key info
function processInfo(html, rego) {
var $ = cheerio.load(html);
var vehicle = $('label.label').filter(function() {
return $(this).text().trim() === 'Vehicle:';
}).next().text().trim();

var stolen = $('label.label').filter(function() {
return $(this).text().trim() === 'Stolen status:';
}).next().text().trim();

var registration = $('label.label').filter(function() {
return $(this).text().trim() === 'Registration status & expiry date:';
}).next().text().trim();

return {
rego,
vehicle,
stolen,
registration
};
}
В конечном итоге система оказалась способна распознавать номера автомобилей с достаточно высокой точностью.

Тэйт Браун признаёт, что система, которую хотят создать власти, намного сложнее, чем придумал он. В частности, много денег придется потратить на хранение данных и обучение алгоритмов для повышения точности распознавания. Тем не менее, Браун полагает, что сумма в 70 миллионов сильно завышена.
Сообщество: WEB индустрия

Комментарии (1)

Когда дело нравится то все получается)
Показать комментарий
Скрыть комментарий
Для добавления комментариев необходимо авторизоваться
Модницы
Поход по магазинам, встреча с подружками в кафе...
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play