Маленькая библиотека на Python для проверки и разбора российских идентификаторов: ИНН, ОГРН, ОГРНИП, КПП, СНИЛС. Без зависимостей, проверка контрольных разрядов по официальным алгоритмам ФНС и СФР, определение региона по ИНН.
from inn_tools import validate_inn, validate_ogrn, region_name
validate_inn("7707083893") # True — корректный ИНН юрлица
validate_inn("7707083894") # False — не сходится контрольный разряд
validate_ogrn("1027700132195") # True
region_name("7707083893") # "город Москва"pip install inn-tools| Функция | Что проверяет |
|---|---|
validate_inn(x) |
ИНН 10 или 12 знаков (автоопределение) |
validate_inn_ul(x) |
ИНН юрлица (10 знаков) |
validate_inn_fl(x) |
ИНН физлица / ИП (12 знаков) |
validate_ogrn(x) |
ОГРН юрлица (13 знаков) |
validate_ogrnip(x) |
ОГРНИП ИП (15 знаков) |
validate_kpp(x) |
КПП (9 знаков, формат) |
validate_snils(x) |
СНИЛС (11 знаков, контрольное число) |
validate(x, kind=None) |
универсальный — угадывает тип по длине |
region_code(inn) |
код региона (первые 2 цифры) |
region_name(inn) |
название субъекта РФ |
Все функции принимают строку или число, игнорируют пробелы, дефисы и точки:
validate_inn("7 707 083 893") и validate_snils("112-233-445 95") работают.
$ inn-tools 7707083893 1027700132195 112-233-445_95
[OK ] 7707083893 → ИНН (ЮЛ) · регион 77: город Москва
[OK ] 1027700132195 → ОГРН
[OK ] 112-233-445_95 → СНИЛСИли модулем: python -m inn_tools 7707083893.
Контрольные разряды считаются строго по спецификациям:
- ИНН — взвешенная сумма по модулю 11, затем по модулю 10 (для 12-значного проверяются оба контрольных разряда).
- ОГРН — первые 12 цифр mod 11, затем mod 10.
- ОГРНИП — первые 14 цифр mod 13, затем mod 10.
- СНИЛС — взвешенная сумма 9 цифр с обработкой случаев 100/101.
- КПП — контрольного разряда нет, проверяется только структура формата.
Сделано в KontragentPro — сервисе проверки контрагентов по открытым данным. Валидация идентификаторов — первый шаг любой проверки: отсеять опечатку до обращения к реестрам. Вынесли это ядро в open-source.
MIT — см. LICENSE.
Zero-dependency Python library to validate Russian business and personal
identifiers (INN, OGRN, OGRNIP, KPP, SNILS) with official checksum algorithms,
plus region lookup from an INN. pip install inn-tools. MIT licensed.
Maintained by KontragentPro.
Алгоритмы контрольных сумм из этого репозитория используются в сервисе проверки контрагентов KontragentPro — проверка компаний и ИП по ИНН/ОГРН: финансы, суды, банкротства, связи. Если нужен готовый сервис, а не своя реализация, — можно посмотреть там.