Implement dashed vertical lines at column boundaries for debugging
Phase 4.4 column detection. Each column boundary uses a different
color from an 8-color palette with distinct dash patterns for left vs
right boundaries.
- Created render_columns() function in inspect/render/columns.rs
- CSS classes: column-boundary column-left/right for toggleability
- Data attributes: column-index, boundary, x0, x1 for UI consumption
- 10 unit tests covering all functionality
Also fixed pre-existing compilation errors in extract.rs and render
test files where SpanJson/BlockJson structs were missing required
fields (color, confidence_source, flags, rendering_mode, lang, spans).
Closes: pdftract-5bu2k
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Implements the render_anchors helper that draws block-id text labels at the
top-left corner of each block. Shows the Markdown anchor IDs that downstream
output (Phase 6.5 --md-anchors) will produce.
Key details:
- Function: render_anchors(page_index, page_number, blocks) -> Vec<String>
- Anchor ID format: p{page_number}-b{block_index} (e.g., "p1-b0")
- Text positioned at top-left corner (x0+2, y1-4) with small offset
- Data attributes: data-page-index, data-page-number, data-block-index,
data-bbox, data-kind
- CSS class: "anchor-label" for frontend toggleability
- Font: monospace, 10pt, black (#000000)
All 12 unit tests pass, covering empty input, single/multiple blocks,
positioning, bbox format, XML escaping, page variations, and SVG validity.
Closes: pdftract-5edjj
Implement the blocks layer renderer for the inspector debug viewer.
This renders translucent SVG rectangles for each structural block,
color-coded by block kind per plan §7.9.
Color encoding:
- heading: blue (#3b82f6)
- paragraph: gray (#9ca3af)
- table: teal (#14b8a6)
- list: purple (#a855f7)
- code: orange (#f97316)
- header/footer: light gray (#d1d5db)
- figure: brown (#a52a2a)
- caption: pink (#ec4899)
Each rect includes data-* attributes for tooltip consumption:
- data-kind, data-text, data-level, data-table-index, data-block-index
Also fix pre-existing missing `column` field in SpanJson test fixtures
across spans.rs and confidence_heatmap.rs.
Closes: pdftract-5iouh
Adds curved arrows between consecutive blocks in reading order with
numeric labels. Arrows use quadratic bezier curves with control points
at midpoint + 10pt downward. Limits to 50 arrows to prevent visual
clutter.
- Add render_reading_order function returning SVG path and text elements
- Include data-* attributes for tooltip consumption
- Add comprehensive unit tests (10/10 passing)
- Export reading_order module from inspect/render/mod.rs
Acceptance criteria:
- Helper compiles and produces valid SVG output ✅
- Layer is independently toggleable via CSS class ✅
- data-* attrs populated ✅
- Unit tests pass ✅
Closes: pdftract-6559n
Add render_confidence_heatmap() function that creates per-glyph
translucent colored cells representing extraction confidence.
Color coding:
- Red (#ef4444): confidence < 0.5 (low)
- Yellow (#eab308): 0.5 <= confidence < 0.8 (medium)
- Green (#22c55e): confidence >= 0.8 (high)
- Gray (#94a3b8): no confidence value (direct extraction)
Each cell includes data-* attributes (data-char, data-confidence,
data-span-index) for tooltip consumption by the frontend inspector
(Phase 7.9.6).
Implementation approximates per-glyph positions using span bbox
and character count, since the JSON schema only has span-level
confidence.
All unit tests pass. CSS class "heatmap-cell" enables frontend
toggling (Phase 7.9.3).
Closes: pdftract-67p2c
Implements the span layer renderer for the inspector debug viewer.
Renders SVG outline rectangles for each text span, color-coded by
extraction confidence. Red (< 0.5), yellow (0.5-0.8), and green (> 0.8)
indicate low, medium, and high confidence respectively. Gray indicates
direct extraction without OCR.
Each rect includes data-* attributes for tooltip and click consumption:
- data-text: the extracted text content (XML-escaped)
- data-confidence: confidence score or empty string
- data-font: font name (XML-escaped)
- data-size: font size in points
All 10 unit tests pass. The implementation follows the existing SVG
generation pattern in pdftract-core/src/receipts/svg.rs.
Closes: pdftract-p4vzu