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?)
You can help by checking the legality of the current move (which you seem to already do) and also the rest of the game?
Who am I to talk though, I'm not the one programming this thing. That's just what my gut tells me. :)
The model actually gives us a confidence for each possibility. It might say, N-90%, K-10%, B/R/Q-0% for one of the boxes. Here, we look at how confident our character recognizer is on each character. If the PGN is invalid, then we know some character was recognized incorrectly. We look at the low-confidence characters and change them to the next highest confidence prediction, checking to see which combination of changes delivers a valid PGN. For example, consider the string of moves 1. d4 d2. Black can't play d2 on move 1! But we look at the next most likely predictions, perhaps d8 for white and d5 for black. These are the combinations:
Only the second one is valid, so we choose it and continue ahead.
If you literally wrote "d4 d2," then it's a lot less likely that the correct digit instead of 2 will be in the top 3 predictions.
Anyways, this is really cool, and smart idea. I'll be printing these out and bringing them to my next tourney. Excited to see how it goes! How do I send you direct feedback?
P.S. Did you have something in mind for improving the postprocessing / trying out different iterations? Or was it just a challenge :D
One way to choose between two legal candidate moves would be to look forward for the next move by the candidate pieces and see which ones make sense given. If you are trying to choose between e6 and e5, for instance, look forward and see what the next e pawn move is. Plenty of other ways to go about this, of course.
Wouldn't other pieces affect this though? For example, what if the move was e6 and the next e-pawn move was e7. What if a piece was already there, Ne7 (wrongly recognized)? I thought about slowly running through it like this, but it felt like I kept running into problems which are obvious for us to recognize but I wasn't sure how to implement it computationally
11.3.b. During play, a player is forbidden to have a mobile phone and/or other device capable of
processing or transmitting chess analysis
in the playing venue. If it is evident that a player brought
such a device into the playing venue, he shall lose the game. The opponent shall win. The rules of a
competition may specify a different, less severe, penalty.
I'd also imagine that this rule's enforcement would be relaxed when, for instance, a player sets up a phone to record the game and has no access to that phone during the game, since any information the phone is recording (and any resulting processing for cheating) would be inaccessible to the user during the game.
I guess this may vary by country, but at least in the USA, phones have been banned in every "novice" tournament that I've participated in. Even books are off limits.
FIDE (and anything under FIDE rules) does certify some purpose built digital recording devices, they are hilariously expensive and hilariously crap but they exist.
The USCF certification requirements are here . This also includes a list of USCF certified electronic scoresheets.
I like ChessNoteR almost as much, and it's USCF-approved. Not FIDE-approved yet, but they're working on it.
This enables you to record and replace moves (including helping forecasting moves).
If everyone used these devices, then problem solved.
But I've only see someone using it once. Good chess players tend to already be good at visualizing past, present, and future positions.
I have wanted something like this for other data entry tasks like: tracking expenses or tracking body weight. I enjoy working with pen and paper much more than typing on a Phone or PC. Just give me a template I can print, let me write the data to it, and have it scanned.
Is anyone aware of a product (perferably open-source) that lets me do that?
Some of your screenshots include the +, is this accurate?
If you don't include the =Q you can't encode all games?
I suppose it's unlikely to happen in a game serious/slow enough that people are bothering to record it on paper and upload it, but I've tricked someone into stalemating me by promoting to a queen before. Long term I don't think assuming people made the best move is the right decision.
Normally at tournaments they would hand you a score sheet that doesn't have this crossword-like layout.
Unless I'm missing something
It is open sourced now if you or anyone would like to contribute.
or could the event organizers set up some overhead cameras
or make a smart board
and automate the entire thing that way?
Not at fast time controls, or with little time left.
"If a player has less than five minutes left on his clock at some stage in a period and does not have additional time of 30 seconds or more added with each move, then for the remainder of the period he is not obliged to [record moves]." http://www.fide.com/FIDE/handbook/LawsOfChess.pdf
And smart boards are expensive.