Repository navigation
Review/decisions 66 67 - #52
Merged
Merged
Conversation
added 2 commits
October 13, 2026 17:39
…sion #66 — point-labels-v1, bar-labels-v3 Told "Charts, round 3", the 846 chart points that print their value and still failed were read for why: 284 on pages whose bars the bar rule never found (lines, pies, charts drawn as images), 328 on pages whose bars it refused, 234 on pages whose table missed them, each reason small. Shown that each bar fix moved about a page, the owner chose "Build the line-chart rule"; shown the prototype at a third of the estimate, "Port what's measured"; shown the opendataloader-bench cost, "Ship, accept the trade". point-labels-v1 (new crate module lines.rs, docs/32 §9), under a new profile field table_detection.lines (office profiles: not-run-for-this-format): - A series is a stroked line of three points or more rising left to right, not level, or a run of three small marks of one colour and size; a line drawn over a series already read (through its marks, or itself drawn twice) is that series. - Each number goes to the one point it is set over, under or beside, over every series at once, and is no one's where another series' point stands nearly as near (1.5x and a third of a point). A year is never a value. A number set on a bar is the bar's. - A series keeps its numbers where six points in ten carry one and a point higher on the page never carries a smaller number; its categories are the first row of labels under the plot (one label under eight points in ten, at most half numbers but years). - Series sharing that row are one table, named by their legend swatches (a small mark or a short level stroke) or, alone, by the title over it; runs after bar-labels-v3 on runs no table holds, under the tracks rule's gate, kept only where it overlaps no table. The interpreter carries the stroke colour (G, RG, K, SC, SCN, reset by CS, saved by q) and records each stroked subpath's points and each small filled mark with its colour; only the line rule reads them, and every existing rectangle and segment reads as before. bar-labels-v2 -> -v3: the title over a chart names the one series that prints numbers, whatever else is drawn beside it (a progress bar's track). The bar rule's table builder is shared, its id a parameter. profile_sha256 3e5e6b07... -> 3976f966.... Tests: ten for the line rule (a table; order and cover guards; two lines with a legend; a number as near two lines is neither's; a line through its marks; years at points; numbers on bars; a line turning back or level; a number beside its point; a line drawn twice and a numeric row under the plot), two for the interpreter (stroked lines with their colour; small filled marks), one for bar-labels-v3. Nineteen mutations over the rule's clauses, the interpreter's capture and -v3's title are killed; a twentieth showed an explicit dedupe of identical lines redundant with the already-read check, and it was removed (tables identical on 1,226 pages). Measured: ParseBench charts 0.1184 -> 0.1248, 7 pages up and none down (She-figures p88 and E-Government_Survey p78 0 -> 1.0); tables, content, formatting and visual grounding unchanged on every page; overall 46.29 -> 46.42. Seventeen line tables, none on a table or text page; the gate documents' tables unchanged; every cell its runs' text. The trade: opendataloader-bench 01030000000078's line reads right as a table, and its ground truth's loose labels move that document's NID 0.8786 -> 0.8099 and TEDS 0.8667 -> 0.7086 (bench NID 0.8841 -> 0.8838, TEDS 0.5339 -> 0.5301), as decision #42's bar tables did. Not used: rounded bars, panels merged across a shared category axis, a series named by a label set on its line. Signed-off-by: docushell-dev <hello@docushell.com>
…its words where the page set them apart, decision #67 — line-units-v5 Told "Grounding: text, round 2", the Text elements ParseBench's visual grounding could not place were counted by how our items sit on them: split across several of ours 811 (0.051 of the score), nothing of ours over them 520 (0.032: pages drawn as images, figure regions, panels read as ruled tables), one item of ours far bigger 483 (0.023), ours covering under half 182 (0.015). The largest split was a page the reading order did not divide: a line was every run on its baseline across the page, read where its first run was, so a newspaper paragraph sharing its baselines with a byline in the next column was read where the byline was and fell into five units. line-units-v5 (units::lines_read, units::spaced): - Each line is cut into its pieces before any unit is read, and a line as the units read it is the pieces of one line that follow each other in reading order: a baseline the reading order reads in two places is two lines, each read where it is read. - The text the list-marker clause and the first word are read from has a space wherever two runs' boxes stand a tenth of the line's height apart or more (SPACE_GAP_TENTHS): a page that sets its words by moving its pen draws no space, so a bullet set apart that way opened no list item, and the hard-break cut read a line's whole width as its first word. Profile: layout_unit_rule line-units-v4 -> -v5, so profile_sha256 moves (sha256:3976f966... -> sha256:e0ffb37d...), and LAYOUT_UNIT_RULE_V5 is exported. Tests: two unit tests (a line read in two places is two lines and its paragraph one unit; a gap of a tenth of the line high reads as a space, the boundary, an unboxed run, no height, and the first word it gives), and one end to end on four pages built in the test that the reading order does not divide (a paragraph beside a byline drawn first is one unit; beside a bulleted aside drawn first it is one unit and each bullet an item; bullets set apart by position each open an item; a contents list set word by word is cut before the entry whose first word fits twice). Ten mutations -- one line for all, every piece a line, a baseline read whole as -v4 read it, a read line boxed over its whole baseline, the marker and the first word read as written, a tenth exactly read as no space, spaces read on a line with no height, the gap read from the first box, a quarter for a tenth -- all killed; the boxed-over-baseline one survived the first three pages, the short-line and hard-break cuts covering for it there, until the aside's was added. Measured on ParseBench, with the shipped build: visual grounding 0.5435 -> 0.5575, 119 pages up and 8 down; content one page up by 0.0003; tables, charts and formatting unchanged on every page; overall 46.42 -> 46.70. opendataloader-bench, the fabrication check and the gate documents' tables cell for cell unchanged. The trade, taken by the owner: the across-columns line gave each unit a far right edge, and that edge cut some units by accident -- a contents list's entries (Marico_Annual_Report_FY24 p4, twice in the set), a paragraph's last line, a label's -- which now join; basf p17's ground truth keeps a bullet list as one block, now a unit per bullet; one chart's labels join the text beside it, so its picture holds none. Measured and not used: the lines alone (0.5546, 109 up and 12 down); with the bullets but the first word as written (0.5561); the space at a quarter of the line's height (0.5564) and at a twentieth (0.5577, 2 up and 2 down against a tenth, so the tenth stands). Signed-off-by: docushell-dev <hello@docushell.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.