- Add _is_likely_chart() to detect charts misclassified as tables
- High empty cell ratio (>70%) indicates chart grid
- Axis label patterns (numbers, °C, %, Time, Temperature)
- Multi-line cells with axis text
- Add _build_rows_from_cells_dict() to handle JSON table content
- Properly parse cells structure from Direct extraction
- Avoid HTML round-trip conversion issues
- Remove rowHeights parameter from Table() to fix content overlap
- Let ReportLab auto-calculate row heights based on content
- Use scaling to fit within bbox
Fixes edit.pdf table overlap and chart misclassification issues.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>