FakerRussia

Генератор реалистичных российских данных

MIT License Python 3.8+ v2.0.0
GitHub →

О проекте

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

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

Возможности

Биографические данные

ФИО с учётом пола, возраст 1-110 лет, дата рождения, антропометрия, знак зодиака, поколение, группа крови, религия, телосложение, цвет глаз/волос, образование, здоровье, прививки, военная категория, ФИО родителей

Адресные данные

Регион РФ, город, улица, полный адрес регистрации с индексом, фактический адрес, тип жилья

Контактные данные

Телефон с кодом города, мобильный оператор, email, соцсети (1-15), IPv4/IPv6, игровая платформа

Документальные данные

ИНН (12 цифр с контр. суммой), СНИЛС, паспортные данные, дата выдачи, код подразделения, ЕНП (алгоритм Луна), административные нарушения

Финансовые данные

БИК, количество карт (0-5), номера карт (Luhn), CVV, зарплата, типы карт, сроки действия, ИНН/КПП банков, банкротство

Рабочие данные

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

Транспортные данные

Марка/модель, госномер (формат Б000ББ 00), состояние, цвет, год выпуска, технические характеристики

Семейные данные

Семейный статус, ФИО супруга, возраст супруга, дата брака, стаж брака, количество детей, имена детей, проживание с родителями

Быстрый старт

⭐ Рекомендуемый способ использования — через метод generate_person()
from russiafaker import FakerRussia

# Создание генератора
faker = FakerRussia()

# Генерация человека с удобным доступом ко всем данным
person = faker.generate_person()

# Прямой доступ к любым данным
print(f"Клиент: {person.full_name}, {person.age} лет")
print(f"Телефон: {person.phone}")
print(f"Email: {person.email}")
print(f"Адрес: {person.registration_address}")
print(f"Работа: {person.job}, зарплата: {person.salary} руб.")
print(f"Автомобиль: {person.car} {person.car_year} года")
print(f"Семейный статус: {person.marital_status}, детей: {person.children_count}")

# Краткое строковое представление
print(person)

# Сохранение в словарь (для JSON, баз данных)
person_dict = person.to_dict()

Указание пола

# Генерация данных для мужчины
male_faker = FakerRussia(my_gender="мужской")
male_person = male_faker.generate_person()

# Генерация данных для женщины
female_faker = FakerRussia(my_gender="женский")
female_person = female_faker.generate_person()

Требования к окружению

КомпонентТребование
PythonВерсия 3.8 и выше
Операционная системаWindows, Linux, macOS
ЗависимостиОтсутствуют (только стандартная библиотека)

Установка

Через PyPI (рекомендуемый способ)

pip install russiafaker==2.0.0

Ссылка на PyPI: https://pypi.org/project/russiafaker/2.0.0/

Из исходных кодов

git clone https://github.com/waratecs123/FakerRussia.git
cd FakerRussia
pip install .

Руководство по использованию

Импорт и инициализация

from russiafaker import FakerRussia

generator = FakerRussia()

Получение полного профиля

person = generator.generate_person()
print(person)  # Краткая информация
print(generator)  # Полный вывод всех данных

Доступ к отдельным категориям

АтрибутКлассОписание
.bioBioGeneratorБиографические данные
.addressAddressGeneratorАдресные данные
.contactContactGeneratorКонтактные данные
.documentDocumentGeneratorДокументальные данные
.financeFinanceGeneratorФинансовые данные
.workWorkGeneratorРабочие данные
.vehicleVehicleGeneratorТранспортные данные
.familyFamilyGeneratorСемейные данные

Примеры доступа к данным

person = generator.generate_person()

# Через объект PersonData
print(person.full_name)      # ФИО
print(person.age)            # Возраст
print(person.phone)          # Телефон
print(person.city)           # Город
print(person.salary)         # Зарплата
print(person.car)            # Автомобиль

# Через прямые генераторы
print(generator.bio.full_name)
print(generator.address.city)

Сброс данных

generator.reset()  # Полная перегенерация всех данных

Класс PersonData

При использовании метода generate_person() возвращается объект PersonData со следующими атрибутами:

Основные атрибуты

КатегорияАтрибуты
Биография.full_name, .name, .surname, .patronymic, .gender, .age, .birth_date, .nationality, .height, .weight, .body_mass_index, .zodiac_sign, .generation, .blood_type, .religion, .body_type, .eye_color, .hair_color, .education_level, .shoe_size, .vision, .hearing_status, .disability_group, .pulse, .vaccinations, .military_fitness_category, .father_full_name, .mother_full_name
Адрес.region, .city, .street, .registration_address, .actual_address, .housing_type
Контакты.phone, .mobile_operator, .phone_model, .email, .social_networks, .ipv4, .ipv6, .gaming_platform
Документы.inn, .snils, .passport, .passport_issue_date, .passport_unit_code, .enp, .administrative_violations
Работа.is_employed, .job, .work_experience, .job_start_date, .level_work, .place_work, .diseases, .bad_habits, .hobby, .english_level, .work_schedule
Финансы.bik, .number_cards, .banks, .bank_inn, .bank_kpp, .bank_cards, .cvv_cvc, .card_types, .card_validity, .salary, .bankruptcy
Транспорт.has_car, .car, .car_body_type, .car_engine_type, .car_engine_capacity, .car_transmission, .car_drive, .car_engine_power, .car_reg_number, .car_condition, .car_color, .car_year
Семья.marital_status, .spouse_full_name, .spouse_age, .marriage_date, .years_marriage, .children_count, .children_names, .living_with_parents, .family_members_count

Методы

МетодВозвращаетОписание
.to_dict()dictПреобразование всех данных в словарь
__str__()strКраткое представление человека

Примеры сгенерированных данных

Краткий вывод (print(person))

Иванов Иван Иванович, 34 лет, male
Проживает: Москва, 101000, Московская область - Город Москва - Тверская д. 25 корп. 3
Работа: Программист, зарплата: 150000 руб.
Семейный статус: Женат, детей: 2

Биографические данные

ФИО: Иванов Иван Иванович
Год рождения: 15.05.1990
Возраст: 34
Пол: male
ФИО отца: Иванов Иван Петрович
ФИО матери: Иванова (девичья фамилия - Петрова) Мария Ивановна
Национальность: Русский
Рост: 178
Вес: 82
Индекс массы тела: 25.87
Знак зодиака: Телец
Поколение: Миллениалы
Группа крови: A (II) Rh+
Религия: Православие
Телосложение: Нормальное
Цвет глаз: Карие
Цвет волос: Русые
Образование: Высшее
Средний балл школьного аттестата: 4.32
Размер обуви: 43
Зрение: -2.5
Уровень слуха: Нормальный
Инвалидность: Отсутствует
Пульс в покое: 72
Прививки: Гепатит B, Корь, Грипп
Военная категория годности: Б

Финансовые данные

БИК: 044525974
Количество карт: 2
Банки: Сбербанк, Тинькофф
Номера карт: 4276123456789012, 5213245678901234
CVV/CVC: 123, 456
Зарплата: 85000
Банкротство: False

Алгоритмы генерации

ЭлементАлгоритм
ИНН12 цифр: первые 4 — префикс региона, 11-я и 12-я цифры — контрольные суммы по весовым коэффициентам
СНИЛС9 цифр + 2 контрольные, расчёт по сумме произведений с весами 9-1, остаток от деления на 101
Номера карт16 цифр: префикс 6 цифр + 11 случайных + контрольная цифра по алгоритму Луна
ЕНП ОМС16 цифр с контрольной суммой Луна, первая цифра 2
Дата выдачи паспорта14 лет (при возрасте 14-19), 20 лет (при возрасте 20-44), 45 лет (при возрасте 45+)
ЗарплатаОпределяется по должности и уровню квалификации из диапазонов в JSON
Количество детейСтаж брака 1-5 лет → 1-3 ребенка, 6-15 лет → 4-6, более 15 лет → 1-10

Вероятностные механизмы

СвойствоВероятностьОписание
Фактический адрес30%Совпадает с адресом регистрации
Наличие автомобиля50%Для лиц старше 16 лет
Наличие банковских карт50%Для лиц старше 18 лет
Наличие прививок70%Вероятность наличия хотя бы одной прививки
Наличие вредных привычек50%Для лиц старше 10 лет
Наличие инвалидности30%Вероятность присвоения группы инвалидности
Идеальное состояние авто50%Вероятность отсутствия повреждений

Расширение функциональности

Для создания собственного генератора необходимо унаследоваться от BaseGenerator:

import random
from russiafaker.b_h__base_generator import BaseGenerator
from russiafaker.b__additional_algorithms.a_a__handle_errors import handle_errors

class CustomGenerator(BaseGenerator):
    def __init__(self):
        super().__init__()
        self._data = None
        self._load_custom_data()

    def _load_custom_data(self):
        data = self._load_json('a__data/custom/custom_data.json')
        self.CUSTOM_DATA = data.get("CUSTOM_DATA", [])

    @property
    @handle_errors
    def custom_property(self) -> str:
        if self._data is None:
            self._data = random.choice(self.CUSTOM_DATA)
        return self._data

    def reset(self):
        self._data = None
        return "Данные сброшены"