CoolFace
Datasetpublic

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.

sourceHugging Facecc-by-4.0updated 4mo agoView on Hugging Face
0likes19downloads
Dataset Card

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:

  1. 1.Weak signals fused into labels:
  2. 2.NuExtract3 `card_type` (BPL labelled sample): bibliographic→content, shelf_divider→divider, null→blank.
  3. 3.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.
  4. 4.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.
  5. 5.NLS `has_card` + bbox: crop content cards from pages.
  6. 6.Agreement → auto-accept; disagreement → routed to human.
  7. 7.Gold (test) split human-verified per collection (not auto-thresholded), so it measures generalisation rather than pipeline self-consistency.

Composition

collectionlabeltrainvalgoldtotal
bplblank2093730276
bplcontent1222130173
bpldivider326038
nlscontent2951549

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 transformers image classifier as a --skip-blank pre-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.