Логистика / водительсобственный продукт

Driver.Georeis

Приложение для водителей Georeis: распознаёт адреса с фото путевого листа, сверяет по адресной базе и строит порядок объезда с расчётом времени прибытия.

Скриншот Driver.Georeis

Driver.Georeis — подробно

01

Кратко о проекте

Driver.Georeis — мобильное веб-приложение (PWA) для водителей внутри логистической платформы Georeis. Оно решает конкретную задачу: превратить путевой лист — бумажный список адресов доставки, часто с весом и объёмом груза по каждой точке — в готовый маршрут с порядком объезда и расчётным временем прибытия.

Водитель фотографирует лист прямо в приложении. Дальше система сама распознаёт адреса, сверяет их со справочниками, строит порядок объезда с учётом временных окон доставки и выдаёт маршрут с картой и треком. Приложение устанавливается на телефон как обычное — без магазина приложений, это PWA на Next.js.

Продукт рассчитан на компании с собственным автопарком, где путевые листы приходят на бумаге или в скане, а маршрут раньше собирался вручную — по памяти водителя или через ввод адресов в обычный навигатор один за другим. Идея простая: убрать самый трудоёмкий и подверженный ошибкам шаг — перенос адресов с бумаги в цифровой вид — и добавить то, чего не умеют обычные навигаторы: расчёт порядка объезда под жёсткие временные окна доставки.

02

Задача

До Driver.Georeis водитель получал путевой лист на бумаге или в скане и строил маршрут по памяти или на глаз: сам решал порядок объезда, сам вбивал адреса в навигатор один за другим. Ошибка в адресе — неразборчивый почерк, опечатка в номере дома — всплывала уже в пути, когда исправлять её дорого: машина едет не туда, груз простаивает, диспетчер узнаёт о проблеме постфактум.

Отдельная боль — временные окна доставки. Если часть точек нужно объехать строго в заданный интервал, а порядок объезда прикидывается на глаз, реальный риск — приехать не вовремя и либо ждать лишний час на месте, либо разворачиваться на повторный заезд. Ручной ввод десятков адресов тоже отнимает время, а обычные навигаторы не умеют сами считать оптимальный порядок объезда под несколько точек и временные окна — даже если все адреса введены правильно, порядок объезда остаётся на совести водителя.

03

Решение

Архитектурная цепочка: фото путевого листа → распознавание адресов (vision-модель) → сверка со справочниками → построение маршрута с учётом временных окон → интерфейс водителя (карта, трек, редактирование).

Каждое звено закрывает свою часть исходной проблемы. Распознавание убирает ручной набор адресов, сверка ловит ошибки до выезда, построение маршрута берёт на себя порядок объезда — в том числе под жёсткие временные окна, с которыми стандартный оптимизатор справляется не в полной мере, — а интерфейс водителя доводит результат до практичного вида: карта, трек, переход в привычные навигаторы. Распознавание работает на собственном сервере с GPU, а не через облачный API — из-за себестоимости каждого запроса и того, что путевые листы часто содержат персональные данные получателей груза.

04

Как работает

Распознавание адресов с фото путевого листа

Водитель фотографирует или загружает скан путевого листа прямо в приложении. Vision-модель анализирует изображение и возвращает структурированный список: для каждой строки — номер по порядку, адрес, вес и объём груза, если такие колонки были в таблице. Модель инструктирована не выдумывать нечитаемые фрагменты адреса, а помечать их отдельным символом, не путать соседние похожие строки и не терять строки на плотных таблицах.

Проверка и сверка адресов

После распознавания каждый адрес сверяется сначала с собственной адресной базой компании, а при отсутствии точного совпадения — с внешним геокодером DaData. Экран проверки показывает счётчики «Готовы / Внимание / Не найдено» и по умолчанию скрывает уже подтверждённые адреса, оставляя на виду только спорные. Спорный адрес можно поправить и перепроверить, удалить с возможностью восстановления или подтвердить как есть.

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

Построение маршрута с приоритетом временных окон

Из подтверждённых адресов строится порядок объезда с расчётом расстояния, времени в пути и прибытия на каждую точку. Если у точки задано жёсткое временное окно, включается режим переранжирования: система ищет порядок с минимальным простоем, при котором ни одно окно не нарушается, при фиксированном времени выезда.

Базовый расчёт даёт связка OSRM и VROOM, но она относится ко времени выезда как к свободной переменной и готова сдвинуть отправление ради лучшей метрики — в реальности машина выезжает сразу после погрузки. Поэтому поверх работает собственный слой, который перебирает соседние варианты порядка и сравнивает их по приоритету «окно важнее простоя, простой важнее времени в пути, время в пути важнее километража». На тестовом маршруте из 13 точек с одним жёстким окном такой пересчёт сократил простой примерно с 3 часов 15 минут почти до нуля без сдвига времени выезда — результат одного тестового прогона.

Навигация, управление маршрутом и «Мои места»

Для активного маршрута доступна полноэкранная карта с треком и кнопками перехода в Яндекс.Карты и 2ГИС — пошаговую навигацию ведёт привычный навигатор, а Driver.Georeis остаётся источником порядка точек и расписания.

Маршрут можно редактировать прямо на карточке: добавить или удалить точку, перетащить для смены порядка, задать временное окно, заменить старт или финиш. Активный маршрут — тот, что уже в пути, — защищён от случайных изменений: отредактировать его можно, только осознанно вернув в статус черновика.

Водитель может сохранить часто используемые адреса (склад, дом) и пометить их как старт или финиш по умолчанию — при создании нового маршрута они подставляются автоматически.

05

Ключевые особенности

Распознавание без ручного набора. Один снимок путевого листа заменяет построчный ввод адресов — уходит около 10–30 секунд.

Резервный платный контур. При сбое локальной модели запрос автоматически уходит на внешнего провайдера — без пересборки приложения.

Логика под жёсткие временные окна. Готовые инструменты маршрутизации свободно сдвигают время выезда ради лучшей метрики; для работы с зафиксированным выездом это не годится, поэтому добавлен отдельный слой расчёта.

Двухуровневая сверка адресов. Собственная база проверяется первой, внешний геокодер — источник для остального, а подозрительные подмены адреса не проходят в маршрут без подтверждения человеком.

Установка без магазина приложений. Водитель ставит PWA на телефон прямо из браузера.

06

Техническая реализация

Vision-запрос к локальной модели возвращает JSON со строгой схемой полей на каждую строку путевого листа, включая явный номер строки — дополнительный сигнал для сортировки, поскольку на плотных фото-таблицах порядок элементов в ответе модели не всегда совпадает с порядком строк на фото. При сбое основного контура запрос переключается на внешнего провайдера через конфигурацию окружения, без изменений в коде приложения.

Сверка адресов — два последовательных источника: собственная база (точное совпадение нормализованной строки) и внешний геокодер для остальных случаев. Каждый подтверждённый результат сохраняется обратно в собственную базу, поэтому доля запросов к геокодеру со временем снижается.

Построение маршрута — два слоя: базовый расчёт дорожных матриц и порядка объезда стандартными инструментами маршрутизации, а поверх — собственный алгоритм, который перебирает соседние перестановки этого порядка и сравнивает их по приоритету «окно важнее простоя, простой важнее времени в пути, время в пути важнее километража».

Распознавание фото вынесено в очередь фоновых задач, чтобы интерфейс не блокировался. Исходные фотографии сохраняются в объектном хранилище для аудита и повторного распознавания. Backend приложения водителя общий с диспетчерской частью Georeis.

07

Технологический стек

Next.js (PWA) — интерфейс водителя, устанавливается на телефон без магазина приложений.

MapLibre — карта и трек на открытой картографической библиотеке.

FastAPI (Python) — общий backend и API для водительской и диспетчерской части Georeis.

PostgreSQL + PostGIS — хранение маршрутов, точек и адресной базы с геоданными.

Redis + очередь фоновых задач — обработка распознавания фото без блокировки интерфейса.

Объектное хранилище (MinIO) — хранение исходных фото путевых листов для аудита и повторной обработки.

Ollama + Qwen3-VL — локальная vision-модель для распознавания адресов, веса и объёма с фото.

Внешний облачный провайдер (OpenRouter/OpenAI) — резервный контур распознавания на случай сбоя локальной модели.

OSRM — дорожные матрицы, расстояния, время, геометрия маршрута.

VROOM — базовый расчёт порядка объезда точек.

Собственный слой переранжирования — приоритет временных окон доставки поверх базового расчёта маршрута.

DaData — геокодирование и сверка адресов.

08

Что получилось

Построение маршрута сократилось с ручного набора каждого адреса до одной фотографии и проверки за 10–30 секунд на распознавание. Точных цифр экономии времени в масштабе (сколько маршрутов в день, сколько минут суммарно) нет — это оценка по устройству процесса, а не измеренная в проде метрика.

Ошибки в адресах ловятся на экране проверки до выезда, а не в пути.

На тестовом маршруте из 13 точек с одним жёстким окном собственный слой переранжирования сократил простой почти до нуля по сравнению с плановым порядком — результат одного тестового прогона, не измеренный эффект в масштабе.

09

Где можно использовать

Логистические и транспортные компании с собственным автопарком, где путевые листы приходят на бумаге или в скане.

Курьерские и доставочные службы с жёсткими временными окнами у части точек — розница, HoReCa, B2B-дистрибуция.

Компании, для которых важна обработка персональных данных получателей на собственной инфраструктуре, а не через сторонний облачный сервис.

Диспетчерские службы, которым нужно проверять маршрут и адреса до выезда машины, а не постфактум.

Похожая задача с водителями в полях?

Разберём, как сейчас строится маршрут и где теряется время на распознавании и навигации.

Обсудить похожую задачубесплатно · 25–30 минут
Другие проекты

Ещё в портфолио

KILLOOS

Интеллектуальная система бизнес-аналитики, переводит данные в управленческие решения и предупреждает риски до потерь.

Подробнее →

Vizgen

Визуальный редактор для работы с контентом: генерация карточек товара, визуализация и апскейл — доставляется через REST API.

Подробнее →

Georeis

Диспетчеризация доставки и приложение водителя: маршрут по фото путевого листа → оптимизированный план на день.

Подробнее →

Geo101

Приложение для активных путешественников: GPX-маршруты и офлайн-навигация для трейла, эндуро и пешего туризма.

Подробнее →

Kitchen 3D Planner

Планировщик кухни для мебельных компаний: подбор модулей, фасадов и техники по размерам помещения, с 3D-сборкой на выходе.

Подробнее →

OpenSEO

Генерация SEO-статей по заданной структуре — с очеловечиванием стиля и независимой валидацией результата перед публикацией.

Подробнее →

DeviceHub

Единый сервис метрик для физических устройств на столе: тянет данные сразу из нескольких продуктов и отдаёт готовые экраны без перепрошивки.

Подробнее →

Rilso

Рабочее место для упаковки рилсов: из сырого видео — превью, транскрипт, вшитые субтитры, обложка, текст публикации, хэштеги и архив на экспорт.

Подробнее →

Лабсервер

Собственный GPU-сервер для тестирования моделей, подбора параметров и сборки MVP в закрытом контуре — без выхода данных наружу.

Подробнее →