Система поиска персональных данных от OpenAI: разбор Privacy Filter
💬 От автора: Ждал этого релиза несколько месяцев - наконец-то крупная лаборатория выложила в открытый доступ вменяемую модель для поиска персональных данных. Лицензия Apache 2.0 закрывает мой главный страх: можно встраивать в коммерческие продукты без отчислений и согласований. Я вижу здесь готовый кирпич для российских юридических сервисов и кадровых систем - контракты, резюме и переписку с поддержкой прогоняешь локально, наружу ничего не уходит. По сути, это первая открытая система поиска персональных данных, которую не стыдно поставить в прод.
Privacy Filter — это открытая ИИ-модель от OpenAI для поиска персональных данных в тексте. Лицензия Apache 2.0, размер 1.5 миллиарда параметров, активных 50 миллионов, контекст 128 тысяч токенов. Модель размечает текст по восьми категориям за один проход и работает с многоязычным контентом без отдельной настройки. Полезна разработчикам юридических сервисов, кадровых систем и инструментов маскировки скриншотов, которым нужна локальная обработка персональных данных без обращений к внешним API.
Что произошло
OpenAI выложила в открытый доступ на Hugging Face Hub модель Privacy Filter. Это детектор персональных данных с лицензией Apache 2.0. Модель размечает текст по восьми категориям за один проход через контекст в 128 тысяч токенов.
Размер модели - 1.5 миллиарда параметров, из которых активных всего 50 миллионов. На бенчмарке PII-Masking-300k Privacy Filter показывает лучший результат среди публичных решений.
Категории, которые умеет находить модель:
- private_person — имена
- private_address — адреса
- private_email — адреса электронной почты
- private_phone — номера телефонов
- private_url — ссылки
- private_date — даты
- account_number — номера счетов
- secret — токены и пароли
Многоязычный текст идёт через тот же вызов без отдельной настройки: испанский, французский, китайский, хинди и другие языки из примеров на model card.
💡 Если у тебя пайплайн с контрактами или экспортами чатов — Privacy Filter закрывает задачу маскировки PII локально, без передачи документов наружу.
Три демо-приложения от Hugging Face
Команда Hugging Face потратила несколько часов на демонстрационные приложения. Получилось три кейса, каждый раскрывает свой срез возможностей Privacy Filter. Все три построены на gradio.Server. Это связка кастомных HTML/JS-фронтендов с очередью Gradio, выделением ресурсов через ZeroGPU и SDK gradio_client.
Document Privacy Explorer
Адрес: ysharma/OPF-Document-PII-Explorer.
Задача пользователя: загрузить PDF или DOCX (контракт, резюме, экспортированный лог чата) и читать документ как обычно, но с подсвеченными по категориям фрагментами персональных данных. Сбоку фильтр по категориям, сверху сводный дашборд.
Что делает Privacy Filter: весь файл проходит за один прогон через 128k-контекст. Не нужно резать на куски и склеивать обратно, смещения фрагментов точно совпадают с отрендеренным текстом. BIOES-декодинг сохраняет границы фрагментов чистыми даже на длинных неоднозначных участках.
Что даёт gr.Server: интерфейс читалки сделан как один HTML-файл, модель выставлена за одной точкой входа. Декоратор @server.api(name="analyze_document") подключает обработчик к очереди Gradio. Одновременные загрузки сериализуются, @spaces.GPU корректно работает на ZeroGPU, а одна и та же точка доступна и из браузера, и из gradio_client без дублирования кода.
Image Anonymizer
Адрес: ysharma/OPF-Image-Anonymizer.
Задача пользователя: поделиться изображением или скриншотом (тред в Slack, чек, дашборд Stripe) с чёрными полосами поверх личных данных. Полосы можно включать и выключать, перетаскивать, рисовать новые вручную для того, что модель пропустила, и потом экспортировать результат.
Что делает Privacy Filter: Tesseract запускает OCR и возвращает координаты для каждого слова. Бэкенд собирает полный текст с картой смещений символов, прогоняет Privacy Filter один раз по всему тексту. Найденные фрагменты сопоставляются с картой слов и склеиваются в пиксельные прямоугольники по строкам.
Что даёт gr.Server: бэкенд возвращает пиксельные прямоугольники с одной точки входа в очереди. Кастомный canvas-фронтенд на стороне браузера сам рисует полосы, обрабатывает переключатели категорий, перетаскивание и экспорт PNG в исходном разрешении без обращений к серверу.
SmartRedact Paste
Адрес: ysharma/OPF-SmartRedact-Paste.
Задача пользователя: пастебин, который маскирует данные перед публикацией. Пользователь вставляет лог-строку, письмо, тикет в поддержку. На выходе две ссылки. Публичная отдаёт версию с плейсхолдерами вроде <PRIVATE_PERSON>, <PRIVATE_EMAIL>, <ACCOUNT_NUMBER>. Приватная защищена токеном и показывает оригинал с подсвеченными фрагментами.
Что делает Privacy Filter: каждый найденный фрагмент заменяется на плейсхолдер <CATEGORY> в сохранённой версии. Это вся работа по маскировке.
Что даёт gr.Server: приложению нужны два разных GET-маршрута на один ID пасты, публичный и защищённый токеном. URL-схема имеет значение, потому что ссылка для просмотра оригинала - то, что пользователь сохраняет себе. gr.Server подходит, потому что под капотом это FastAPI-приложение. Поэтому @server.api и обычные @server.get живут рядом в одном процессе. Фоновый демон раз в 30 секунд удаляет просроченные пасты. Весь сервис вместе с хранилищем - около 200 строк прикладного кода.
Чем gradio.Server отличается от обычного Gradio
Разделение во всех трёх приложениях одинаковое. Всё, что касается модели, идёт через @server.api. Всё остальное остаётся на обычных маршрутах FastAPI.
@server.api даёт очередь Gradio: сериализацию запросов, корректную работу @spaces.GPU на ZeroGPU, события прогресса. Это та точка, куда стучится браузер через @gradio/client. Та же точка доступна Python-клиентам через gradio_client. Получается одна функция и два SDK без дублирования кода.
Обычные @server.get и @server.post оставлены для статических поверхностей: HTML-страницы, поиск файлов, дешёвые операции чтения. Это правило большого пальца из вводного поста про gradio.Server. Именно оно делает три разных по UI приложения консистентными изнутри.
Что это значит для разработчиков
До сих пор открытые детекторы личных данных проигрывали коммерческим API по точности. Privacy Filter перевернул эту ситуацию: state-of-the-art на бенчмарке PII-Masking-300k и Apache 2.0 одновременно. Контекст в 128 тысяч токенов снимает необходимость резать длинные документы и склеивать результаты, а это типовая боль при работе с контрактами и логами.
💡 Сценарий, который раньше требовал коммерческого API: прогон контракта перед отправкой подрядчику. Теперь это собирается локально за один день на gradio.Server.
Практический сценарий: прогон контракта или экспорта чата перед отправкой подрядчику, маскировка скриншотов в баг-репортах, защищённый пастебин для логов. Всё это собирается за один день на gradio.Server и крутится локально, без обращений к внешним API.
Источники
- HuggingFace Blog (2026-04-27)

AI-инженер, предприниматель, маркетолог. Основатель feberra.com и x10seo.ru. 13 лет в перфоманс-маркетинге, 3 года в системной интеграции AI в бизнес.