Как с помощью API «Стандартизации» понять, что по адресу доедут курьеры
Для статьи мы выбрали популярную задачу: проверить адреса в готовой базе и понять, какие из них подходят для курьеров и посылок. Условия два: адрес указан до дома или квартиры и существует. То есть «Г. Москва» не подойдет, а вот «Москва, Сухонская, д. 5, кв. 3» — вполне.
Чтобы проверить адреса, мы прогоним их через API «Стандартизации» «Дадаты». Для каждого адреса сервис вернет три кода качества. С их помощью мы последовательно выберем полные и существующие адреса, которые подходят для посылок и курьеров.
1. Устранить адреса, которые «Стандартизация» разобрала неуверенно
«Стандартизация» разбирает адреса — приводит их к единому формату и исправляет ошибки:
Бывает, что уверенно распознать адрес у сервиса не получается: в исходных данных много ошибок или недостаточно информации.
Человек ввел «мск суская». Это может быть и «Сухонская», и «Сумская».
Отсечь адреса, в которых «Стандартизация» сомневается, поможет специальный код проверки. API возвращает этот код в поле qc.
Код проверки не гарантирует, что адрес существует. Сервис лишь формально проверяет, похожи ли данные на настоящий адрес.
Адрес «республика Саха, Москва, Питер» не похож на настоящий, а вот «Москва, ул Пушкина-Колотушкина, д. 4» — вполне.
Когда с кодом проверки qc проблема, проверять остальные три бессмысленно: с адресом точно что-то не так. Если с qc порядок, но нужна уверенность в существовании адреса, проверяют и другие коды качества.
Кода проверки qc хватит, если нужно лишь привести адреса в базе к одному формату и исправить ошибки. При этом предполагается, что для пользователя не важно, существуют ли адреса.
Код проверки 0 — «Стандартизация» уверенно распознала адрес. Точность — не ниже, чем 1 ошибка на 10 000 проверок. Если qc = 0, можно проверять адрес по другим, более строгим, кодам качества.
1 — в адресе остались лишние части, либо данных недостаточно для уверенного разбора.
Человек в поле адреса ввел «109341 Тверская область Москва Верхние Поля 15, 5». Улица Верхние Поля находится в Москве. А вот Москва в Тверской области не находится.
Или же ввел «Пушкина 13, д. 4» без города и региона. Таких адресов много по России: в Москве, Санкт-Петербурге, Иркутске, Энгельсе и т.д.
В этом случае полезно уточнить адрес у клиента и еще раз прогнать через «Стандартизацию»
2 — адрес пустой или заведомо мусорный, их мы исключим.
Человек ничего не ввел в поле адреса или заполнил набором букв «eomwmv».
3 — у адреса есть альтернативные варианты. Чтобы уточнить, придется позвонить клиенту.
Человек ввел «Москва Тверская-Ямская». В Москве четыре Тверских-Ямских улицы. Непонятно, какую именно имели в виду.
2. Выделить полные и точно существующие адреса
Итак, мы оставили в списке уверенно распознанные адреса — с кодом проверки qc = 0. Следующий шаг — проверить адреса на полноту и реальность.
Порой люди вводят неполные адреса. Например, в адресе «г. Москва, ул. Сухонская» нет дома. Курьер не поймет, куда ехать.
Или адреса, которых не существует. Например, покупатель ввел «Мск Пупкинская 16, кв. 1». Адрес полный, «Стандартизация» уверенно его разобрала. Но отправлять курьера сюда нельзя: нет такого адреса.
Отсечь несуществующие адреса или адреса без региона, города, улицы, дома или квартиры поможет код пригодности к рассылке. API «Стандартизации» возвращает его в поле qc_complete.
Действительность адреса «Дадата» проверяет по базе адресов ФНС — ФИАС. Это самая полная база адресов в России.
Код пригодности 0 — адрес заполнили с точностью до квартиры, и дом есть в ФИАС. Если и с предыдущими кодами качества все в порядке, пора заканчивать проверку и отправлять курьера. Вы можете подумать: «А зачем вообще смотреть на другие коды, если есть такой строгий qc_complete? Проверяем только его, и дело с концом». Увы, так делать опасно.
Например, в адресе могут остаться лишние части. Например, в адресе «Тверская область, Москва, Верхние Поля, 5» кодом qc «Стандартизация» отметит лишнюю Тверскую область. А затем проверит «Москва, Верхние Поля, 5» и констатирует, что дом есть в ФИАС. Но вдруг клиент ошибся и на самом деле живет в Тверской области? Если смотреть только на qc_complete, игнорируя qc, упустишь возможную ошибку.
5 — адрес заполнили с точностью до дома. Такие адреса бывают у частных домов и юрлиц. Если доставляете товары в частный сектор или отправляете документы контрагентам, оставляйте такие адреса и проверяйте по следующим кодам качества. Если доставляете только по Москве, надежней отбирать адреса с точностью до квартиры.
10 — адрес заполнили с точностью до квартиры, но дома нет в ФИАС. Например, это может быть адрес «г. Несуществуюск, ул. Отсутствующая, д. 4, кв. 3». Он выглядит формально полным. Такие адреса пока рано отсекать: мы перепроверим их реальность еще одним кодом качества.
1—4, 6 — адрес неполный: нет города, региона, улицы или дома. Курьер не доедет по неполному адресу, придется позвонить клиенту и уточнить.
7 — иностранный адрес. «Стандартизация» разбирает иностранные адреса на части, но не проверяет на действительность. Если окажется, что разобранного адреса не существует, посылка не дойдет. Поэтому, прежде чем отправить посылку, лучше поискать адрес на карте.
3. Проверить подозрительные адреса на действительность, отсечь несуществующие
Допустим, «Стандартизация» уверенно разобрала адрес, но дома в ФИАС не оказалось: qc = 0, qc_complete = 10. При этом дом все равно может существовать. Единственный достоверный способ это проверить — приехать и убедиться воочию. Но ездить к каждому дому, которого нет в справочнике ФНС, не выйдет.
Поэтому мы ищем адреса, которых нет в ФИАС, на картах «Яндекса» и «2Гиса». На картах тоже бывают ошибки, но более точного способа проверить адреса нет.
Адреса, которых нет в справочнике налоговой, присылают нам в поддержку. Мы перепроверяем их вручную по картам, добавляем в «Дадату» и привязываем координаты.
Результат проверки по картам API «Стандартизации» показывает в коде точности координат — поле qc_geo:
Код точности координат 0 — дом есть на картах. Курьера можно отправлять.
1 — дома нет в ФИАС, но есть похожий на картах. Скорее всего, курьера можно отправлять, но безопасней позвонить клиенту и все прояснить.
Обычно так происходит с «литерными» домами.
Человек ввёл «Ставрополь, ул. Мира, д.3». Такого в ФИАС нет, зато на картах есть «…д.3, корпус 1». Наверняка это один и тот же дом.
≥2 — дома нет в ФИАС и на картах. Скорее всего, дома не существует. Адрес можно дополнительно проверить на картах и отсеять, если дома там нет.
Смело отправляйте курьера по адресу в двух случаях
1. «Стандартизация» однозначно распознала адрес, он полный, а дом есть в ФИАС:
- qc = 0,
- qc_complete = 0 (или 5: для частных владений или юрлиц),
- qc_house = 2.
2. «Стандартизация» однозначно распознала адрес, он полный, дома нет в ФИАС, но он есть на картах.
- qc = 0,
- qc_complete = 10,
- qc_geo = 0.