棋谱识别原理:手写如何变成 SAN

    ScanChess 怎样读手写棋谱:dc 之类的简写、容易混淆的字母,以及为什么每一步都要在棋盘上重放并按规则校验。

    棋谱识别原理:手写如何变成 SAN的 ScanChess 工作流

    通用的文字识别只认形状。读棋谱需要更多:字母容易混淆、字写得快,而且最关键的是,国际象棋规则本身就能判断哪些读法根本不可能。这一页讲的就是照片和文件之间的这一步。

    为什么手写棋谱是个单独的问题

    用到的字符很少,却特别容易混:b 和 6,Q 和 9,0 和 O,f 和 t。通用文本模型没有理由偏向任何一边;而在着法列表里,只错一个字符,就会悄悄变成另一盘看起来同样合理的棋。

    再加上大家实际的写法:用 dc 表示兵吃子的简写、涂改、表示“同上”的箭头、写在空白处的 ep 和 =Q,偶尔还有写错列的着法。

    棋盘负责消除歧义

    关键在于:不把记谱单当成普通文字来读。每识别出一步,就在棋盘上走这一步;当前局面会限制下一个记号可能是什么。

    • Nbd2 和 Nfd2——通常只有一个合法,另一个在你看到之前就被排除了。
    • dc 不能原样保留:根据局面,d 线上通常只有一个兵能吃子,所以展开成 dxc5。
    • 写成 0-0 的王车易位会读成 O-O,因为两个零不是着法。
    • 完全不可能发生的着法——马到不了那一格,或者吃了一个不存在的子——会标成红色,不会写进你的对局。

    最后这一点最要紧。误读一旦产生非法着法,就会立刻被发现。 你只需要看几处带颜色的着法,不用对着一张自己也未必认得出的纸逐步校对四十回合。

    颜色的含义

    红色是非法着法:这个读法在当前局面下走不了,说明前面有地方出了错——可能是这一步本身,也可能是更早的某一步让棋盘状态偏了。

    琥珀色是低置信度着法:模型读出了内容,但没有足够把握。编辑器会列出该局面下合法的着法,所以如果 Nbd2 和 Nfd2 都可能,你在两者之间选一个就行,不用打字。没有单独的“歧义”类别:只要模型不确定,就是琥珀色,不管原因是什么。

    哪些情况还是要靠你

    有两种情况规则解决不了:

    读错了,但恰好合法,而且模型很有把握。 如果 Nbd2 和 Nfd2 都合法,而模型选错了那个,再怎么校验也不知道你当时走的是哪个。这时靠重放棋盘:逐步走一遍,局面和你的记忆对不上的地方就是它。

    记谱单本身错了。 记录的人漏写了一步,从那里开始整盘棋就偏了。校验能标出偏离的位置,却不知道原因;修正要回到当时的局面,或者看对手的那份记谱单。

    修改用每步旁边的铅笔按钮,不花积分:只有识别本身用积分。改完一步,后面的着法会从这里重新校验。

    支持的记谱方式

    FIDE 要求的标准代数记谱法(SAN):棋子字母 KQRBN,兵不写字母,x 表示吃子,O-O 和 O-O-O,+ 和 #,=Q 表示升变,以及用纵线或横线消除歧义。想复习的话,国际象棋记谱法详解讲整个体系,7 个常见记谱错误讲人在着急时会写错什么。

    描述式记谱(P-K4、N-KB3)不支持。这样写的着法会按原样显示,但不会转换成代数记谱、不会重放,也不做校验,所以旧棋谱要先改写再扫描。描述记谱法与代数记谱法讲怎么改。

    相关内容

    常见问题

    简写能识别吗?
    能。像表示兵吃子的 dc,系统会根据棋盘局面展开成 dxc5 这样的标准 SAN。
    旧式的描述记谱法怎么办?
    不支持。P-K4 这类着法会按原样显示,但不会转换、不会重放,也不做校验。请先把棋谱改写成代数记谱再扫描。
    读错了怎么发现?
    每一步读出来都会在棋盘上重放。在当前局面下不合法的着法标红;模型没把握的着法标琥珀色,编辑器里会给出合法的备选着法。
    扫描记谱单

    注册即送 10 个免费积分。大量使用见 定价

    ScanChess 的其他用法