Skip to content

Submission: henrybrewer00-dotcom - #86

Open
henrybrewer00-dotcom wants to merge 3 commits into
8090-inc:mainfrom
henrybrewer00-dotcom:submission/henrybrewer00-dotcom
Open

Submission: henrybrewer00-dotcom#86
henrybrewer00-dotcom wants to merge 3 commits into
8090-inc:mainfrom
henrybrewer00-dotcom:submission/henrybrewer00-dotcom

Conversation

@henrybrewer00-dotcom

Copy link
Copy Markdown

Offline, CPU-only document adjudication pipeline. No LLM, no network, no GPU.

Solution repository: https://github.com/henrybrewer00-dotcom/mib-doc-solution (public, includes Dockerfile and MIT LICENSE at root)

Scores

scripts/evaluate.py over data/train through the Docker contract: 143.49 / 150 — extraction 45.27, classification 79.04, calibration 19.19, 0 catastrophic false approvals, 0 missing cases.

That number is in-sample: the adjudicator was fitted on those labels. The honest forecast is 130.10 / 150 out-of-fold, 5-fold with a full refit per fold across seeds 0-3, at 22 catastrophic false approvals per 1,000.

Approach

Visibility is decided by rendering rather than parsing: a span is evidence only if a human looking at the page would see marks there. Hidden text, out-of-crop text and barcode payloads never supply a field value, and their presence is not used as a feature either. Two OCR engines resolve raster pages; a precedence chain resolves conflicts; a three-member calibrated ensemble produces the posterior, and an expected-value rule turns it into a decision against the published payoff matrix.

Where the ceiling is

Of the 4.73 extraction points lost, none is a parsing bug — 3.38 are in no text layer and 1.39 exist only in hidden answer-key text, which EVALUATION.md marks unrecoverable. Fed perfect fields the same adjudicator scores 77.77/80 against 67.79 on fields actually read, so classification is extraction-limited rather than model-limited. MEMO.md records every improvement attempt including the ~25 that measured null or negative, and the four train/serve bugs found and fixed along the way.

henrybrewer00-dotcom and others added 3 commits August 3, 2026 23:24
Offline, CPU-only document adjudication pipeline. No LLM, no network, no GPU.

evaluate.py on data/train: 143.49/150 (extraction 45.27, classification 79.04,
calibration 19.19, zero catastrophic false approvals). That figure is in-sample.
Out-of-fold with a full refit per fold: 130.10/150.

Solution repo: https://github.com/henrybrewer00-dotcom/mib-doc-solution
Measured at the end: 28 of 40 scan pages carry per-row horizontal displacement
with a median 54 px spread. Undoing it via the printed page border recovers
true field values OCR could not read (25 -> 27 across 18 pages, none made
worse). It explains why four separate resolution-axis fixes measured -50,
+0.09, -3 and -0.53.

Documentation only -- no code, predictions or artifact change.
Two further runs of the de-shift lab moved the BASELINE (25, 25, 22), which it
should not, since no repair is applied to it. The lab picks the page to measure
using the estimator, so changing the estimator changes the page set. Each run
is a valid paired comparison on its own pages; the three are not comparable.

What is left is two pages out of eighteen, and one page regressed in a run made
after the +2 claim was written, so 'no page made worse' was wrong. The
displacement itself is still real and large. The recovery is not resolved at
this sample size, and the +0.3 extraction / +0.9 total projection is withdrawn.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants