Prior tests used hard photos. This one hands the models the easy case — neat
shelves, sharp pictures — and asks whether the tiers still separate.
A small experiment, shared to show the method. Six shelves, six reading
conditions, one call each. Treat the directions as real and the decimals as indicative — not a
verdict on any model.
Earlier in this arc we learned that on hard inputs the photograph matters more
than the model, and that an OCR pre-step is dead weight for a capable reader. So we removed the
difficulty. These six frames are well-organized and shot straight-on. The question: on the
best case, how well do the best models read a shelf — and do the tiers converge? The
hypothesis, stated up front: they cluster near-perfect, and the only real signal left is the
small residual — a mis-bound author, a rare invented book, a title dropped off a flat stack.
01How the test was kept honest
This test grades Claude models among others, so the ground truth could not be model-produced.
Bharat verified the books on each physical shelf by hand; the answer keys are human. The running
assistant only standardized the photos, called the APIs, and scored the outputs — it never
identified a book itself. Every model call was stateless, temperature 0, prompt caching off,
one call per condition per image, same minimal prompt throughout. Scoring is a deterministic fuzzy
string match — no model judges another model. Photos were standardized to 2000 px
long-edge before any run.
02Six reading conditions
Only the model and the path vary. Four read
the photo directly; two read PaddleOCR text instead, to isolate the OCR effect on a strong reader and
a weak one.
Opus 4.8
reads the photo
Sonnet 5
reads the photo
GPT-5.6
reads the photo
Qwen3-VL
reads the photo
OCR→Sonnet
reads OCR text
OCR→Qwen7B
reads OCR text
03Read it yourself — every engine on every shelf
Rows are the six shelves (with the human-validated book count); columns are the six engines. Each
cell shows books found of the total, tinted by how well it did. Gray −N = books
missed; +N = a book fabricated (a real-sounding title not on the shelf); ?N = a spine the model honestly flagged as unreadable, kept separate from invention. Click any cell to see the exact titles it missed or
made up; click a shelf to jump to its photo.
read it allmissed a fewmissed a lot−N missed+N fabricated?N couldn’t read
Click a cell to see the books that engine missed or made up on that shelf.
04The six shelves
Presentation varies on purpose — upright spines read sideways, flat stacks read
left-to-right, and one frame spans two shelves. Some frames overlap (two shots of one shelf; one
frame containing another), noted in each caption so books aren't double-counted.
54t-k1-1 · mixed · 30 books · same physical shelf as k1-2, re-shot54t-k1-2 · upright · 30 books · same physical shelf as k1-1, everything stood up54t-k2 · upright · 29 books · same books as the TOP shelf in k2-k354t-k3 · flat stacks · 24 books · same books as the BOTTOM shelf in k2-k354t-k2-k3 · spans two shelves · 53 books · top half duplicates k2; bottom half duplicates k354t-k4 · flat stacks · 16 books · standalone shelf
05What the numbers say
Aggregate across all six shelves (182 human-verified books). Latency is per image.
Condition
Recall
Precision
Author
Garble
Made up
Couldn’t read
Cost (6)
Latency
Opus 4.8
98%
99%
92%
0
1
2
$0.250
14s
Sonnet 5
97%
99%
87%
0
1
3
$0.102
13s
GPT-5.6
96%
97%
91%
2
3
5
$0.757
96s
Qwen3-VL
93%
97%
85%
3
3
0
$0.011
47s
OCR→Sonnet
91%
96%
78%
1
6
12
$1.209
175s
OCR→Qwen7B
23%
72%
24%
2
14
0
$0.003
7s
Recall = of the real books, how many were found. Precision = of
the books it actually claimed, how many were real — an honest “couldn’t-read” flag is an abstention, not a claim, so it no longer counts against precision. Garble = a distorted version of a real title; Made up = an
invented book unlike anything on the shelf — the trust signal. Couldn’t read = a spine the model flagged as unreadable rather than guess — split out from made-up, because honest uncertainty is not fabrication.
06What we found
The tiers converge. The four capable direct readers all land at
93–98% recall and 97–99% precision.
On a clean shelf the gap between the best closed model and an open-weight one is a handful of books,
not a tier. The hypothesis holds.
Opus wins, narrowly; Sonnet is the value pick among closed models. Opus:
98% recall, 99% precision, best author accuracy,
zero garbles, and no true invention (its lone made-up title is the subtitle of a book that is on the shelf). Sonnet matches it within a book or two at under half the cost and the lowest latency.
The open-weight model is the cost story. Qwen3-VL-235B reads at
93% recall / 97% precision with only
3 invented books across all six shelves — for
$0.011 total, a fraction of the closed models.
The residual is dropped books, and they cluster — not random inventions. With
recall saturated, the errors that remain are misses, and the same few recur across engines
(see §06). Genuine inventions are rare and idiosyncratic — no book was made up by more
than one capable model, so fabrication is not a shared, systematic failure. Once honest “can’t-read” reports are split out (§07), the true-invention counts fall further: Opus and Sonnet one each — and Opus’s is a subtitle of a book actually on the shelf.
GPT-5.6 reads as well but trusts itself more and is slow. Same recall band, but more
garbles + inventions than Opus (incl. genuine ones like Tehran), ~7× Sonnet's latency,
and the priciest direct arm.
OCR is worse than dead weight — it makes a good model fabricate. Feeding OCR text
to Sonnet dropped recall (97→91%) and
multiplied its genuine fabrications 1→6 (the raw made-up count jumps 4→18, but most of that is the model honestly refusing to name garbled OCR text) at ~12×
the cost and 13× the latency of just looking at the photo. And it didn't rescue the weak
reader — OCR→Qwen-7B collapsed to 23% recall.
07Patterns in the errors
With so few mistakes left, the interesting question is whether they are random or structured. Two
clear patterns:
No book was universally invented
Across the four capable readers there is no shared fabrication — where a model invents,
it invents something different from every other model. That is reassuring: the failure isn't a
common blind spot that fools everyone the same way; it's occasional, model-specific noise.
But there is a universally-missed cluster — all on one frame
Three books were each missed by three of the four readers: Reykjavik, Hungry:
Mystic Poetry for the Modern Soul, and Steve Kerr — and all three sit on the same
photo, the two-shelf frame k2-k3. When the models fail together, they fail in the same place.
Splitting honesty from invention re-sorts the models by trust
Separating “couldn’t-read” flags from true fabrications splits the models by
temperament. Opus and Sonnet mostly flag an unreadable spine as unknown rather than
guess — candor, not error. Qwen3-VL never hedges: it carries zero unknowns, so all three
of its made-ups are genuine inventions. GPT-5.6 sits between — real inventions like
Tehran alongside blank placeholders. The raw made-up column hid this; the split surfaces it.
When a model reports a book that isn’t on the shelf — did it invent one, or honestly admit it couldn’t read the spine?
fabricated — a genuine invention (the trust signal)couldn’t read — honestly flagged as unknown
Bar length is every book an engine added that isn’t on the shelf. Read the red alone and the trust story is stark: the careful readers barely fabricate (Opus and Sonnet one each), while Qwen3-VL and OCR→Qwen-7B never hedge — they carry no tan at all, so every addition is a genuine invention. The dashed line separates the four photo readers from the two OCR arms.
08The two-shelf frame: where the noise came in
One frame, k2-k3, accounts for most of the residual error — and it turns out to be a
natural controlled experiment. It is a single photograph spanning two shelves, so its 53 books
are the same physical books also shot as tight, single-shelf frames (k2 and k3). Same books, same
models — only the framing differs.
On the tight single-shelf shots the capable models were near-perfect (Opus 29/29 on k2, 24/24 on
k3). On the wide combined frame Opus dropped to 50/53 — and the books it lost, Reykjavik,
Hungry, and Steve Kerr, are exactly the ones it had read correctly moments earlier on
the tighter shots. It isn't the books; it's the frame.
The mechanism — resolution per spine
Every frame is standardized to the same 2000 px, but the combined frame packs two shelves into
that budget — roughly half the pixels per spine. The books that fall out are the ones
with the least legibility margin to begin with: thin poetry / travel spines (Reykjavik,
Hungry) and name-as-title biographies (Steve Kerr — the spine is just his
name, easy to read as an author and drop). Density pushes the already-marginal cases over the edge.
Sonnet is the exception — it held those spines even on the wide frame (52/53), the most robust
to the resolution drop.
The practical rule: one shelf per photo. Cramming two shelves into a frame to save shots is
a false economy — it silently drops the hardest-to-read spines, and nothing in the output tells
you which. Shoot tight; the models are near-perfect when you do.
09Caveats
Six shelves, one library. Directions, not decimals. A larger, more varied set would
tighten every number here.
One prompt, one temperature. A different prompt could move any single model; the prompt
was held identical so the comparison is fair, not tuned.
Fuzzy scoring has edges. After a manual audit two artifacts were fixed (author-in-title
matching; crediting a model that reads a spine the human marked unreadable). The garble-vs-invention
split is still a deterministic threshold, not a human read of every miss. The made-up column is now hand-split into genuine fabrications and honest “unreadable” flags; precision is now computed against genuine claims only — an honest “unreadable” flag is an abstention, not a false positive. That lifts OCR→Sonnet 90→96% and Opus/Sonnet to 99%; the never-hedging engines (Qwen3-VL, OCR→Qwen-7B) are unchanged. Recall and garble counts are untouched.
Prices and models drift. The cost ordering is the durable finding; the exact dollars are a
snapshot.