Commit a5e83de
committed
Keep marker rows off oversized neighbouring lines: 42 passes, 20/21
Correcting poster 42's annotation (posters-science-extraction-api
21d238d) made it winnable for the first time and exposed a real
reading-order bug its impossible ground truth had been masking. Three
causes, all in how a stranded marker row finds its way home.
Baseline clustering is greedy: a char joins the first cluster within
tolerance, not the nearest. 42's banner sets its title at 96pt and its
byline markers at 26pt on a baseline 18pt below the title's and 15pt
above the byline's, so the title captured the markers first and
_cluster_lines emitted "& Analysis of Poten1,2tial Hum2an Ca1rcinogens".
Chars whose sizes are too far apart (LINE_SIZE_RATIO, sweepable) are no
longer put on the same line; a row split off this way is offered back to
its real host by _merge_superscript_rows, which already verifies the row
annotates it. This also recovers 5128504's fields (rField +0.101), which
had a 13.9pt fragment fused into a 72pt heading.
_chars_to_word_lines then undid the repair: it gave each word to the
first line whose box enclosed it, and a 96pt title's box is tall enough
to enclose a 26pt row printed below it. Words now go to the line whose
baseline they share, which is what makes a line a line.
Finally the corrector could not find the byline at all: it searched for
"O'Neill" while the poster prints "O’Neill", so _banner_region anchored
on the References citation instead. Curly quotes normalize to straight,
and normalization now happens before the byline is located rather than
only before it is parsed.
42 LOGIC-GAP to PASS. Board: 20/21 acceptable, 12/13 numbered
end-to-end, and 13/13 corrector-logic OK - with correct ground truth the
corrector's logic is right on every numbered poster in the corpus.
Corpus rField 0.729 to 0.735, w 0.976, rGlobal 0.835, suite green (260
passed). Every affiliation string in the corpus verified verbatim; the
only change is 42 going from nothing to correct.
One deliberate trade: 10890106 loses 0.011 rGlobal while every one of
its twelve fields is identical to the byte and it still passes, so the
shift is in text belonging to no field. rField is the headline and
rGlobal is explicitly not to be chased.
Remaining: 8228476 (RTL, approach D).1 parent e492a9c commit a5e83de
4 files changed
Lines changed: 1306 additions & 32 deletions
0 commit comments