a) the grammar for chess move notation is fairly limited; and
b) each move must be valid relative to the current game state
can be used as contextual clues to resolve ambiguous characters. Of course, this means you can't use an off-the-shelf handwriting recognition package that recognizes whole words like you describe, but requires a custom per-character recognizer. (But then, isn't that what you're doing already?)