Skip to content

Release: round-13 tail (4 features, v171-v174)#388

Merged
JE-Chen merged 8 commits into
mainfrom
dev
Jun 23, 2026
Merged

Release: round-13 tail (4 features, v171-v174)#388
JE-Chen merged 8 commits into
mainfrom
dev

Conversation

@JE-Chen

@JE-Chen JE-Chen commented Jun 23, 2026

Copy link
Copy Markdown
Member

Release — round-13 tail (vision precision + grounding + layout)

Ships 4 net-new features (#384#387, docs v171–v174) to main, all merged to dev CI-green (SonarCloud + Codacy issues=0 + Actions matrices + Docker headless). Each ships the full 5-layer surface + headless test + EN/Zh docs + changelog.

  • subpixel_match (v171) — sub-pixel template-match refinement (quadratic peak fit on the score map) for drag / slider / high-DPI precision.
  • grounding_consensus (v172) — self-consistency over multiple grounding proposals (cluster points / vote elements) with an agreement score.
  • reading_flow (v173) — column-aware reading order via recursive XY-cut (flow_order sits beside, not shadows, reading_order).
  • text_blocks (v174) — paragraph & bullet/ordinal-list grouping of OCR lines.

Merge with --merge (no branch delete; dev stays the working branch).

JE-Chen added 8 commits June 24, 2026 05:11
Every matcher returns integer coordinates from cv2.minMaxLoc; for a drag
handle, fine slider or high-DPI display that rounding is the dominant
click-placement error. Fit a parabola to the 3x3 score neighbourhood around the
peak (independently on x/y) and return a float cx/cy. Reuses
visual_match._score_map.
…ch-batch

Add subpixel_match: sub-pixel template-match refinement
A target can be grounded several ways at once (set-of-marks / OCR / template /
a11y / N model samples) and they don't always agree. ab_locator/element_scoring
rank strategies by history; snap_to_element snaps a single coordinate - neither
fuses simultaneous proposals. Cluster candidate points (or vote candidate
elements), return the agreed point + agreement fraction + spread, and flag
low-agreement targets so the agent zooms/asks instead of clicking blind.
…nsensus-batch

Add grounding_consensus: self-consistency over grounding proposals
element_parse.reading_order is a flat top-to-bottom sort that interleaves
columns on multi-column pages (A1, B1, A2, B2). Recover the correct order with
recursive XY-cut: split at the widest whitespace valley (vertical -> columns,
horizontal -> rows), so a two-column page reads A1, A2, B1, B2. flow_order
returns the same index-tagged contract as reading_order (a drop-in column-aware
upgrade, named to not shadow it).
…-batch

Add reading_flow: column-aware reading order via XY-cut
text_regions merges glyphs into lines but nothing grouped those lines into
paragraphs or detected lists; ocr/structure stops at flat rows. group_paragraphs
starts a new paragraph wherever the vertical gap exceeds line_gap_factor x the
median line height; detect_lists recognises bullet / ordinal items by their
leading marker and left indent.
…batch

Add text_blocks: paragraph & list grouping of OCR lines
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 159 complexity · 0 duplication

Metric Results
Complexity 159
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@JE-Chen JE-Chen merged commit 70da17d into main Jun 23, 2026
31 checks passed
@sonarqubecloud

Copy link
Copy Markdown

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.

1 participant