Repository navigation
Home
Распознавание и валидация документов РФ (паспорт, водительское удостоверение, СНИЛС, загранпаспорт, свидетельство о рождении, свидетельство о регистрации ТС) по фотографии с телефона или скану — полностью локально, без внешних сервисов. Библиотека на Python + референс-сервис (FastAPI + Vue) + порты на Go, .NET и Kotlin/JVM с доказанным паритетом.
Вики — навигация и справка. Нормативные документы (лицензия, безопасность, процедуры) живут в репозитории и версионируются вместе с кодом — здесь на них только ссылки.
| Документ | Серии / годы выпуска |
|---|---|
| Внутренний (общегражданский) паспорт | 1997–2011 и 2011+ |
| Страница регистрации внутреннего паспорта | адрес, печатные и рукописные строки (рукописные пока не распознаются); штампы регистрации: вид штампа, его адрес, какую регистрацию снимает «снят с учёта», действующая регистрация |
| Водительское удостоверение | 2011–2019 и 2020+; оборот опознаётся (DLBACK_ALL), поля оборота пока не читаются |
| СНИЛС | 1996+ |
| Загранпаспорт | биометрический 2007+, без биометрии 2003+ |
| Свидетельство о рождении | бланки образца 1998 и 2018 годов (форма приказа Минюста № 167), включая дату актовой записи |
| Свидетельство о регистрации ТС (СТС) | старая форма (1996) и новая (2019), обе стороны; признак лизинга |
Серии различаются моделями и набором полей, поэтому годы выпуска — часть типа
(INTPASSPORT_2011, BIRTHCERT_1998, …). Как добавить новый тип —
docs/add-doc-type.md.
| Я хочу… | Идти сюда |
|---|---|
| подключить распознавание к своему Python-проекту | Интеграция → «Как pip-пакет» |
| поднять готовый REST-сервис с веб-интерфейсом | Интеграция → «Сервис» |
| использовать из Go / C# / Kotlin | Интеграция → «Порты» |
| понять, почему что-то не работает | Диагностика и FAQ |
| узнать, насколько это точно и быстро | Точность и производительность |
| понять, что происходит с персональными данными | Персональные данные |
| понять, как выкладываются и скачиваются веса моделей | Веса моделей |
| узнать, что планируется дальше | Планы |
| Версия | Главное |
|---|---|
| 4.10.0 |
разбор в памяти без хранения (PROCESSING_MODE=memory, #24): сервис и порты разбирают документ внутри запроса и ничего не сохраняют; README переписан простым русским; веса не менялись |
| 4.9.0 |
признак проверки у каждого поля (results.field_checks): «проверено / не сходится / проверить нечем» — по машиночитаемой зоне, контрольным цифрам, контрольному числу СНИЛС и согласованности дат; чтение не исправляется; порты Go, .NET и Kotlin выдают то же; веса не менялись |
| 4.8.1 | тесты порта .NET снова собираются (новый компилятор C# на машинах GitHub); распознавание и веса не менялись |
| 4.8.0 | штампы регистрации на странице прописки (#27): у каждого штампа свой адрес, «снят с учёта» указывает снятую регистрацию, определяется действующая; классификатор типа и угла переобучен (права на боку); порты Go, .NET и Kotlin читают страницу прописки целиком; набор весов models-v11 |
| 4.7.2 | порт Go снова собирается на Linux; набор тестов укладывается в память CI; распознавание не менялось |
| 4.7.1 | сопоставление с подложкой больше не зависит от платформы: решение «выпрямлять ли СТС» одинаково на Windows и Linux; порты на Linux совпадают с эталонами по всем четырём случаям СТС |
| 4.7.0 |
сначала документ, потом тип: детектор документов вырезает документ из кадра (#26), process_frame читает все документы кадра; оборот прав опознаётся; СТС выпрямляется по подложке, признак лизинга; дата актовой записи свидетельства; порты Go, .NET и Kotlin вровень с Python, включая рамки на исходном снимке; набор весов models-v10
|
| 4.6.1 | свидетельства о рождении 1998 года: рамка поля больше не срезает край цифр, даты читаются заметно лучше (#25); набор весов models-v8 (отличается от v7 одним детектором полей) |
| 4.6.0 | новый тип — СТС (#17), обе формы и обе стороны; набор весов models-v7 (требует 4.6.0); рамки полей на исходном снимке (results.field_quads, #18); вход по учётным записям в сервисе и портах (#21); requirements.txt заменён набором 2026 года
|
| 4.5.0 | внутренний паспорт восстанавливается по шаблону бланка (на настоящих сканах точных полей 65,6 % → 83,3 %); детектор полей и детектор слов переобучены, набор весов models-v6; дата в каноническом виде рядом с прочитанной; порты Go, .NET и Kotlin догнали эталон; значения полей на паспортах могут измениться |
| 4.4.1 | состав тестовых данных приведён к безопасному; проверки без материала пропускаются с указанием причины; сверка портов умеет объявлять случай отозванным |
| 4.4.0 | новый тип BIRTHCERT_2018 и поле MRZ; точных полей 1410 → 1489 из 1583; ломающее: печатная точка в сокращениях и упразднение метки BIRTHCERT_2004
|
| 4.3.0 | серия/номер паспортов — кириллическим движком (фикс «3→8» из issue #12): exact 103/113 → 111/113; фикс двойного декодирования в детекторах (#13) |
| 4.2.1 | патч безопасности зависимостей (Dependabot: python-multipart, nanoid, pydantic-settings, pytest) |
| 4.2.0 | свидетельства о рождении во всех трёх портах + первый conformance-кейс BIRTHCERT |
Полная история — CHANGELOG.md.
| Вопрос | Документ в репозитории |
|---|---|
| Как установить и вызвать | README.md |
| Как устроен и разворачивается сервис | service/README.md |
| Что где лежит в портах и как их проверять | ports/README.md |
| Численные конвенции, обязательные для любого порта | ports/CONVENTIONS.md |
| Как выпускается набор весов моделей | docs/models-release.md |
| Как добавить новый тип документа | docs/add-doc-type.md |
| Официальные цифры точности и как измерить самому | docs/accuracy.md |
| Безопасность, ответственность оператора ПДн, 152-ФЗ | SECURITY.md |
Откуда образцы в samples/ и почему это не чьи-то документы |
samples/README.md |
| Как контрибьютить | CONTRIBUTING.md |
| История изменений | CHANGELOG.md |
-
Код — SemVer-теги
vX.Y.Z(релизы). -
Веса моделей — теги
models-<набор>; состав зафиксирован по SHA-256 в models.lock.json, скачиваетscripts/fetch_models.py/rdocs-fetch-models. Веса в git не хранятся. У каждой сети внутри набора своя версия, и новый набор выкладывает только изменившиеся сети — Веса моделей.
Почему оси разделены и как публикуется набор — docs/models-release.md.
MIT — и код, и веса моделей (подробности: LICENSE, NOTICE). Проект выполнен при
финансировании Фонда содействия инновациям.