SightRead logo SightRead Leaderboard

Can a vision-language model read the board at first sight? Exact game-state extraction from screenshots — every seat, tile and piece, scored field-by-field. Not play; see.

Leaderboard

Games: Mahjong

Mahjong pack v0.1 — 5 models × 6 screenshots × 83 calls

#ModelField acc (mean±sd)F1PerfectGrounding failsFlip rateLatency$/callCalls
1qwen3.8-27b89.4% ± 7.3%90.3%2110%246s$0.03518/18
2qwen3.8-27b-local-base-q5_k_m free GPU84.8% ± 9.6%95.2%007%359s$0.0009/11
3glm-5.3-flash74.7% ± 13.8%85.1%1017%219s$0.00818/18
4deepseek-v4-flash-vision-exp70.5% ± 10.5%59.4%0522%39s$0.00318/18
5glm-5v-turbo66.4% ± 15.5%62.6%0511%46s$0.01318/18

Hardest fields (pooled)

hand25.9%
dora_indicator40.7%
dora_value42.0%
seat_right_wind48.1%
seat_top_wind48.1%
seat_left_wind51.9%
disc_left54.3%
seat_me_wind56.8%
disc_top63.0%
disc_right80.2%
call_top84.0%
tiles_left93.8%
room93.8%
seat_top_points96.3%
seat_me_points100.0%
seat_right_points100.0%
seat_left_points100.0%
round_wind100.0%
round_num100.0%
call_me100.0%
call_right100.0%
call_left100.0%

Exact-match rate per field over all models; red bars are fields no model reads reliably.

Notes on Mahjong

The bottom of mahjong's chart is the research: seat winds flip between runs while seat points score ~100% — models read numbers fine but fail at spatial rotation (which badge belongs to which seat). Populated discard piles are unsolved for every model.

What makes this different

Grounding fails = the model echoed the example state embedded in the prompt (which matches NO screenshot) instead of reading the image — a per-model honesty signal.

Flip rate = share of model/image/field answers that changed between identical runs: pure instability, rarely measured anywhere.

About the numbers

Costs are historical per-call averages from the original run. No models were re-run to build this page. A free local model holds the best hand-reading score (F1 95.2%).

Field accuracy is exact match per field, averaged over states and runs (± population sd). Raw model outputs are never published — only aggregates.