Skip to content

    Scoresheet scan accuracy, move by move

    We ran six scoresheets through the scanner, from a clean synthetic sheet to Fischer's 1970 scrawl, and publish every move: what the sheet says, what the scanner read, and where it went wrong. You won't find an overall percentage here: six sheets are too few for one.

    Tested 16 October 2026 · model gemini-3-flash-preview · one run per sheet · How we tested

    • Rivera – Okafor (fictional players)
    • Morphy – Duke of Brunswick and Count Isouard
    • J. Hund – Finkenzeller
    • Réti – Capablanca
    • Eisenberg – Capablanca
    • Fischer – Najdorf

    What the test shows

    • 181/204moves read right first time on 4 standard algebraic scoresheetsTwo synthetic sheets: 98 of 98. Two real handwritten ones: 83 of 106.
    • 43/45on a clean, real German scoresheet from 1973We found no published score of this game, so the model is unlikely to know it in advance.
    • 0moves invented on blank scoresheets2 of 2 blank forms were refused as having no moves on them.
    Descriptive notation (P-K4) is not supportedTwo sheets written that way are included below, so you can see what happens to them.

    Results by sheet

    Easiest first. Each sheet was read once, the way the app reads an upload. Open a comparison to see every move: what was played next to what the scanner read.

    KeyRead rightRead as another moveNot readRead, but not a move in the gameFlagged yellow (low confidence)First illegal move (marked red)
    Scoresheet photo: Rivera – Okafor (fictional players)
    Own work (ScanChess)Full image
    EasyEnglish algebraicSynthetic

    Rivera – Okafor (fictional players)

    ScanChess demo sheet · Ruy Lopez

    65/65moves read right · 100.0%

    Wrong
    0
    Not read
    0
    Extra
    0
    Flagged yellow
    0
    Marked illegal
    0

    Written in a handwriting font on a flat, evenly lit form: the easiest case there is. It is the same image as the demo on our home page.

    Ground truth: the move list the sheet was drawn from

    Compare every move
    Moves of Rivera – Okafor (fictional players): what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    1e4e4e5e5
    2Nf3Nf3Nc6Nc6
    3Bb5Bb5a6a6
    4Ba4Ba4Nf6Nf6
    5O-OO-OBe7Be7
    6Re1Re1b5b5
    7Bb3Bb3d6d6
    8c3c3O-OO-O
    9h3h3Nb8Nb8
    10d4d4Nbd7Nbd7
    11Nbd2Nbd2Bb7Bb7
    12Bc2Bc2Re8Re8
    13Nf1Nf1Bf8Bf8
    14Ng3Ng3g6g6
    15a4a4c5c5
    16d5d5c4c4
    17Bg5Bg5h6h6
    Moves of Rivera – Okafor (fictional players): what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    18Be3Be3Nc5Nc5
    19Qd2Qd2h5h5
    20Bg5Bg5Be7Be7
    21Rad1Rad1Qc7Qc7
    22Bf4Bf4Rf8Rf8
    23Nh2Nh2Nh7Nh7
    24Be3Be3Bf6Bf6
    25Nf3Nf3Bg7Bg7
    26Qc1Qc1Kh8Kh8
    27Bd2Bd2Nf6Nf6
    28Nh2Nh2Rae8Rae8
    29f4f4exf4exf4
    30Bxf4Bxf4Nfxe4Nfxe4
    31Nxe4Nxe4Nxe4Nxe4
    32Bxe4Bxe4Rxe4Rxe4
    33Rxe4Rxe4
    Scoresheet photo: Morphy – Duke of Brunswick and Count Isouard
    Own work (ScanChess)Full image
    EasyEnglish algebraicSynthetic

    Morphy – Duke of Brunswick and Count Isouard

    The Opera Game, Paris 1858, on a ScanChess demo sheet

    33/33moves read right · 100.0%

    Wrong
    0
    Not read
    0
    Extra
    0
    Flagged yellow
    0
    Marked illegal
    0

    A synthetic sheet photographed at an angle, with three planted traps: 7…Qe7 drawn to look like Qe1, 9…b5 drawn like “65”, and 14.Rd1 written after a struck-out Rd8. All three were read right, but this is one of the most published games ever, so the model may simply know it.

    Ground truth: chessgames.com

    Compare every move
    Moves of Morphy – Duke of Brunswick and Count Isouard: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    1e4e4e5e5
    2Nf3Nf3d6d6
    3d4d4Bg4Bg4
    4dxe5dxe5Bxf3Bxf3
    5Qxf3Qxf3dxe5dxe5
    6Bc4Bc4Nf6Nf6
    7Qb3Qb3Qe7Qe7
    8Nc3Nc3c6c6
    9Bg5Bg5b5b5
    Moves of Morphy – Duke of Brunswick and Count Isouard: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    10Nxb5Nxb5cxb5cxb5
    11Bxb5+Bxb5+Nbd7Nbd7
    12O-O-OO-O-ORd8Rd8
    13Rxd7Rxd7Rxd7Rxd7
    14Rd1Rd1Qe6Qe6
    15Bxd7+Bxd7+Nxd7Nxd7
    16Qb8+Qb8+Nxb8Nxb8
    17Rd8#Rd8#
    Scoresheet photo: J. Hund – Finkenzeller
    Photo: GFHund, Wikimedia Commons, CC BY-SA 4.0 · License · Resized; shared under the same licenseFull image
    MediumGerman algebraicReal handwriting

    J. Hund – Finkenzeller

    Berlin New Year's Eve tournament 1973, round 1

    43/45moves read right · 95.6%

    Wrong
    2
    Not read
    0
    Extra
    0
    Flagged yellow
    0
    Marked illegal
    1

    Clear, upright handwriting in German notation (S, L, T, D), photographed with a phone. Both mistakes are one misread: 17.Bb4 (written Lb4) was read as Bf4, so 17…Bxb4 became Bxf4. Neither was flagged yellow; the rules check marked the next move, 18.Qxb4, as illegal, one move after the misread.

    Ground truth: our transcription, checked by a second, independent one

    Compare every move
    Moves of J. Hund – Finkenzeller: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    1c4c4Nf6Nf6
    2Nc3Nc3c6c6
    3g3g3d5d5
    4cxd5cxd5cxd5cxd5
    5Bg2Bg2e6e6
    6d4d4Be7Be7
    7Nf3Nf3Nc6Nc6
    8O-OO-OO-OO-O
    9Bf4Bf4a6a6
    10Rc1Rc1b5b5
    11Nxb5Nxb5axb5axb5
    12Rxc6Rxc6Ne8Ne8
    Moves of J. Hund – Finkenzeller: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    13Qb3Qb3Bb7Bb7
    14Rc2Rc2Qb6Qb6
    15Rfc1Rfc1Bd6Bd6
    16Bd2Bd2Nf6Nf6
    17Bb4Bf4 (Read as another move)Bxb4Bxf4 (Read as another move)
    18Qxb4Qxb4 (First illegal move (marked red))Nd7Nd7
    19a3a3Rfc8Rfc8
    20Nd2Nd2Rxc2Rxc2
    21Rxc2Rxc2Ra4Ra4
    22Qe7Qe7Nf8Nf8
    23Rc7Rc7
    Scoresheet photo: Réti – Capablanca
    Score-sheet via Wikimedia Commons · Public domainFull image
    HardGerman algebraicReal handwriting

    Réti – Capablanca

    New York 1924, round 5

    40/61moves read right · 65.6%

    Wrong
    21
    Not read
    0
    Extra
    1
    Flagged yellow
    0
    Marked illegal
    1

    Fast, slanted handwriting on yellowed paper, with shorthand such as “ed” for exd4, in a low-resolution scan. The first 12 moves were read right; from move 13 the reads drift. Only one of the 22 mistakes was marked: 14.b5, read as Nb3, as the first illegal move. “Resigns” was also read as a move. A famous game, so the model may know it.

    Ground truth: chessgames.com

    Compare every move
    Moves of Réti – Capablanca: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    1Nf3Nf3Nf6Nf6
    2c4c4g6g6
    3b4b4Bg7Bg7
    4Bb2Bb2O-OO-O
    5g3g3b6b6
    6Bg2Bg2Bb7Bb7
    7O-OO-Od6d6
    8d3d3Nbd7Nbd7
    9Nbd2Nbd2e5e5
    10Qc2Qc2Re8Re8
    11Rfd1Rfd1a5a5
    12a3a3h6h6
    13Nf1Nf1c5Nf8 (Read as another move)
    14b5Nb3 (Read as another move, First illegal move (marked red))Nf8axb4 (Read as another move)
    15e3e3Qc7Qc7
    16d4d4Be4Be6 (Read as another move)
    Moves of Réti – Capablanca: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    17Qc3Nc3 (Read as another move)exd4c6 (Read as another move)
    18exd4cxd (Read as another move)N6d7Nfd7 (Read as another move)
    19Qd2Bd2 (Read as another move)cxd4fxd (Read as another move)
    20Bxd4Bxd4Qxc4Bxe7 (Read as another move)
    21Bxg7Bxg7Kxg7Kxg7
    22Qb2+Bd2+ (Read as another move)Kg8Kg8
    23Rxd6Rxa1 (Read as another move)Qc5Rxa1 (Read as another move)
    24Rad1Rad1Ra7Ra5 (Read as another move)
    25Ne3Ne1 (Read as another move)Qh5Qa5 (Read as another move)
    26Nd4Nd1 (Read as another move)Bxg2Bxg2
    27Kxg2Kxg2Qe5Qe5
    28Nc4Nc3 (Read as another move)Qc5f5 (Read as another move)
    29Nc6Nc6Rc7Ra7 (Read as another move)
    30Ne3Ne3Ne5Ne5
    31R1d5Rd1-d5—Resigns (Read, but not a move in the game)
    Scoresheet photo: Eisenberg – Capablanca
    Capablanca's score-sheet, Edward Winter collection, via Wikimedia Commons · Public domainFull image
    HardEnglish descriptiveReal handwritingNot supported

    Eisenberg – Capablanca

    New York (Rice Chess Club), 1909

    1/126moves read right · 0.8%

    Wrong
    70
    Not read
    55
    Extra
    0
    Flagged yellow
    2
    Marked illegal
    1

    Written in English descriptive notation (P-K4, Kt-KB3), which ScanChess does not support. The scanner copied the moves as written, and those cannot become PGN. The right half of the sheet, moves 36 to 63, was not read at all.

    Ground truth: Edward Winter, Chess Notes 4551

    Compare every move
    Moves of Eisenberg – Capablanca: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    1e4P-K4 (Read as another move, First illegal move (marked red))e5P-K4 (Read as another move)
    2Nf3Kt-KB3 (Read as another move)Nc6Kt-QB3 (Read as another move)
    3Bc4B-B4 (Read as another move)Nf6Kt-B3 (Read as another move)
    4Ng5Kt-Kt5 (Read as another move)d5P-Q4 (Read as another move)
    5exd5PxP (Read as another move)Na5Kt-R4 (Read as another move)
    6Bb5+B-Kt5+ (Read as another move)c6P-B3 (Read as another move)
    7dxc6PxP (Read as another move)bxc6PxP (Read as another move)
    8Be2B-K2 (Read as another move)h6P-KR3 (Read as another move)
    9Nf3Kt-B3 (Read as another move)e4P-K5 (Read as another move)
    10Ne5Kt-K5 (Read as another move)Qd4Q-Q5 (Read as another move)
    11f4P-KB4 (Read as another move)Bc5B-B4 (Read as another move)
    12Rf1R-B (Read as another move)Bb6B-KKt3 (Read as another move, Flagged yellow (low confidence))
    13c3P-B3 (Read as another move)Qd6Q-Q2 (Read as another move)
    14b4P-QKt4 (Read as another move)Nb7Kt-Kt2 (Read as another move)
    15Qa4Q-R4 (Read as another move)Bd7B-Q2 (Read as another move)
    16Na3Kt-R3 (Read as another move)O-OO-O
    17Nac4— (Not read)Qc7— (Not read)
    18Nxd7— (Not read)Nxd7— (Not read)
    19Qc2— (Not read)Rfe8— (Not read)
    20a4— (Not read)a5— (Not read)
    21Rb1— (Not read)Rad8— (Not read)
    22Qb3— (Not read)Ba7— (Not read)
    23Ba3— (Not read)axb4— (Not read)
    24cxb4— (Not read)c5— (Not read)
    25b5— (Not read)Na5— (Not read)
    26Nxa5— (Not read)Qxa5— (Not read)
    27Bb2— (Not read)Nb6— (Not read)
    28Qc3— (Not read)Qxc3— (Not read)
    29Bxc3— (Not read)Nxa4— (Not read)
    30Be5— (Not read)Bb8— (Not read)
    31b6— (Not read)Re6— (Not read)
    32Bc7— (Not read)Rf8— (Not read)
    Moves of Eisenberg – Capablanca: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    33Bd1— (Not read)Bxc7— (Not read)
    34bxc7— (Not read)Rb6— (Not read)
    35Ra1— (Not read)Nb2— (Not read)
    36Bg4— (Not read)Rc6— (Not read)
    37c8=Q— (Not read)Rfxc8— (Not read)
    38Bxc8— (Not read)Rxc8— (Not read)
    39Ke2— (Not read)Rd8— (Not read)
    40g3— (Not read)Kh7— (Not read)
    41f5— (Not read)Nc4— (Not read)
    42Ra2— (Not read)Rd5— (Not read)
    43g4— (Not read)Ne5— (Not read)
    44Rf4— (Not read)Nd3Kt(R3) B4 (Read as another move)
    45Rf1Q-B2 (Read as another move)Ne5KtxB (Read as another move)
    46Ra4KtxKt (Read as another move)c4Q-B2 (Read as another move)
    47h3KR-K (Read as another move)Nf3Q-QKt2 (Read as another move)
    48Rxc4P-QR4 (Read as another move)Rxd2+P-QR4 (Read as another move)
    49Ke3QR-Q (Read as another move)Rh2Q-Kt3 (Read as another move)
    50Rd1B-R2 (Read as another move)Ng5B-R3 (Read as another move)
    51Rd8PxP (Read as another move)Rxh3+PxP (Read as another move)
    52Ke2P-B4 (Read as another move)Rh2+P-Kt5 (Read as another move)
    53Ke3Kt-R4 (Read as another move)Rh3+KtxKt (Read as another move)
    54Kd2QxKt (Read as another move)g6B-Kt2 (Read as another move)
    55f6Kt-Kt3 (Read as another move)e3+Q-B3 (Read as another move)
    56Ke2QxQ (Read as another move)Ne6BxQ (Read as another move)
    57Rd7KtxP (Read as another move)g5R-K5 (Read as another move)
    58Rxf7+B-Kt5 (Read as another move)Kg6B-Kt6 (Read as another move)
    59Re7R-K3 (Read as another move)Kxf6B-B7 (Read as another move)
    60Rxe6+R-KB (Read as another move)Kxe6B-Q (Read as another move)
    61Re4+BxB (Read as another move)Kd5PxB (Read as another move)
    62Rxe3R-QR3 (Read as another move)Rxe3+Q-QR (Read as another move, Flagged yellow (low confidence))
    63Kxe3Kt-Kt7 (Read as another move)Ke5Resigns (Read as another move)
    Scoresheet photo: Fischer – Najdorf
    Score-sheet scan via Wikimedia Commons · Public domainPage 1Page 2
    HardEnglish descriptiveReal handwritingNot supported

    Fischer – Najdorf

    Siegen Olympiad 1970 · two pages

    2/96moves read right · 2.1%

    Wrong
    68
    Not read
    26
    Extra
    0
    Flagged yellow
    22
    Marked illegal
    1

    Fischer's fast, overlapping handwriting in descriptive notation, with ink showing through from the back of the page. Not supported. 22 of the wrong reads were flagged yellow, more than on any other sheet.

    Ground truth: chessgames.com

    Compare every move
    Moves of Fischer – Najdorf: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    1e4P-K4 (Read as another move, First illegal move (marked red))c5P-QB4 (Read as another move)
    2Nf3N-KB3 (Read as another move)e6P-Q3 (Read as another move)
    3d4P-Q4 (Read as another move)cxd4PxP (Read as another move)
    4Nxd4NxP (Read as another move)a6P-QR3 (Read as another move)
    5Bd3B-Q3 (Read as another move)Nf6N-KB3 (Read as another move)
    6O-OO-Od6— (Not read)
    7c4— (Not read)Bd7— (Not read)
    8Nc3— (Not read)Nc6— (Not read)
    9Be3— (Not read)Be7— (Not read)
    10h3— (Not read)Ne5— (Not read)
    11Be2— (Not read)Rc8P-K4 (Read as another move)
    12Qb3P-QB4 (Read as another move)Qc7B-K2 (Read as another move)
    13Rac1N-QB3 (Read as another move)O-OO-O
    14f4— (Not read)Nc6— (Not read)
    15Nf3— (Not read)Qb8— (Not read)
    16Qd1— (Not read)Be8— (Not read)
    17Qd2— (Not read)Na5— (Not read)
    18b3— (Not read)b6— (Not read)
    19Bd3— (Not read)Nc6— (Not read)
    20Qf2— (Not read)b5— (Not read)
    21Rfd1— (Not read)Nb4— (Not read)
    22Bf1B-K3 (Read as another move)bxc4B-K3 (Read as another move)
    23bxc4P-KR3 (Read as another move)a5N-R4 (Read as another move)
    24Nd4B-K2 (Read as another move)Qa8R-B1 (Read as another move)
    Moves of Fischer – Najdorf: what was played and what the scanner read
    Move numberWhiteBlack
    PlayedReadPlayedRead
    25Qf3Q-Q2 (Read as another move)Na6Q-B2 (Read as another move)
    26Ndb5P-B4 (Read as another move)Nc5Q-K1 (Read as another move, Flagged yellow (low confidence))
    27e5N-B3 (Read as another move)dxe5N-B3 (Read as another move)
    28Qxa8Q-B2 (Read as another move, Flagged yellow (low confidence))Rxa8N-R4 (Read as another move, Flagged yellow (low confidence))
    29fxe5B-Q3 (Read as another move)Nfe4P-N3 (Read as another move, Flagged yellow (low confidence))
    30Nd6P-R4 (Read as another move)Bc6P-N3 (Read as another move, Flagged yellow (low confidence))
    31Ncxe4P-R5 (Read as another move)Nxe4P-R4 (Read as another move, Flagged yellow (low confidence))
    32c5R-B1 (Read as another move)Ng3R-B1 (Read as another move)
    33Bc4P-QN3 (Read as another move, Flagged yellow (low confidence))h5B-Q2 (Read as another move)
    34Bf2B-N1 (Read as another move, Flagged yellow (low confidence))h4Q-N2 (Read as another move, Flagged yellow (low confidence))
    35Bxg3R-B2 (Read as another move, Flagged yellow (low confidence))hxg3PxP (Read as another move)
    36Bb5PxP (Read as another move)Bxb5Q-R1 (Read as another move, Flagged yellow (low confidence))
    37Nxb5B-B2 (Read as another move, Flagged yellow (low confidence))f6R-R2 (Read as another move)
    38Rd7Q-N2 (Read as another move, Flagged yellow (low confidence))Bd8B-B3 (Read as another move)
    39Rc3B-B1 (Read as another move, Flagged yellow (low confidence))fxe5B-N4 (Read as another move)
    40Rxg3PxB (Read as another move)Rf7B-B1 (Read as another move, Flagged yellow (low confidence))
    41Rxf7B-R3 (Read as another move)Kxf7PxP (Read as another move)
    42c6PxP (Read as another move)Bb6+R-R1 (Read as another move)
    43Kf1R-B1 (Read as another move)Kf8B-R3 (Read as another move, Flagged yellow (low confidence))
    44c7Q-B2 (Read as another move, Flagged yellow (low confidence))Rc8R-R3 (Read as another move, Flagged yellow (low confidence))
    45a4N-N2 (Read as another move, Flagged yellow (low confidence))e4R-K1 (Read as another move, Flagged yellow (low confidence))
    46Ke2B-N4 (Read as another move)e5B-B2 (Read as another move, Flagged yellow (low confidence))
    47Rg6B-Q5 (Read as another move)Bd4R-B4 (Read as another move)
    48h4B-N7 (Read as another move, Flagged yellow (low confidence))Bb2Resigns (Read as another move)

    Blank scoresheets

    A scanner that guesses would fill a blank form with plausible moves. We sent two blank forms, and both were refused.

    How we tested

    Date and model
    16 October 2026, with Google's gemini-3-flash-preview, a preview model, at the scanner's default settings. The results describe that version only.
    Code
    The production scanning code was called directly, with the same prompt, checks and notation handling as the live scanner, but outside the website: no credits were spent and nothing was stored.
    Images
    Prepared the way the web app prepares an upload: turned upright, longest edge at most 2000 pixels, saved as JPEG at quality 0.85. Each sheet was read once; the two Fischer pages went in together as one scan.
    Scoring
    Each read move was lined up with the game using a minimum-edit alignment. A move counts as right when it names the move actually played in that position, so Nxe5 for Ne5 counts and an ambiguous Nd7 does not. Moves copied in descriptive notation count as wrong, because they cannot become PGN.
    Flags
    Yellow means the model's confidence was below 0.85, the threshold the review screen uses. Red is the first move that turns out illegal when the game is replayed. These are the same rules the app applies.
    Ground truth
    Published game scores (chessgames.com, Edward Winter's Chess Notes) or, for the demo sheets, the move list they were drawn from. The 1973 Hund sheet has no published score: we transcribed it, then had it transcribed again independently, without sight of ours. The two matched on all 45 plies, and every move list replays legally.

    Download the results (JSON)Every ply with the model's confidence. Free to reuse under CC BY 4.0; the images keep their own licenses.

    What this test can't tell you

    1. 1.Only six sheets are scored, four of them real handwriting, and each was read once, so variation between runs is not measured.
    2. 2.The two perfect scores are synthetic sheets written in a handwriting font, not by a person.
    3. 3.Famous games may be in the model's training data. We found no published score of the 1973 Hund game, which makes it the best guide here to how real sheets are read.
    4. 4.The Hund ground truth is our own transcription, checked by an independent second one.
    5. 5.ScanChess does not support descriptive notation.
    6. 6.The model is a preview version, and these results describe it on 16 October 2026. We have not confirmed that the live scanner runs exactly this model configuration.
    7. 7.There is no comparison with other scanners.

    We'll add more handwritten samples. If you have a filled-in scoresheet of a known game that we may publish, write to support@scanchess.com

    Image credits and licenses

    Each sheet is shown as it was sent to the scanner, scaled down for this page.

    Try it on your own scoresheet

    Upload a photo, check each move against it, then export the PGN. New accounts get 10 free credits; a scoresheet scan costs 2.