Собрали всем «Хабром» справочник «Кем выдан…» для паспортов. Качайте на здоровье

в 11:02, , рубрики: data quality, Блог компании HFLabs, качество данных, Клиентская оптимизация, краудсорсинг, открытые данные, паспорта, паспортные данные, подсказки при вводе, Разработка веб-сайтов, справочники

Собрали всем «Хабром» справочник «Кем выдан…» для паспортов. Качайте на здоровье - 1

С пару месяцев назад мы поэкспериментировали: получится ли на «Хабре» собрать справочник подразделений, выдающих российские паспорта. Дело полезное: эти данные нужны много кому, канонического источника нет, а существующие — очень так себе.

И знаете, все получилось. Пригодный к использованию справочник готов, можно качать и пользоваться. А еще мы сделали подсказки, которые ускоряют ввод подразделений в формы.

«Голый» CSV — в открытом доступе

Собранный и очищенный справочник мы выложили на GitHub. Внутри все просто, CSV с двумя полями:

  • код подразделения;
  • название подразделения.

Лежит здесь github.com/hflabs/fms-unit/releases/latest.

Есть еще готовые подсказки для форм ввода (причем бесплатные)

Мы собирали подразделения, чтобы сделать готовый сервис — подсказки для форм ввода. И вот они готовы.

«Подсказки» DaData.ru можно интегрировать в сайт, CRM или CMS и прослыть заботливым малым: пользователю достаточно ввести код подразделения, а название заполнит сервис.

Собрали всем «Хабром» справочник «Кем выдан…» для паспортов. Качайте на здоровье - 2
Кажется, все ненавидят заполнять название подразделения. Мы пытались облегчить страдания людей

Еще «Подсказки» вытаскивают регион и тип подразделения из кода, иногда удобно. Вот краткая спецификация ответа.

Название Описание
value Значение одной строкой (как показано в списке подсказок)
data.code Код подразделения
data.name Название подразделения в творительном падеже («кем выдан?»)
data.region_code Код региона
data.type Вид подразделения:

  • 0 — подразделение ФМС;
  • 1 — ГУВД или МВД региона;
  • 2 — УВД или ОВД района или города;
  • 3 — отделение полиции.

До 10 000 запросов к «Подсказкам» в день даем бесплатно, это ≈300 заполненных форм. Больше — в составе подписки, от 5 000 ₽ в год. Работает через jQuery-плагин, API либо компоненты для разных CRM, CMS, «1C» и прочего.

Детали — на dadata.ru/suggestions/outward/fms_unit/.

«Хабр» здорово помог с данными

Первый вопрос тех, кто слышит о проекте: «Реально через „Хабр“ собрали?». Помог не один только «Хабр», но вклад читателей велик и обширен. Мы благодарны и немного удивлены: первый раз обратились к сообществу, и сразу такой результат.

Изначально у нас были кое-какие наработки. Но, во-первых, далеко не полный справочник. Во-вторых, хотелось проверить, насколько данные адекватны реальным паспортам.

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

Три человека предложили в личке базы почтенного размера. Доброжелательно и безвозмездно.

Собрали всем «Хабром» справочник «Кем выдан…» для паспортов. Качайте на здоровье - 3
Тем, кто тревожится за безопасность: все справочники присылали обезличенными, ни байта персональных данных

Такие подарки ощутимо двигали дело вперед. В итоге недели через три мы собрали объем, из которого не стыдно делать пригодный к промышленному использованию продукт.

Путь к успеху — «Куча сырых данных + 300 регекспов + немного питонячки»

Итак, сырые данные на руках у продуктовода «Дадаты» nalgeon. Дальнейшие пляски он описал цитатой из заголовка. Все, что мы собрали, прошло череду чудесных трансформаций.

Для начала нормализовали названия подразделений. Здесь пришлось задорно поработать напильником. Например, в «живых» паспортах номера территориальных подразделений указывают с «№»: «ТП № 1 В Г. ХИМКИ...». Так же и в большинстве собранных справочников, кроме одного — в нем все номера без «№»: «ТП 1 В Г. ХИМКИ...». Пришлось вставлять.

Схлопнули годы. В нескольких справочниках названия подразделений «размазаны» по годам, даже когда не меняются со временем.

500-168,ОТДЕЛЕНИЕМ УФМС РОССИИ ПО МОСКОВСКОЙ ОБЛ. В Г. ТРОИЦКЕ,2007
500-168,ОТДЕЛЕНИЕМ УФМС РОССИИ ПО МОСКОВСКОЙ ОБЛ. В Г. ТРОИЦКЕ,2008
500-168,ОТДЕЛЕНИЕМ УФМС РОССИИ ПО МОСКОВСКОЙ ОБЛ. В Г. ТРОИЦКЕ,2009
500-168,ОТДЕЛЕНИЕМ УФМС РОССИИ ПО МОСКОВСКОЙ ОБЛ. В Г. ТРОИЦКЕ,2010

Такие записи мы объединили, привязав к периоду: в примере выше из четырех записей получилась одна с датами «2007–2010».

Собрали еще один справочник — «2018+». В 2018 году случился переворот — теперь в паспортах пишут название не подразделения, а «верховного» управления МВД по региону. Поэтому в документе, выданном в Красноярском крае, вне зависимости от кода указывают «ГУ МВД РОССИИ ПО КРАСНОЯРСКОМУ КРАЮ».

Мы взяли все собранные коды, разбили по регионам и нагенерили для них одинаковые названия в стиле 2018 года. Названия брали из собранных справочников, кое-что пришлось искать в интернете. Получилось что-то подобное.

240-001,ГУ МВД РОССИИ ПО КРАСНОЯРСКОМУ КРАЮ,2018
240-002,ГУ МВД РОССИИ ПО КРАСНОЯРСКОМУ КРАЮ,2018
240-003,ГУ МВД РОССИИ ПО КРАСНОЯРСКОМУ КРАЮ,2018

Убрали годы. Оказалось, в справочниках совершенная кутерьма: где-то годы есть, где-то нет. Осталось или везде убрать годы ради более полного справочника, или оставить только подразделения с годами ради непонятно чего. Выбрали более полный справочник.

Объединили справочники, данные в экстазе слились воедино. Результат хорошенько потерли тряпкой, причесали и напомадили: например, «РА» где нужно превратили в «Республику Алтай» и сделали еще десяток подобных изменений.

И вот, справочник готов. Пользуйтесь, делали как для себя (собственно, для себя и делали :).

Пара тонкостей для въедливых

В справочнике много записей с одинаковыми кодами подразделений. Это из-за того, что в разные годы написание одного и того же подразделения отличалось. Похожие варианты мы объединили, а сильно отличающиеся остались: пусть пользователь сам выбирает, как у него в паспорте.

Может оказаться, что в вашем паспорте и в справочнике написано немного по-разному. Без минимальной нормализации у каждого подразделения получилась бы такая куча похожих вариантов, что нужное поди найди. Поэтому мы сократили «УПРАВЛЕНИЕ ВНУТРЕННИХ ДЕЛ» до «УВД», «ГОРОДА» и «ГОР.» — до «Г.», «ОТДЕЛА ПАСПОРТНО-ВИЗОВОЙ СЛУЖБЫ» — до «ОПВС» и т. д.

Собрали всем «Хабром» справочник «Кем выдан…» для паспортов. Качайте на здоровье - 4
Если начать набирать название, «Подсказки» тоже поспособствуют

Но! Ни один закон или подзаконный акт не требует, чтобы название подразделения в документах побуквенно совпадало с вариантом в паспорте. Допускаются и сокращения, и пропуски слов. Главное, чтобы было примерно похоже и совпадали остальные реквизиты: серия, номер, дата, код подразделения.

Об ошибках можно сообщать нам dadata.ru/fix/fms. Укажите код и название проблемной записи, а в комментарии напишите, что не так. Поправим и выложим обновленный справочник для всех. Или присылайте пул-реквесты на GitHub.

Естественно, можно руками поправить CSV, если у вас голый справочник без «Подсказок». Но непонятно, как все смерджится, если когда-нибудь заберете очередную версию справочника у нас.

В общем, пользуйтесь на здоровье:

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

Автор: Максим Пименов

Источник