small-models-for-glam/index-card-blank-content
Index-card blank / content / divider classifier — dataset Cropped single archival index cards labelled blank, content, or divider, for training a tiny CPU pre-filter that skips blank/divider cards before expensive VLM metadata extraction in card-catalogue digitisation pipelines. Two collections: Boston Public Library (BPL) FRC shelf-list cards and National Library of Scotland (NLS) Advocates Library cards. Styles differ, so evaluate per collection. How it was made… See the full description on the dataset page: https://huggingface.co/datasets/small-models-for-glam/index-card-blank-content.
Index-card blank / content / divider classifier — dataset
Cropped single archival index cards labelled blank, content, or divider, for training a tiny CPU pre-filter that skips blank/divider cards before expensive VLM metadata extraction in card-catalogue digitisation pipelines.
Two collections: Boston Public Library (BPL) FRC shelf-list cards and National Library of Scotland (NLS) Advocates Library cards. Styles differ, so evaluate per collection.
How it was made (provenance)
AI-bootstrapped → agent-verified, no from-scratch hand labelling:
- Weak signals fused into labels:
- NuExtract3 `card_type` (BPL labelled sample): bibliographic→content, shelf_divider→divider, null→blank.
- Ink-density with punch-hole removal (connected-component analysis) — the cross-collection blank detector. Calibrated on the labelled sample: 100% blank recall / 96% content recall at threshold 0.005. Used to harvest extra blanks from unlabelled BPL shelf-list drawers.
- YOLO card-detector box-count (
NationalLibraryOfScotland/archival-index-card-detector) validated as an oracle: reliable on NLS (100% separation), noisy on BPL crops (31% of blanks falsely fire) → used as a primary signal for NLS, corroborating only for BPL. - NLS `has_card` + bbox: crop content cards from pages.
- Agreement → auto-accept; disagreement → routed to human.
- Gold (test) split human-verified per collection (not auto-thresholded), so it measures generalisation rather than pipeline self-consistency.
Composition
label_source records how each label was derived (auto:nuextract+ink, auto:ink-density, auto:has_card+box-count); signals is a JSON audit of the raw per-card signal values.
Intended use & limitations
- Use: train a tiny
transformersimage classifier as a--skip-blankpre-filter. - `divider` is captured but held out of the binary v1 model (fast-follow 3-class).
- NLS blank gap (v1): NLS contributes content cards only — no clean blank fronts exist in the source (NLS no-card examples are empty pages, a different visual domain, and the detector rejects blank fronts). So v1 reports NLS content precision/recall; NLS blank recall awaits a v2 harvest of NLS blank fronts.
- Punch-hole/smudge: blank cards carry a punch-hole and sometimes show-through smudges; these are deliberately included so the model learns a small dark blob ≠ content.
Use this for your own collection
Point an agent at your card images; bootstrap labels from whatever weak signals you have (a card detector, an existing VLM card_type field, an ink-density heuristic with punch-hole handling); auto-accept agreements and human-correct the rest; hold out a small verified gold set; then train a tiny classifier and add your rows tagged by source_collection. Full workflow: `data-centric-model-dev`.
Sources
- BPL FRC shelf-list cards — Internet Archive
bplfrcshelflistcards. davanstrien/bpl-shelf-list-nuextract3(NuExtract3 weak labels).NationalLibraryOfScotland/nls-index-cards-object-detection.- Detector:
NationalLibraryOfScotland/archival-index-card-detector.
