Перейти к содержимому

Как устроен Anonymaze

Обновлено: 28 апреля 2026

Anonymaze — это тонкая нативная оболочка поверх детерминированного движка обработки текста. Эта страница повторяет тот же путь, который проходит ваш текст при обезличивании документа: от «пользователь выбрал файл» до «скопировал чистый результат».

Обзор стека

КомпонентТехнологияРоль
Оболочка macOSSwiftUIНативный интерфейс, выбор файлов, OCR через Apple Vision
Оболочка WindowsElectron + ReactДистрибуция под Windows с первого дня (внутренняя бета v0.1)
СайтNext.js 16 + React 19 + Tailwind 4Этот сайт и онлайн-демо
Движок обработкиСобственный многоступенчатый движокРаспознавание сущностей — общее для десктопа и онлайна
Бэкенд-APIFastAPI + Uvicorn + slowapiОбслуживает онлайн-демо и тариф Pro

Конвейер распознавания

  1. Этап регулярных выражений. Детерминированные шаблоны для структурированных ПД (email, телефоны, ИНН/SSN, IBAN, банковские карты, страновые ID). Быстро, высокая точность, почти ноль ложных срабатываний на корректных данных.
  2. Поверхностные эвристики. Учёт языка при токенизации, признаки заглавных букв, обработка обращений. Связующее звено между регулярными выражениями и статистическим распознаванием сущностей.
  3. Распознавание именованных сущностей. Отдельная модель распознавания на каждый язык. Находит ИМЯ, ОРГАНИЗАЦИЮ, ЛОКАЦИЮ, АДРЕС, ДАТУ.
  4. Фильтр ложных срабатываний. Набор правил на каждый язык отсеивает типичные ложные срабатывания (слово с заглавной в начале предложения, бренды, совпадающие с фамилиями, и т.п.).
  5. Дедупликация и разрешение диапазонов. Пересекающиеся кандидаты от предыдущих этапов сводятся в один непересекающийся список диапазонов. Совпадающие упоминания одного человека («Иван Петров» → позже «г-н Петров» → позже просто «Иван») схлопываются в одну метку.
  6. Результат. Итоговый JSON: обезличенный текст, список сущностей (метка + оригинал + тип + диапазон), таблица соответствий для обратной замены, статистика по типам, определённый язык и время обработки в миллисекундах.

Языковые пакеты

Сегодня мы поддерживаем 13 языков в двух уровнях. Уровень A (целевые точность и полнота ≥ 0,95): английский, русский, французский, немецкий, испанский. Уровень B (целевые ≥ 0,85): китайский, хинди, итальянский, японский, корейский, польский, португальский, турецкий. Автоопределение направляет текст в нужный пакет по символьной и словесной эвристике.

КодЯзыкДвижок распознавания
zhКитайскийСобственный движок распознавания
enАнглийскийСобственный движок распознавания
frФранцузскийСобственный движок распознавания
deНемецкийСобственный движок распознавания
hiХиндиСобственный движок распознавания
itИтальянскийСобственный движок распознавания
jaЯпонскийСобственный движок распознавания
koКорейскийСобственный движок распознавания
plПольскийСобственный движок распознавания
ptПортугальскийСобственный движок распознавания
ruРусскийСобственный движок распознавания
esИспанскийСобственный движок распознавания
trТурецкийСобственный движок распознавания

Страновые идентификаторы

Помимо универсальных типов сущностей, Anonymaze распознаёт страновые идентификаторы. Список растёт с каждым новым языковым пакетом.

СтранаРаспознаваемые идентификаторы
РоссияИНН, СНИЛС, паспорт, полис ОМС
СШАSSN
ИспанияDNI, NIE, CURP, RFC
Португалия / БразилияCPF, NIF
ФранцияNIR (соцстрахование)
ГерманияSteuer-ID
Китай身份证 (национальный ID)
ИталияCodice Fiscale, P.IVA
ПольшаPESEL
ТурцияT.C. Kimlik No

Обратимость (восстановление после внешнего AI)

Когда вы включаете обратимость, Anonymaze создаёт рядом с обезличенным текстом файл соответствий, чтобы вы могли восстановить оригиналы после прогона текста через внешний AI (ChatGPT, Claude и т.п.). Это функция тарифа Pro.

  • Метки с hex-тегом: вместо «[PERSON_1]» движок выдаёт устойчивые для документа теги вида «[PERSON_a3f2]». Четырёхсимвольный hex-суффикс выводится из соли документа, поэтому одно и то же имя в двух разных документах получает разные теги — обезличенный текст безопасно передавать дальше.
  • Файл соответствий mapping.json: небольшой JSON с версией схемы, солью документа и массивом записей «тег, оригинал, тип, позиции, уверенность». Вы скачиваете его после обезличивания и храните в тайне.
  • По умолчанию только локально: файл соответствий не покидает устройство, пока вы сами его не выгрузите. Десктоп-приложение пишет его рядом с документом; веб-демо позволяет сохранить его как файл.
  • Полный цикл: вы обезличиваете → вставляете очищенный текст в ChatGPT / Claude / ваш AI → вставляете ответ AI обратно в Anonymaze вместе с файлом соответствий → Anonymaze возвращает оригиналы в ответ.
  • Конфликты и неизвестные теги: если AI придумал новые теги «[PERSON_xxxx]», которых нет в вашем файле соответствий, мы оставляем их как есть и показываем их число, чтобы вы могли проверить.

Усиление для Pro в планах: зашифрованные файлы соответствий (AES-256-GCM с KDF Argon2id). Пока это не выпущено, файл соответствий — обычный JSON: относитесь к нему как к исходному документу и храните соответствующе.

Два пути: куда уходят ваши данные

Десктоп (офлайн)

Ваш файл читается с диска оболочкой SwiftUI / Electron, передаётся локальному процессу движка через Process + Pipe, и результат в формате JSON отображается. На этом пути не выполняется ни одного сетевого запроса. Методику проверки см. в разделе «Безопасность».

Онлайн-демо

Ваш текст отправляется по TLS 1.3, обрабатывается обработчиком FastAPI в памяти со свежим экземпляром на каждый запрос, возвращается и удаляется. Постоянного хранения нет. Ограничение — 5 запросов в минуту с одного IP.

Инженерный подход

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

Характеристики производительности

Типичное время распознавания (онлайн-демо, 1 КБ текста)~85 мс на сервере
Типичное время распознавания (десктоп, 1 КБ текста)~120 мс (холодный кеш); ~40 мс (тёплый)
Лимит текста на бесплатном тарифе50 000 символов на запрос
Лимит текста на тарифе Pro500 000 символов на запрос
Лимит размера файла (бесплатно)10 МБ на документ
Поддерживаемые форматыDOCX, XLSX, PPTX, CSV (с сохранением форматирования), PDF, TXT, RTF (текст) + OCR изображений (PNG, JPG)