На каждом бланке найдутся ходы, которые объективно трудно разобрать: ручка заела, игрок попал в жестокий цейтнот, символы слиплись в невнятную закорючку. Главный вопрос заключается не в том, сможет ли сканер угадать их с первого раза. Вопрос в том, что происходит, когда система сомневается.
Последние обновления ScanChess были полностью посвящены этой задаче. Изменения делятся на три блока: более точный анализ рукописных штрихов, отлов ошибок, которые бессильна обнаружить базовая проверка правил шахмат, и формулирование точных, понятных вопросов пользователю для оставшихся неясностей. При этом система принципиально никогда не переписывает ходы за вашей спиной — этот запрет соблюдается строго.
Ошибка ошибке рознь
Полезно разделять три типа сбоев, которые в готовом PGN-файле выглядят одинаково:
- Неразборчивые чернила. Алгоритм увидел штрих, но выбрал не тот символ.
- Нестандартная нотация. Алгоритм прочитал буквы верно, но шахматист использовал запись, не предусмотренную официальным стандартом алгебраической нотации, и ход был забракован как бессмысленный.
- Легальная ошибка распознавания. Ход прочитан чисто, возможен по правилам шахмат, но на самом деле был сделан совершенно другой ход.
Каждая ситуация требует своего подхода. Простая проверка по шахматным правилам закрывала лишь первые два случая, да и то частично.
Не все оптические искажения равноценны
Раньше алгоритм сопоставлял прочитанные символы со списком допустимых ходов, считая любое несовпадение букв равноценным штрафом: замена 1 на 7 штрафовалась так же строго, как замена 1 на 9, хотя первое — регулярная почерковая оплошность, а второе при письме от руки практически не встречается.
Теперь система учитывает веса искажений. Пары символов, которые при письме от руки часто путаются — 1/7, a/g, c/e, k/r, 0/O — наказываются лишь долей штрафного балла. Пары, которые перепутать невозможно, штрафуются по полной шкале. Если два хода-кандидата одинаково похожи на написанные чернила, предпочтение отдается тому, который объясняется естественной погрешностью человеческого почерка.
Один частный случай удостоился отдельного правила. Шахматисты в спешке регулярно опускают знак взятия: пишут Bf3 вместо Bxf3. Старая система штрафовала за это дважды: как за пропущенный символ и как за несовпадение типа хода (тихий ход вместо взятия). Двойной штраф отбрасывал реальный ход назад, выдвигая на первое место тихий ход на соседнее поле. Теперь пропущенный x, + или # наказывается минимально, так как сам по себе этот знак почти не несет информации о том, какая именно фигура и куда пошла.
Как шахматисты пишут на самом деле
Стандартная алгебраическая нотация подробно описана в судейских справочниках, но на реальных бланках игроки нередко пишут по-своему — особенно те, кто учился шахматам десятилетия назад или в других национальных традициях. Теперь система распознает такие записи на основе позиции, а не отбрасывает их:
| Запись на бланке | Что это означает |
|---|---|
Pe4, Pxd5, Pe8=Q |
ход пешкой с явной буквой P (Pawn) |
e2-e4, Ng1-f3, Bc1xf4, Ng1f3 |
полная алгебраическая нотация (с дефисом или слитно) |
BxN, NxBc4 |
указание срубленной фигуры вместо поля назначения |
cd, cxd, cd5, c:d |
взятие пешкой в формате «вертикаль бьет вертикаль» |
Перед анализом автоматически отсекаются номера ходов, пометки ch (шах), e.p. (взятие на проходе), восклицательные знаки и разнообразные символы двоеточий, которыми игроки обозначают взятие. Если оставшаяся запись однозначно соответствует единственному легальному ходу, она принимается с высоким уровнем доверия. Если вариантов несколько (например, BxN, когда слон может срубить двух разных коней), ход получает статус сомнительного, и окончательное решение переносится на этап валидации всей партии.
Ход по правилам возможен, но так никто не играет
Это самая коварная ошибка, которая раньше ускользала от автоматики. Неверно прочитанный ход чаще всего остается легальным по правилам. Например, Nf3, ошибочно прочитанное как Nf5, может оказаться вполне допустимым ходом коня; шахматные правила не видят здесь противоречия, и на выходе получается внешне правильный, но фактически испорченный PGN.
Однако в самой партии возникает четкий сигнал аномалии: после неверно распознанного хода фигуры на доске начинают вести себя противоестественно для живой игры. Ферзь встает под бой пешки, а пешка почему-то не берет его. Ладья висит под боем три хода подряд, и оба соперника упорно не обращают на это внимания.
Теперь ScanChess выполняет статический расчет разменов (Static Exchange Evaluation, SEE) на каждом полуходе и проверяет: не осталась ли фигура под боем без компенсации и не проигнорировал ли соперник очевидное взятие? Две страховки исключают ложные срабатывания:
- Шах отменяет подозрение. Если король находится под шахом, игрок обязан защищаться, и отказ от взятия бесплатной фигуры вынужден правилами, а не абсурден.
- Истинная жертва перестает висеть после ответа. Фигура считается «повисшей», только если она остается под боем спустя полный ход — то есть взятие было доступно, у соперника было время забрать материал, но он этого не сделал.
Серия ходов с одной и той же аномалией объединяется в одно предупреждение: ладья, висящая шесть полуходов, вызовет одну пометку, а не шесть. Подсвечиваются оба полухода: тот, который поставил фигуру под бой, и тот, который прошел мимо взятия. Партия не переписывается автоматически: вы получаете желтый флажок с понятным объяснением и сами принимаете решение.
Умные вопросы вместо открытых догадок
Раньше при сомнениях система задавала открытый вопрос: «Мы прочитали вот это, что здесь должно быть?» Это нередко приводило к опечаткам или вводу ходов, невозможных по правилам в текущей позиции.
Теперь вопрос строго структурирован. На сомнительном полуходе ScanChess берет полный список возможных по правилам ходов (обычно их от 30 до 40) и сопоставляет каждый из них со всеми гипотезами распознавания символов на бланке с учетом их коэффициентов уверенности. В результате формируется короткий список вариантов, которые одновременно легальны на доске и максимально похожи на написанные чернила. Вопрос превращается в удобный выбор из нескольких готовых вариантов.
Два защитных механизма гарантируют точность: вариант, не входящий в список допустимых правилами, не может быть выбран, а если цепочка исправлений делает невозможными последующие ходы партии, система сбрасывает правки целиком, предотвращая частичную поломку PGN.
Когда есть записи обоих соперников
В официальной очной партии оба шахматиста записывают одну и ту же игру. Это два независимых источника данных, и расхождения между ними исключительно информативны.
ScanChess умеет объединять бланки обоих соперников. Потоки ходов не просто склеиваются, а интеллектуально выравниваются: если один игрок пропустил строчку, выравнивание автоматически сдвигается, не превращая все последующие ходы в сплошной конфликт. Там, где записи обоих бланков совпадают, уверенность распознавания возрастает в полтора раза: две разные руки и две независимые строки, сошедшиеся на Nf3 — доказательство надежнее любого одиночного снимка. При расхождении уверенность снижается, а оба варианта сохраняются для быстрой проверки пользователем с указанием источника.
Что мы намеренно оставили неизменным
Автоматическое тайное исправление ходов отключено навсегда. Сканирование показывает запись ровно такой, какой она была на бумаге. Если цепочка ходов нарушает правила шахмат, сбойный полуход четко помечается; если ход выглядит сомнительно, система подсвечивает его и объясняет причину. Все наши обновления направлены на то, чтобы сделать подсказки точнее, а вопросы — лаконичнее. Никаких самовольных правок в вашей партии: скрытно «исправленный» бланк куда опаснее бланка, на котором проблемные места открыто показаны игроку.
Лучшим фундаментом для распознавания остается качественный снимок: наш чек-лист по фотосъемке бланка занимает тридцать секунд и работает эффективнее любого программного алгоритма. Но даже если чернила объективно трудно разобрать, сканирование бланка в ScanChess теперь сообщает максимум пользы: указывает сомнительный ход, объясняет причину сомнения и предлагает легальные альтернативы с доски.

