fix(tables): recognize chart-bar clusters and mask their text from table detection (#159)
Bar charts drawn as filled rects read as cell rects or aligned text: the cell-rect fallback gridded their axis labels into phantom tables, and when rect paths rejected them, hint regions and the gap-histogram heuristic re-gridded the same text. On survey-report pages this scrambled reading order and swallowed section headings. Detection (is_chart_bar_cluster): the dominant equal-breadth rect family arranged in >=2 spaced positions (bars; cell rects touch), data-driven extent variation (>=1.3x), no same-offset/same-extent partners across positions (grid rows pair up, chart segments don't), and only numeric labels inside. Mirrored predicate covers horizontal bar charts. Chart clusters are skipped in detect_tables_from_rects (no table, no hint), and a new detect_chart_regions pass lets the markdown pipeline pre-claim chart items so heuristic/line/column detection and the merged-band retry all skip them — the text flows out as plain lines. opendataloader-bench: overall 0.8389 -> 0.8446, TEDS 0.699 -> 0.708, MHS 0.742 -> 0.750, NID 0.889 -> 0.894; 7 docs up (best +0.459), none down. pdf-evals changed-set composite +0.013, TEDS +0.036. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
e48e34dfe9
commit
2ed152e49b
+1
-1
@@ -15,7 +15,7 @@ pub use detect_heuristic::detect_tables;
|
||||
pub(crate) use detect_heuristic::is_table_of_contents;
|
||||
pub use detect_lines::detect_tables_from_lines;
|
||||
pub(crate) use detect_rects::cluster_rects;
|
||||
pub use detect_rects::{detect_tables_from_rects, RectHintRegion};
|
||||
pub use detect_rects::{detect_chart_regions, detect_tables_from_rects, RectHintRegion};
|
||||
pub use detect_struct::detect_tables_from_struct_tree;
|
||||
pub use format::table_to_markdown;
|
||||
pub use structured::{cells_to_markdown, StructuredCell};
|
||||
|
||||
Reference in New Issue
Block a user