SnapMyCards
← All guides

Bulk card scanning — getting many cards from one photo

Updated October 1, 2026

Almost every card scanner in this category is built around one card at a time: hold the card up, line it up in a frame, wait, next card. That works fine for the twenty cards you care about. It is a bad fit for the three thousand in a shoebox.

Bulk — or page — capture is the other approach: photograph a whole nine-pocket binder page or a laid-out grid, and pull every card out of the single frame. This guide covers when that actually works, with numbers from our own benchmark rather than a marketing percentage.

Why one photo of nine beats nine photos of one

The obvious win is time: one frame instead of nine, and no handling between cards. For a 2,000-card collection that's roughly 220 photos instead of 2,000 — an evening instead of a weekend.

The less obvious win is consistency. Every card in one frame shares the same lighting, the same camera distance, the same white balance and the same focus. Card-by-card capture reintroduces all four variables on every single card, which is why single-card runs tend to have a long tail of bad frames you have to go back and redo.

There's a measurable version of that claim in our end-to-end benchmark (ml/correctness.py, 192 cards scored on whether the stored card is the card that was photographed):

Capture mode Correct
Page capture 94 / 152 (62%)
Single-card capture 20 / 40 (50%)

Honest caveat on that table, because it would be easy to oversell: those are two different corpora, not the same cards shot two ways, and the single-card set is small (40 frames) and deliberately includes hard angled shots. We would not claim page capture is better by that margin as a law of nature. What we'll claim is the thing the number does support: page capture is not the compromise people assume it is. On our own measurements it is not worse than shooting cards one at a time, and it's an order of magnitude faster.

When bulk capture fails — the one rule that matters

Our detection benchmark (ml/eval.py) runs 50 photos containing 373 cards through the detector that is actually shipping (build 25222858). It found 344 of 373. The interesting part is where the misses are:

Layout Cards found
Flat, non-overlapping (binder pages, laid-out grids, dense rows) 311 / 313 (99%)
Fanned, piled, or overlapping 33 / 60 (55%)

Nearly all of it is cards covering each other. The corpus includes photos shot bright, shot dim, against busy backgrounds, with glare, at an angle and at depth — an 18-card dense frame comes back exact; the only flat frames that lose anything are bright_5 (4 of 5), tilted_7 (6 of 7).

Every photo in the benchmark that lost a card, worst first:

Benchmark photo Cards present Cards found
overlap_heavy_8 8 1
pile_15 15 8
fanned_10 10 5
test_pile_9 9 5
bright_5 5 4
overlap_light_6 6 5
overlap_two_2 2 1
test_fan_7 7 6
test_overlap_3 3 2
tilted_7 7 6

So the rule is simply: cards must not overlap. Not "should ideally not" — on this corpus overlap is where almost all the loss lives, and it is severe where it bites.

That makes a binder page the ideal input. The pockets enforce the gap for you.

A capture station that takes ten minutes to set up

None of this needs a lightbox or a copy stand.

The review step is not optional

Detection finding a card is not the same as the right card reaching your collection. Those are two different measurements and the gap between them is where the work is.

On the 192-card end-to-end benchmark, the pipeline reported confidence on 120 cards and 15 of those 120 were wrong — 12% of confident answers. A card that comes back "no match" costs you ten seconds to fix. A card that comes back confidently wrong gets filed under someone else's name with someone else's price, and you will never look at it again.

At bulk scale that asymmetry compounds: at 2,000 cards, a 12% confident-wrong rate on the confident subset is a meaningful number of permanently wrong rows. This is the entire reason bulk imports in SnapMyCards land in a review queue — a grid of what was found, with the photo beside the identification, that you confirm or correct before anything enters your collection. Items you reject stay recoverable rather than vanishing.

Reviewing is fast if you do it right: scan for identifications that look obviously wrong next to their photo — wrong player, wrong sport, wrong year — rather than reading every field. Misidentifications are mismatches, not typos, so they stand out.

Realistic throughput

For bulk commons in binder pages, with sorting already done:

Stage 2,000 cards
Page capture at 9/photo ~220 photos, roughly an evening
Identification runs while you keep shooting
Review and correction 2–4 hours — the real cost

Compare with 25–50 hours of manual entry. Also worth saying plainly: the review time scales with the collection and doesn't go away. Anyone quoting you a bulk workflow with no review stage is either hiding their error rate or hasn't measured it.

More on the full process in how to catalogue a large card collection.

FAQ

Can you scan a whole binder page of cards at once?

Yes. Page capture photographs the full nine-pocket page in one frame and extracts every card from it, instead of scanning cards one at a time. In our detection benchmark, flat binder-page and laid-out layouts returned 311 of 313 cards.

Is bulk scanning less accurate than scanning cards one at a time?

Not on our measurements. Our end-to-end benchmark scored page capture at 94 correct out of 152 and single-card capture at 20 out of 40. Those are different corpora rather than the same cards shot both ways, so we would not claim page capture is strictly better — but it is clearly not the accuracy compromise people assume, and it is far faster.

Why do some cards get missed in a bulk photo?

Overlap. In a 50-photo, 373-card benchmark, fanned, piled or overlapping layouts returned 33 of 60 cards, while flat layouts returned 311 of 313. Almost every miss is a card covered by another card; the only flat frames that lose anything are bright_5 (4 of 5), tilted_7 (6 of 7).

How many cards can be in one photo?

Our benchmark includes an 18-card frame that was detected exactly. The practical limit is resolution and layout rather than a fixed count: cards need to be flat, separated, and large enough in the frame for their edges to be clean.

Do I need to review bulk scan results?

Yes. On our benchmark the pipeline was confident on 120 cards and 15 of those were the wrong card. A wrong-but-confident row never gets re-checked, so bulk imports go through a review queue before entering the collection.

Try SnapMyCards — it runs in your browser