Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MIB Portfolio — Shared-Substrate Portfolio with a Learned Referee

Solution for the 8090 MIB Doc Challenge: three complementary open-source pipelines (see ATTRIBUTION.md) run over one shared render/OCR substrate; a frozen learned referee merges their full evidence — votes, confidences, decision paths, field candidates, injection and completeness signals — and decides by expected value under the official scoring asymmetry.

Results

  • Train, 5-fold cross-validated (all learned components out-of-fold): 142.59 / 150
  • One-shot sealed 200-case holdout (pre-registered, spent once): 142.15 / 150 (CV→holdout gap 0.44)
  • Runtime at contest limits (4 vCPU / 8 GiB, --network none, official Docker contract): 3.70 s/PDF average (budget 6.0), byte-identical across repeated runs
  • No network, no LLMs/VLMs, no cloud APIs at runtime; all deps version-pinned

How it works

  1. Substrate (once per PDF): 300-DPI grayscale render, a 13-configuration Tesseract union, visible/hidden glyph classification over the text layer (white-ink / tiny-font / off-crop detection), and CropBox→MediaBox widening. OCR is lazy behind a text-layer length gate.
  2. Three vendored pipelines (adapted at their I/O seams only, decision logic unmodified): @thegoleffect, @tylergibbs1, and @zubalr — including zubalr's two-phase corpus aggregation, preserved by the adapter.
  3. Note evidence: an original dual-pass adjudicator-note reader plus two damage-specialist probes. A corroborated note finding is guardrail-grade and locks the decision (277/277 on train); a disqualifying-flag consensus of ≥3 pipelines locks DENIED (58/58).
  4. Referee (frozen artifacts in artifacts/): anchor-relative backoff posterior tables give a base posterior; decisions maximize expected value under the +8/+2/−4 asymmetry. Three gated heads sit on top (decision, confidence, field-level candidates), each adopted only where nested out-of-fold evaluation showed non-negative payoff.

Full details, failure modes, and honest-numbers discussion are in the submission memo (submissions/speculator19/MEMO.md in the challenge PR).

Run

docker build -t mib-submission .
mkdir -p /tmp/out
docker run --rm --cpus=4 --memory=8g --network none \
  -v /path/to/pdfs:/input:ro -v /tmp/out:/output \
  mib-submission /input /output/predictions.jsonl

Repo layout

  • engine/ — substrate, pipeline adapters, note reader, referee runtime, entrypoint (predict.py); vendored pipeline sources under engine/deps_*/ with licenses preserved
  • artifacts/ — frozen learned artifacts: referee.json (posterior tables, gates, per-field strategies) and models.joblib (gated heads); aggregate statistics only, no per-case data
  • run.sh — the two-argument contract entrypoint
  • ATTRIBUTION.md — exact provenance and local patches for every vendored component

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages