Два независимых процесса
По сути, Misfora — это два процесса на одной модели данных: обработка документов и синхронизация броней. Они встречаются в записи о госте.
Обработка документов гостя
Сбор и проверка документов, удостоверяющих личность гостя.
Вместо ручного ввода данных паспорта на ресепшене гости получают защищённую ссылку на заселение до заезда и фотографируют документ своим телефоном. Misfora автоматически:
- определяет документ на фото
- извлекает MRZ (машиночитаемую строку символов внизу паспорта или ID)
- распознаёт поля личности
- сверяет документ с бронью
- хранит оригинальное изображение отдельно от результата OCR (распознавания текста)
- позволяет повторить распознавание, если скан неразборчив
Каждый загруженный документ становится структурированной цифровой личностью, а не просто файлом с изображением.
Автоматически извлекайте данные гостя из фото паспорта — попробуйте бесплатный сервис распознавания паспорта, тот же движок в виде отдельного инструмента.
Приложение не нужно
Часть процесса со стороны гостя полностью работает в браузере — камера, загрузка и подтверждение происходят на странице, открытой по ссылке, устанавливать ничего не нужно. Для действия, которое гость делает один раз за один заезд, просить его установить приложение ради этого — реальное трение при почти нулевой выгоде для него.
Инструменты для персонала сегодня по той же причине веб-based. Отдельное приложение для менеджера не исключено в будущем, но оно решает другую задачу — веб-first выбор важнее всего именно на стороне гостя, где альтернатива — разовая установка приложения, которую никто не хочет.
Не любое фото — проверка качества в реальном времени
Размытое или обрезанное фото — главная причина неудачного OCR, поэтому Misfora не пропускает такое изначально. Каждый кадр с камеры гостя оценивается в реальном времени, непрерывно, ещё до того, как что-либо загружается:
- Резкость — измеряется по нескольким областям кадра, а не по одному общему среднему, поэтому фото, резкое в центре, но размытое по краям, всё равно будет отловлено
- Яркость — отклоняет недоэкспонированные кадры до того, как они попадут в OCR, а не после
- Блики — ловит отражения от ламинированной карты или страницы с фото в паспорте
- Границы документа — порог контраста, который подстраивается под фон (не одно фиксированное число для любой поверхности), проверяя, что все четыре стороны документа реально внутри кадра и не обрезаны
Подсказки на экране реагируют мгновенно — слишком темно, перейдите на более тёмный фон, блик, наклоните документ — вместо того чтобы принять любое фото, которое гость поднёс к камере. Кадр засчитывается только после того, как пройдёт все проверки на протяжении устойчивой серии тиков, а не в один случайный момент, — поэтому короткое мерцание или мимолётная тень не заблокирует и не пропустит кадр ошибочно.
Как только найден хороший кадр, снимок делается автоматически — гостю не нужно угадывать момент для нажатия на кнопку затвора — а файл, который реально попадает в OCR, сохраняется почти без потерь качества, без повторного сжатия на входе.
Три способа отсканировать документ
Письмо перед заездом — путь по умолчанию, но не единственный — персоналу на ресепшене не нужно его дожидаться:
Гость получает защищённую ссылку по email перед заселением и сканирует на своём телефоне, без участия персонала.
Один клик открывает тот же поток камеры прямо на устройстве сотрудника — без ссылки, без email, гость сканирует прямо на стойке.
Сгенерировать свежую персональную ссылку на одного гостя — скопировать в буфер или открыть напрямую, независимо от автоматического письма.
Все три способа попадают в один и тот же конвейер ниже — системе не важно и не нужно знать, каким путём пришёл конкретный документ.
Как достучаться до не ответившего гостя
Если ссылка гостя всё ещё не открыта близко к заезду, персоналу не нужен сервис поиска номера телефона, чтобы поторопить его. В каждой строке гостя есть готовые ссылки click-to-chat для WhatsApp, Viber и Zalo — официальные deep-link-схемы (wa.me, viber://chat, zalo.me), которые работают для любого зарегистрированного номера, плюс ссылка на Telegram, которая работает только если у гостя включена видимость номера телефона в собственных настройках приватности (это отмечено в интерфейсе, поскольку не гарантировано, в отличие от трёх остальных).
Один клик открывает чат уже с адресованным гостем — не нужно набирать номер или переключаться между приложениями в поисках нужного контакта. Отдельный раздел pending guests в дашборде показывает именно тех, кому ещё нужно напоминание (ссылка открыта, но не завершена, либо истекла без ответа), с теми же ссылками в один клик прямо там — персоналу не нужно просматривать всю таблицу гостей в поисках того, кому написать.
Ничего не отправляется автоматически, и ни один номер молча не проверяется на наличие аккаунта в мессенджере — ни WhatsApp, ни Viber, ни Telegram не дают легитимного способа проверить произвольный номер, не связавшись с ним, поэтому Misfora и не пытается. Каждая ссылка — просто готовая дверь в чат, которую сотрудник открывает сам, если и когда решит это сделать.
Поддерживаемые документы
Misfora построена вокруг проездных документов, соответствующих стандарту ICAO.
TD3 MRZ (две строки по 44 символа) — стандартный формат паспорта ICAO.
TD1 MRZ (три строки по 30 символов) — стандартный формат ID-карты ICAO, используемый во многих странах, не привязан к одной стране выдачи.
Слой OCR изначально спроектирован с учётом типа документа — добавление нового типа означает добавление нового адаптера, а не изменение остальной платформы. Кандидаты на будущую поддержку: национальные ID-карты, виды на жительство, водительские удостоверения и другие проездные документы конкретных стран.
Извлекаемые данные
Что Misfora считывает со сканированного документа.
Оригинальное изображение хранится отдельно от результата OCR, поэтому документ можно позже переобработать улучшенным движком распознавания, не прося гостя загрузить его повторно.
Достоверность и проверка
Распознавание — это не единый результат «прошло/не прошло», оно на уровне отдельных полей и помнит, что уже подтверждено.
Всё начинается с хорошего входного сигнала: проверки качества в реальном времени выше означают, что OCR гораздо чаще работает с резким, хорошо освещённым, правильно закадрированным фото — надёжность начинается ещё до того, как изображение попадёт в движок распознавания.
Вместо того чтобы считать документ «распознанным» или «не распознанным» целиком, Misfora независимо оценивает три блока: фамилию, имя и всё остальное — у второй группы за плечами контрольные суммы MRZ, поэтому она изначально надёжнее, чем написание имени.
Как только блок распознан с высокой уверенностью, он блокируется. Более поздний повторный скан может дополнить то, что ещё отсутствует или не подтверждено, но уже не может перезаписать блок, который уже прошёл проверку — гость не может случайно (или намеренно) заменить уже подтверждённые данные, повторно загрузив другое фото.
Обнаружение несовпадений
Каждый распознанный документ сверяется с бронью, к которой он относится. Небольшая разница в написании считается обычной OCR-коррекцией; крупное расхождение помечается для ручной проверки вместо молчаливой перезаписи брони, и система различает два случая: похоже, что гость загрузил не тот документ, либо документ принадлежит другому гостю, а не тому, за кем он закреплён в брони. Оба случая уходят в очередь менеджера, а не принимаются автоматически.
Синхронизация с PMS
Связь документов гостя с бронями отеля.
Misfora синхронизирует данные о бронях из поддерживаемых PMS-платформ и превращает каждую бронь в единую внутреннюю модель. Вместо написания отдельной логики под каждую PMS по всему приложению, Misfora приводит данные о бронях к одной структуре, которая остаётся одинаковой независимо от источника — OCR, синхронизация с PMS и подача в госорганы работают с этой же структурой.
OAuth-подключение, мгновенные обновления при изменениях в Exely, плюс периодические перепроверки, чтобы не упустить пропущенное. В production-использовании.
Синхронизация по принципу опроса для объектов без PMS — см. подключение Google Таблицы.
Паттерн адаптеров ниже — как раз то, что делает добавление новой PMS ограниченной задачей, а не переписыванием с нуля — пока объявлять не о чем.
Новые PMS-системы добавляются через модули-адаптеры без изменения ядра платформы — см. Модульную архитектуру адаптеров ниже.
Заселение без захода в PMS
Как только документ хотя бы одного гостя проживания подтверждён, а само проживание оплачено, кнопка Check in в той же строке таблицы гостей записывает реальное время заселения прямо в PMS — персоналу не нужно переключаться на Exely, чтобы сделать это вручную. Кнопка становится активной только когда система сама повторно проверяет оба условия (документ подтверждён, ничего не висит), а не просто верит тому, что показано на экране — и случайный повторный клик безопасен: уже заселённое проживание не заселится второй раз. Если PMS недоступна или отклоняет запрос, ничего не меняется ни с одной стороны, и действие можно просто повторить.
Брони с несколькими номерами (несколько комнат в одной брони) обрабатываются так же, без дополнительной логики — та же модель «одно проживание за раз», что уже используется по всей платформе.
Таблица гостей — настроенная под вас, а не под нас.
Настраиваемые колонки, персонально для каждого менеджера.
Таблица гостей может показывать многое — имена, документы, даты, номер, контакт, оплату, статус синхронизации и так далее. Управляющему одной виллой и загруженной стойке регистрации отеля нужны не одни и те же вещи, поэтому видимость колонок полностью настраивается: отключите лишнее и оставьте только то, что важно именно для вашей работы.
Эта настройка персональна для каждого менеджера — то, что вы настроили под себя, не меняет то, что видит коллега на своём экране.
Сама таблица делится на два вида — гости, которые скоро заедут, и гости, уже заселённые и ожидающие выезда — с отдельными настройками колонок для каждого, потому что важное до заезда (статус ссылки, проверка документа) отличается от важного после (номер комнаты, время выселения).
Поскольку настройка привязана к устройству, а не только к аккаунту, её можно сделать разной на телефоне и на компьютере — меньше колонок на маленьком экране, без изменения настройки на десктопе.
Единая модель данных о госте
Каждая бронь, независимо от PMS, проходит один и тот же жизненный цикл.
Именно эта универсальная цепочка отделяет бизнес-логику от реализаций конкретных PMS — остальной части платформы (OCR, дашборды, подача в госорганы) никогда не нужно знать, на какой PMS работает конкретный объект.
Подача в госорганы
После сбора данных гостя Misfora готовит их и автоматически подаёт в подключённую государственную систему.
Вместо того чтобы разбрасывать логику под конкретные страны по всему приложению, каждая страна назначения подключена через свой адаптер, который сопоставляет проживание + гостя + документ с нужным форматом данных для этой страны.
Полная SOAP-интеграция, построенная под обязательную систему регистрации гостей Турции.
Структура маппера существует; точный формат данных Hospedajes/SES ещё предстоит подтвердить по официальной документации.
Менеджеры могут посмотреть точные данные, которые будут отправлены за гостя, ещё до отправки, из админ-панели. Именно этот паттерн адаптеров позволяет добавить новую страну, не меняя основной процесс заселения.
Умный конвейер обработки
Полный путь гостя, от брони до соответствия требованиям.
События брони и синхронизации с PMS обрабатываются в фоне, а не на пути самого запроса — обновление от PMS подтверждается немедленно, а реальная работа по синхронизации идёт следом, поэтому она никогда не блокирует и не задерживает заселение гостя.
Прогресс по каждому проживанию (ожидание / частично завершено / завершено) виден персоналу отеля в админ-панели по мере того, как гости проходят свою часть.
Модульная архитектура адаптеров
Misfora изначально спроектирована как интеграционная платформа, а не узкоспециализированный инструмент OCR.
Три части системы изолированы за общим паттерном адаптеров — у каждой есть базовый интерфейс и реестр, поэтому добавление нового не требует трогать роуты, модели или слой базы данных:
Превращают сырой вебхук PMS или строку таблицы в единый универсальный формат брони. Сегодня — Exely и Google Sheets, структура рассчитана на большее.
Превращают фото документа в распознанные поля. Один адаптер на тип документа (паспорт, ID-карта), независимо от движка.
Превращают проживание + гостя + документ в данные для подачи в конкретную страну. Турция KBS, Испания.
Уведомление гостя намеренно не построено как система адаптеров под нескольких провайдеров: это один канал email (Resend, с SMTP как резервом). SMS/WhatsApp и прочее не используются для автоматической отправки — см. как достучаться до не ответившего гостя выше о том, для чего реально используются номера телефонов.
Безопасность по дизайну
Приватность гостя заложена в структуру, а не прикручена сверху.
Misfora хранит три вещи как отдельные сущности, а не одним блоком: оригинальное изображение документа, сырой результат OCR и структурированные данные гостя, полученные из него. Именно это разделение обеспечивает безопасное хранение, контролируемый доступ и возможность переобработки в будущем более качественным движком распознавания — без повторной просьбы к гостю загрузить документ ещё раз.
Почему такая архитектура
В традиционных процессах отелей одни и те же данные гостя вручную вводятся в несколько систем. Misfora превращает это в один автоматический процесс.
Один документ. Один процесс. Несколько связанных систем.
См. как работает интеграция с Exely PMS по шагам, включая настройку вебхука и API-ключа, или Инструкцию о том, как регистрация выглядит день за днём на ресепшене.