Pseudonymizer — сервис обезличивания документов для безопасной работы с внешними LLM
Что умеет. Контейнеризованное приложение, которое автоматически находит и заменяет чувствительные данные в документах (txt, docx, pdf, md, xlsx): ФИО, телефоны, e-mail, ИНН, номера договоров, а также кастомные сущности из словаря (коды площадок, бренды, артикулы). Веб-интерфейс с drag-and-drop и предпросмотром плюс JSON API для интеграций, включая почтовых воркеров и асинхронные задания.
Принцип работы. Гибридный пайплайн детекции: regex → spaCy NER (ru/en) → кастомные словари. Замена детерминистична — одно значение в документе всегда получает один и тот же плейсхолдер (на стабильном хэше), что упрощает ревью и восстановление. При работе с LLM открывается сессия: обезличенный текст уходит в модель, маппинг сессии возвращает исходный контекст по плейсхолдерам. Для крупных файлов — асинхронная очередь с job id вместо блокирующего ответа.
Сильные стороны.
— Архитектура заставляет пройти шаг восстановления отдельно: сырой PII и внешняя модель не оказываются в одном запросе «по умолчанию».
— Разнесённые контуры доступа для оператора инстанса и интеграционных клиентов; rate limiting (slowapi).
— TTL и очистка сессий, семафоры на тяжёлые задачи, постраничный режим для крупных PDF.
— Наблюдаемость из коробки: Prometheus-метрики, UI мониторинга.
— Стек: Python 3.11, FastAPI, spaCy, SQLite, Docker Compose. Артефакт проходит ревью корпоративной ИБ.
https://nikolai-karpov.github.io/my-website/site-pages/pseudonymizer.html