Driver.Georeis
Приложение для водителей Georeis: распознаёт адреса с фото путевого листа, сверяет по адресной базе и строит порядок объезда с расчётом времени прибытия.
Driver.Georeis — подробно
Кратко о проекте
Driver.Georeis — мобильное веб-приложение (PWA) для водителей внутри логистической платформы Georeis. Оно решает конкретную задачу: превратить путевой лист — бумажный список адресов доставки, часто с весом и объёмом груза по каждой точке — в готовый маршрут с порядком объезда и расчётным временем прибытия.
Водитель фотографирует лист прямо в приложении. Дальше система сама распознаёт адреса, сверяет их со справочниками, строит порядок объезда с учётом временных окон доставки и выдаёт маршрут с картой и треком. Приложение устанавливается на телефон как обычное — без магазина приложений, это PWA на Next.js.
Продукт рассчитан на компании с собственным автопарком, где путевые листы приходят на бумаге или в скане, а маршрут раньше собирался вручную — по памяти водителя или через ввод адресов в обычный навигатор один за другим. Идея простая: убрать самый трудоёмкий и подверженный ошибкам шаг — перенос адресов с бумаги в цифровой вид — и добавить то, чего не умеют обычные навигаторы: расчёт порядка объезда под жёсткие временные окна доставки.
Задача
До Driver.Georeis водитель получал путевой лист на бумаге или в скане и строил маршрут по памяти или на глаз: сам решал порядок объезда, сам вбивал адреса в навигатор один за другим. Ошибка в адресе — неразборчивый почерк, опечатка в номере дома — всплывала уже в пути, когда исправлять её дорого: машина едет не туда, груз простаивает, диспетчер узнаёт о проблеме постфактум.
Отдельная боль — временные окна доставки. Если часть точек нужно объехать строго в заданный интервал, а порядок объезда прикидывается на глаз, реальный риск — приехать не вовремя и либо ждать лишний час на месте, либо разворачиваться на повторный заезд. Ручной ввод десятков адресов тоже отнимает время, а обычные навигаторы не умеют сами считать оптимальный порядок объезда под несколько точек и временные окна — даже если все адреса введены правильно, порядок объезда остаётся на совести водителя.
Решение
Архитектурная цепочка: фото путевого листа → распознавание адресов (vision-модель) → сверка со справочниками → построение маршрута с учётом временных окон → интерфейс водителя (карта, трек, редактирование).
Каждое звено закрывает свою часть исходной проблемы. Распознавание убирает ручной набор адресов, сверка ловит ошибки до выезда, построение маршрута берёт на себя порядок объезда — в том числе под жёсткие временные окна, с которыми стандартный оптимизатор справляется не в полной мере, — а интерфейс водителя доводит результат до практичного вида: карта, трек, переход в привычные навигаторы. Распознавание работает на собственном сервере с GPU, а не через облачный API — из-за себестоимости каждого запроса и того, что путевые листы часто содержат персональные данные получателей груза.
Как работает
Распознавание адресов с фото путевого листа
Водитель фотографирует или загружает скан путевого листа прямо в приложении. Vision-модель анализирует изображение и возвращает структурированный список: для каждой строки — номер по порядку, адрес, вес и объём груза, если такие колонки были в таблице. Модель инструктирована не выдумывать нечитаемые фрагменты адреса, а помечать их отдельным символом, не путать соседние похожие строки и не терять строки на плотных таблицах.
Проверка и сверка адресов
После распознавания каждый адрес сверяется сначала с собственной адресной базой компании, а при отсутствии точного совпадения — с внешним геокодером DaData. Экран проверки показывает счётчики «Готовы / Внимание / Не найдено» и по умолчанию скрывает уже подтверждённые адреса, оставляя на виду только спорные. Спорный адрес можно поправить и перепроверить, удалить с возможностью восстановления или подтвердить как есть.
Автоматически подтверждается только точное совпадение с собственной базой — всё остальное, включая подозрительные подмены адреса геокодером, проходит через водителя. Подтверждённые адреса сохраняются в собственную базу, и со временем зависимость от внешнего геокодера снижается.
Построение маршрута с приоритетом временных окон
Из подтверждённых адресов строится порядок объезда с расчётом расстояния, времени в пути и прибытия на каждую точку. Если у точки задано жёсткое временное окно, включается режим переранжирования: система ищет порядок с минимальным простоем, при котором ни одно окно не нарушается, при фиксированном времени выезда.
Базовый расчёт даёт связка OSRM и VROOM, но она относится ко времени выезда как к свободной переменной и готова сдвинуть отправление ради лучшей метрики — в реальности машина выезжает сразу после погрузки. Поэтому поверх работает собственный слой, который перебирает соседние варианты порядка и сравнивает их по приоритету «окно важнее простоя, простой важнее времени в пути, время в пути важнее километража». На тестовом маршруте из 13 точек с одним жёстким окном такой пересчёт сократил простой примерно с 3 часов 15 минут почти до нуля без сдвига времени выезда — результат одного тестового прогона.
Навигация, управление маршрутом и «Мои места»
Для активного маршрута доступна полноэкранная карта с треком и кнопками перехода в Яндекс.Карты и 2ГИС — пошаговую навигацию ведёт привычный навигатор, а Driver.Georeis остаётся источником порядка точек и расписания.
Маршрут можно редактировать прямо на карточке: добавить или удалить точку, перетащить для смены порядка, задать временное окно, заменить старт или финиш. Активный маршрут — тот, что уже в пути, — защищён от случайных изменений: отредактировать его можно, только осознанно вернув в статус черновика.
Водитель может сохранить часто используемые адреса (склад, дом) и пометить их как старт или финиш по умолчанию — при создании нового маршрута они подставляются автоматически.
Ключевые особенности
Распознавание без ручного набора. Один снимок путевого листа заменяет построчный ввод адресов — уходит около 10–30 секунд.
Резервный платный контур. При сбое локальной модели запрос автоматически уходит на внешнего провайдера — без пересборки приложения.
Логика под жёсткие временные окна. Готовые инструменты маршрутизации свободно сдвигают время выезда ради лучшей метрики; для работы с зафиксированным выездом это не годится, поэтому добавлен отдельный слой расчёта.
Двухуровневая сверка адресов. Собственная база проверяется первой, внешний геокодер — источник для остального, а подозрительные подмены адреса не проходят в маршрут без подтверждения человеком.
Установка без магазина приложений. Водитель ставит PWA на телефон прямо из браузера.
Техническая реализация
Vision-запрос к локальной модели возвращает JSON со строгой схемой полей на каждую строку путевого листа, включая явный номер строки — дополнительный сигнал для сортировки, поскольку на плотных фото-таблицах порядок элементов в ответе модели не всегда совпадает с порядком строк на фото. При сбое основного контура запрос переключается на внешнего провайдера через конфигурацию окружения, без изменений в коде приложения.
Сверка адресов — два последовательных источника: собственная база (точное совпадение нормализованной строки) и внешний геокодер для остальных случаев. Каждый подтверждённый результат сохраняется обратно в собственную базу, поэтому доля запросов к геокодеру со временем снижается.
Построение маршрута — два слоя: базовый расчёт дорожных матриц и порядка объезда стандартными инструментами маршрутизации, а поверх — собственный алгоритм, который перебирает соседние перестановки этого порядка и сравнивает их по приоритету «окно важнее простоя, простой важнее времени в пути, время в пути важнее километража».
Распознавание фото вынесено в очередь фоновых задач, чтобы интерфейс не блокировался. Исходные фотографии сохраняются в объектном хранилище для аудита и повторного распознавания. Backend приложения водителя общий с диспетчерской частью Georeis.
Технологический стек
Next.js (PWA) — интерфейс водителя, устанавливается на телефон без магазина приложений.
MapLibre — карта и трек на открытой картографической библиотеке.
FastAPI (Python) — общий backend и API для водительской и диспетчерской части Georeis.
PostgreSQL + PostGIS — хранение маршрутов, точек и адресной базы с геоданными.
Redis + очередь фоновых задач — обработка распознавания фото без блокировки интерфейса.
Объектное хранилище (MinIO) — хранение исходных фото путевых листов для аудита и повторной обработки.
Ollama + Qwen3-VL — локальная vision-модель для распознавания адресов, веса и объёма с фото.
Внешний облачный провайдер (OpenRouter/OpenAI) — резервный контур распознавания на случай сбоя локальной модели.
OSRM — дорожные матрицы, расстояния, время, геометрия маршрута.
VROOM — базовый расчёт порядка объезда точек.
Собственный слой переранжирования — приоритет временных окон доставки поверх базового расчёта маршрута.
DaData — геокодирование и сверка адресов.
Что получилось
Построение маршрута сократилось с ручного набора каждого адреса до одной фотографии и проверки за 10–30 секунд на распознавание. Точных цифр экономии времени в масштабе (сколько маршрутов в день, сколько минут суммарно) нет — это оценка по устройству процесса, а не измеренная в проде метрика.
Ошибки в адресах ловятся на экране проверки до выезда, а не в пути.
На тестовом маршруте из 13 точек с одним жёстким окном собственный слой переранжирования сократил простой почти до нуля по сравнению с плановым порядком — результат одного тестового прогона, не измеренный эффект в масштабе.
Где можно использовать
Логистические и транспортные компании с собственным автопарком, где путевые листы приходят на бумаге или в скане.
Курьерские и доставочные службы с жёсткими временными окнами у части точек — розница, HoReCa, B2B-дистрибуция.
Компании, для которых важна обработка персональных данных получателей на собственной инфраструктуре, а не через сторонний облачный сервис.
Диспетчерские службы, которым нужно проверять маршрут и адреса до выезда машины, а не постфактум.
Похожая задача с водителями в полях?
Разберём, как сейчас строится маршрут и где теряется время на распознавании и навигации.
Ещё в портфолио
KILLOOS
Интеллектуальная система бизнес-аналитики, переводит данные в управленческие решения и предупреждает риски до потерь.
Подробнее →Vizgen
Визуальный редактор для работы с контентом: генерация карточек товара, визуализация и апскейл — доставляется через REST API.
Подробнее →Georeis
Диспетчеризация доставки и приложение водителя: маршрут по фото путевого листа → оптимизированный план на день.
Подробнее →Geo101
Приложение для активных путешественников: GPX-маршруты и офлайн-навигация для трейла, эндуро и пешего туризма.
Подробнее →Kitchen 3D Planner
Планировщик кухни для мебельных компаний: подбор модулей, фасадов и техники по размерам помещения, с 3D-сборкой на выходе.
Подробнее →OpenSEO
Генерация SEO-статей по заданной структуре — с очеловечиванием стиля и независимой валидацией результата перед публикацией.
Подробнее →DeviceHub
Единый сервис метрик для физических устройств на столе: тянет данные сразу из нескольких продуктов и отдаёт готовые экраны без перепрошивки.
Подробнее →Rilso
Рабочее место для упаковки рилсов: из сырого видео — превью, транскрипт, вшитые субтитры, обложка, текст публикации, хэштеги и архив на экспорт.
Подробнее →Лабсервер
Собственный GPU-сервер для тестирования моделей, подбора параметров и сборки MVP в закрытом контуре — без выхода данных наружу.
Подробнее →