FakerRussia

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

MIT License Python 3.8+ v0.1.0
GitHub →

О проекте

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

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

Возможности

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Установка

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

Все данные встроены в пакет (регионы, города, улицы, имена, банки, болезни). Дополнительных зависимостей не требуется.

Архитектура проекта

FakerRussia/
├── __init__.py                     # Точка входа, класс FakerRussia
├── b_a__address_generator.py       # Генерация адресных данных
├── b_b__bio_generator.py           # Генерация биографических данных
├── b_c__contact_generator.py       # Генерация контактных данных
├── b_d__document_generator.py      # Генерация документальных данных
├── b_e__finance_generator.py       # Генерация финансовых данных
├── b_f__work_generator.py          # Генерация рабочих данных
├── b_g__vehicle_generator.py       # Генерация транспортных данных
├── b_h__base_generator.py          # Базовый класс для всех генераторов
├── b_i__family_generator.py        # Генерация семейных данных
├── a__data/                        # Директория исходных данных (JSON)
└── b__additional_algorithms/       # Вспомогательные алгоритмы

Диаграмма зависимостей модулей

FakerRussia (главный класс)
    │
    ├── BioGenerator
    ├── AddressGenerator
    ├── WorkGenerator ───────────────► BioGenerator
    ├── ContactGenerator ────────────► BioGenerator, AddressGenerator
    ├── VehicleGenerator ────────────► BioGenerator, AddressGenerator
    ├── DocumentGenerator ───────────► BioGenerator, AddressGenerator, VehicleGenerator
    ├── FinanceGenerator ────────────► BioGenerator, AddressGenerator, DocumentGenerator, WorkGenerator
    └── FamilyGenerator ─────────────► BioGenerator, FinanceGenerator

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

Инициализация генератора

from FakerRussia import FakerRussia

generator = FakerRussia()

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

male_generator = FakerRussia(my_gender="male")
female_generator = FakerRussia(my_gender="female")

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

generator = FakerRussia()
print(generator)

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

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

Работа со списковыми значениями

generator = FakerRussia()

# Возвращает список Python
vaccinations_list = generator.bio.vaccinations()

# Возвращает строку с элементами через запятую
vaccinations_str = generator.bio.vaccinations(visualization=True)

Сброс данных

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

Генераторы (полный API)

BioGenerator

Свойство / методТипОписание
.full_namestrПолное ФИО
.genderstrmale / female
.ageintВозраст 1-110 лет
.yearstrДата рождения (ДД.ММ.ГГГГ)
.name, .surname, .patronymicstrКомпоненты ФИО
.father_namestrИмя отца
.full_name_fatherstrФИО отца
.full_name_motherstrФИО матери с девичьей фамилией
.heightintРост в см (возрастная норма)
.weightintВес в кг
.body_mass_indexstrИМТ
.zodiac_signstrЗнак зодиака
.generationstrПоколение (бумер, зумер и др.)
.blood_typestrГруппа крови с резусом
.religionstrВероисповедание
.body_typestrТелосложение
.eye_color, .hair_colorstrЦвет глаз и волос
.education_levelstrУровень образования
.shoe_sizestrРазмер обуви
.visionstrЗрение (±0.0 до 6.0)
.hearing_statusstrСостояние слуха
.disability_groupstrГруппа инвалидности
.pulseintПульс в покое
.vaccinations(visualization)list/strСписок прививок
.military_fitness_categorystrВоенная категория годности
.current_place_studystrМесто учёбы
.average_score_certificatestrСредний балл аттестата

AddressGenerator

СвойствоОписание
.regionНазвание региона РФ
.cityГород из выбранного региона
.streetУлица в городе
.registration_addressПолный адрес регистрации (индекс, регион, город, улица, дом, корпус)
.actual_addressФактический адрес (30% совпадает с регистрацией)
.housing_typeТип жилья (квартира, частный дом и др.)

ContactGenerator

Свойство / методОписание
.phone+7 (код города) XXX-XX-XX
.mobile_operatorМобильный оператор (МТС, Билайн, Мегафон и др.)
.phone_modelМодель телефона
.emailEmail адрес
.social_networks(visualization)Список соцсетей и мессенджеров (1-15)
.ipv4IPv4 адрес
.ipv6IPv6 адрес
.gaming_platformИгровая платформа

DocumentGenerator

Свойство / методОписание
.inn12-значный ИНН с контрольными цифрами
.snilsСНИЛС формата XXX-XXX-XXX YY
.passport_series_numberСерия и номер паспорта
.date_issueДата выдачи паспорта (14, 20 или 45 лет)
.unit_codeКод подразделения
.enpЕНП полиса ОМС (16 цифр, алгоритм Луна)
.administrative_violations(visualization)Список административных нарушений

FinanceGenerator

Свойство / методОписание
.bikБанковский идентификационный код
.number_cardsКоличество карт (0-5)
.bank(visualization)Названия банков
.bank_card(visualization)Номера карт (алгоритм Луна)
.cvv_cvc(visualization)CVV/CVC коды
.salaryЗарплата в рублях
.card_type(visualization)Типы карт (Debit/Credit)
.validity_period(visualization)Сроки действия MM/YY
.inn_bankИНН банков
.kpp_bankКПП банков
.bankruptcyСтатус банкротства (bool)

WorkGenerator

Свойство / методОписание
.jobДолжность или статус занятости
.work_experienceСтаж в годах
.level_workУровень квалификации
.place_workМесто работы (компания или ИП)
.diseases(visualization)Список заболеваний
.bad_habits(visualization)Вредные привычки
.hobby(visualization)Хобби по возрастной группе
.english_levelУровень английского языка
.job_start_dateДата начала работы
.work_scheduleРабочий график
.is_employedТрудоустроен ли (bool)

VehicleGenerator

Свойство / методОписание
.carМарка и модель автомобиля
.has_carНаличие автомобиля (bool)
.car_registration_numberГосномер (формат А123ББ 77)
.car_body_typeТип кузова
.machine_engine_typeТип двигателя
.engine_capacity Объем двигателя (л)
.transmission_type Тип трансмиссии
.machine_drive Привод
.engine_power Мощность (л.с.)
.car_color Цвет автомобиля
.car_year Год выпуска
.car_condition_type(visualization) Список повреждений

FamilyGenerator

Свойство / методОписание
.marital_statusСемейный статус
.spouse_surname, .spouse_name, .spouse_patronymicФИО супруга по компонентам
.spouse_full_nameПолное ФИО супруга(и)
.spouse_ageВозраст супруга
.marriage_dateДата бракосочетания
.years_marriageКоличество лет в браке
.children_countКоличество детей
.children_names(visualization)Имена детей
.living_with_parentsПроживание с родителями (bool)
.family_members_countКоличество членов семьи

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

ЭлементАлгоритм
ИНН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%Вероятность отсутствия повреждений
Проживание с родителями50%При выполнении условий (возраст < 40, зарплата < 65000, отсутствие супруга)

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

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

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

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

Регион: Московская область
Город: Москва
Улица: Тверская
Адрес регистрации: 101000, Московская область - Город Москва - Тверская д. 25 корп. 3
Фактический адрес: 101000, Московская область - Город Москва - Тверская д. 25 корп. 3
Тип жилья: Квартира

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

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

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

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

import random
from FakerRussia.b_h__base_generator import BaseGenerator
from FakerRussia.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 "Данные сброшены"