Daniel van Strien

@danielvanstrien.bsky.social

Machine Learning Librarian at @hf.co

A film catalogue tells you what a film is about, not what happens inside it. So: 1,864 public-domain Prelinger films, described every ~60 seconds by an open 2B video model. 23,148 searchable moments. Search "typing on a computer keyboard", land on the second it happens.

Bild

If libraries, archives and museums pooled their (labelled) data, they could build state-of-the-art open models for the things they actually care about! I tried a small version: one open model (NuExtract-3, 4B) fine-tuned to read archival index cards across several collections.

BildBild

Say, for example, if we had 3 examples of labeled city directory data from every state in the US, we could easily train a generic city directory parser! (I’m actually working on this, and I’ll have it done relatively soon, but @danielvanstrien.bsky.social’s point holds in so many other cases!)

Daniel van Strien@danielvanstrien.bsky.social · last mo.

If libraries, archives and museums pooled their (labelled) data, they could build state-of-the-art open models for the things they actually care about! I tried a small version: one open model (NuExtract-3, 4B) fine-tuned to read archival index cards across several collections.

If libraries, archives and museums pooled their (labelled) data, they could build state-of-the-art open models for the things they actually care about! I tried a small version: one open model (NuExtract-3, 4B) fine-tuned to read archival index cards across several collections.

BildBild

Ran the same 650M model across 7 languages: German, Polish, Finnish, Russian, Serbian, Estonian, Swedish via @europeana.bsky.social newspapers. Still some challenging layouts, but pretty mind-blowing to me that a 650M model is doing this when a year ago 72B VLMs failed very often.

Daniel van Strien@danielvanstrien.bsky.social · last mo.

I think VLM-based OCR might finally be close to working on historic newspapers! Many models I've tried before failed i.e. hallucinations, repetition loops, context overflow. Surya OCR 2 (a 650M model!) does a very good job!

A 1901 newspaper page overlaid with Surya OCR 2's detected layout: colored boxes around each block (text, section-header, picture) and numbered dots joined by a path showing the model's reading order across the columns.

I think VLM-based OCR might finally be close to working on historic newspapers! Many models I've tried before failed i.e. hallucinations, repetition loops, context overflow. Surya OCR 2 (a 650M model!) does a very good job!

A 1901 newspaper page overlaid with Surya OCR 2's detected layout: colored boxes around each block (text, section-header, picture) and numbered dots joined by a path showing the model's reading order across the columns.

Can the new DiffusionGemma model help fix broken OCR? In theory, denoising tokens in parallel could work better for OCR correction since context is seen upfront? Pointed it at 19th-century newspaper OCR. It corrected better than the autoregressive baseline — at ~8x the speed.

Can the new DiffusionGemma model help fix broken OCR? In theory, denoising tokens in parallel could work better for OCR correction since context is seen upfront? Pointed it at 19th-century newspaper OCR. It corrected better than the autoregressive baseline — at ~8x the speed.

NuExtract3 (4B, Apache-2.0) does OCR *and* structured extraction. Point it at a dataset of scanned index cards + a JSON schema → clean catalog JSON One command on huggingface Jobs. (or skip the schema for plain Markdown OCR) Script + dataset 👇

A worked example of NuExtract3 turning a document image into structured data. Top: a terminal command — hf jobs uv run --image vllm/vllm-openai nuextract3.py index-cards cards-json --template schema.json. Middle (input): a scanned typewritten library index card reading "ABAD (Joseph), Captain, Spanish Army, letter of (1783), 5538, f.11." Bottom (output): the JSON extracted from the card — image_type "index_card", heading "Abad J.", heading_type "person", epithet "Captain, Spanish Army", and one entry with ms_no "5538", folios ["f.11"], description "letter of (1783)".