Стандартизация ФИО

API разбирает ФИО на фамилию, имя, отчество. Определяет пол, исправляет регистр, обрабатывает сокращения. Точность 95%+, время ответа <50ms.

Вход

"иванов сергей петрович"

Результат

{
  "surname": "Иванов",
  "name": "Сергей",
  "patronymic": "Петрович",
  "gender": "male",
  "confidence": 0.98
}

Проблема

В базах данных ФИО хранятся как попало:

  • «Иванов И.И.» — инициалы вместо полных имён
  • «ИВАНОВ ИВАН» — регистр капсом
  • «иванов иван иванович» — нижний регистр
  • «Сергей Иванов» — имя перед фамилией
  • «Ivanov Sergey» — транслитерация

Это создаёт дубли в CRM, ошибки в документах, проблемы с поиском. По нашим данным, до 15% записей в типичной базе содержат ошибки в ФИО.

Попробуйте сами

Примеры:
Введите текст для стандартизации

Что делает API

  • Разбирает ФИО на компоненты (фамилия, имя, отчество)
  • Определяет пол по имени и отчеству
  • Нормализует регистр: иванов сергей → Иванов Сергей
  • Восстанавливает порядок: Сергей Иванов → Иванов Сергей
  • Раскрывает сокращения: Иванов С.П. → Иванов С* П*
  • Возвращает код качества (QC) для оценки результата

В планах (TODO)

  • Исправление опечаток: Иавнов → Иванов
  • Склонение по падежам: Иванову Сергею Петровичу
  • Транслитерация: Ivanov Sergey → Иванов Сергей
  • Подсказки при вводе

Как работает

В основе — NER-модель на базе RuBERT, обученная на миллионах примеров российских ФИО.

  1. Токенизация входной строки
  2. NER-разметка: определение, где фамилия, имя, отчество
  3. Нормализация: приведение к стандартному регистру
  4. Определение пола по отчеству и имени
  5. Расчёт confidence на основе модели и справочников

Справочники имён (~50K) и фамилий (~100K) используются для валидации результатов.

Возможности

Разбор на компоненты

Фамилия, имя, отчество — отдельные поля

Определение пола

male/female/unknown по отчеству и имени

Исправление регистра

ИВАНОВ → Иванов, иванов → Иванов

Обработка сокращений

С.П. → Сергей Петрович (если контекст позволяет)

Работа с латиницей

Sergey Ivanov → Сергей Иванов

Confidence score

0.0–1.0 для каждого результата

Batch-обработка

До 100 записей в одном запросе

Альтернативы

Несколько вариантов при неоднозначности

Примеры кода

curl

curl -X POST https://api.humandata.ru/v1/clean \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "иванов сергей петрович"}'

Python

import requests

response = requests.post(
    "https://api.humandata.ru/v1/clean",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"query": "иванов сергей петрович"}
)
result = response.json()
print(result["surname"])  # Иванов

JavaScript

const response = await fetch("https://api.humandata.ru/v1/clean", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ query: "иванов сергей петрович" })
});
const result = await response.json();
console.log(result.surname); // Иванов

Кейсы использования

Частые вопросы

Какая точность разбора?

95%+ на тестовой выборке из реальных российских ФИО. Для стандартных форматов (Фамилия Имя Отчество) точность выше 99%.

Что если ФИО написано в нестандартном порядке?

Модель определяет компоненты по контексту, а не по позиции. «Сергей Иванов» и «Иванов Сергей» дадут одинаковый результат.

Поддерживаются ли иностранные имена?

Основной фокус — российские ФИО. Для иностранных имён confidence будет ниже, но базовый разбор работает.

Как обрабатываются двойные фамилии?

Двойные фамилии через дефис (Петров-Водкин) распознаются корректно. Фамилия возвращается целиком.

Попробуйте бесплатно

1000 запросов в месяц — без оплаты. Достаточно для тестирования и небольших проектов.