From 97fc32ac70d3550286989364745588ad81d5e4c4 Mon Sep 17 00:00:00 2001 From: Abimael Martell Date: Wed, 29 Apr 2026 21:27:27 -0700 Subject: [PATCH] tables: prefer rect edges for cell-grid fallback (#72) * tables: prefer rect edges in cell-grid fallback * Bump version from 1.8.1 to 1.8.2 --- napi/package.json | 2 +- src/lib.rs | 40 +++++++++++++ src/tables/detect_rects.rs | 74 +++++++++++++++++++----- tests/fixtures/forecast_table_chart.pdf | Bin 0 -> 59795 bytes 4 files changed, 100 insertions(+), 16 deletions(-) create mode 100644 tests/fixtures/forecast_table_chart.pdf diff --git a/napi/package.json b/napi/package.json index e5b7e01..379939c 100644 --- a/napi/package.json +++ b/napi/package.json @@ -1,6 +1,6 @@ { "name": "@firecrawl/pdf-inspector", - "version": "1.8.1", + "version": "1.8.2", "description": "Fast PDF classification and text extraction. Detect text-based vs scanned PDFs, extract text by region with quality checks. Native Rust performance via napi-rs.", "main": "index.js", "types": "index.d.ts", diff --git a/src/lib.rs b/src/lib.rs index 58c7ce7..658d1fe 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -995,6 +995,46 @@ fn crop_px_bbox_is_plausible( mod vector_grid_tests { use super::crop_px_bbox_is_plausible; + /// Regression for `forecast_table_chart.pdf` (doc 128 from the + /// opendataloader-bench corpus). The table has six visual columns, but + /// text X-clustering in the cell-rect fallback previously split wide + /// columns into ten spurious columns. + #[test] + fn forecast_table_chart_six_cols() { + use crate::extractor::content_stream::extract_page_text_items; + use crate::tables::detect_tables_from_rects; + use crate::tounicode::FontCMaps; + use lopdf::Document; + use std::collections::HashSet; + use std::fs; + + let path = "tests/fixtures/forecast_table_chart.pdf"; + let buf = fs::read(path).unwrap(); + let doc = Document::load_mem(&buf).unwrap(); + let pages = doc.get_pages(); + let &page_id = pages.get(&1).unwrap(); + let needed: HashSet = HashSet::from([1]); + let cmaps = FontCMaps::from_doc_pages_fast(&doc, Some(&needed)); + let ((items, rects, _lines), _has_gid, _rotated) = + extract_page_text_items(&doc, page_id, 1, &cmaps, false).unwrap(); + + let (rect_tables, _) = detect_tables_from_rects(&items, &rects, 1); + assert_eq!(rect_tables.len(), 1, "expected one rect-detected table"); + let t = &rect_tables[0]; + assert_eq!( + t.columns.len(), + 6, + "doc 128 has a 6-column table; got {} edges: {:?}", + t.columns.len(), + t.columns + ); + assert!( + t.rows.len() >= 14 && t.rows.len() <= 17, + "row count drift: {}", + t.rows.len() + ); + } + #[test] fn test_crop_px_bbox_is_plausible_bounds() { let crop = [10.0, 20.0, 110.0, 220.0]; diff --git a/src/tables/detect_rects.rs b/src/tables/detect_rects.rs index 705ceae..8be235e 100644 --- a/src/tables/detect_rects.rs +++ b/src/tables/detect_rects.rs @@ -1587,25 +1587,69 @@ fn detect_row_stripe_table_from_cell_rects( return None; } - // Derive columns from text X-position clustering + // Derive columns from text X-position clustering, but prefer rect + // X-edges when they already provide a tighter scaffold. Some PDFs draw + // only the row-index cells in the body plus a full header row; that is + // not dense enough for `try_build_grid`, but the header rects still define + // the real columns. Text starts inside wide cells can otherwise split the + // table into spurious sub-columns. let columns = cluster_x_positions(&page_items, 15.0); - if columns.len() < 2 { + let text_col_edges = if columns.len() >= 2 { + let mut edges: Vec = Vec::with_capacity(columns.len() + 1); + let min_x = page_items.iter().map(|(_, i)| i.x).reduce(f32::min)?; + edges.push(min_x - 5.0); + for pair in columns.windows(2) { + edges.push((pair[0] + pair[1]) / 2.0); + } + let max_x_right = page_items + .iter() + .map(|(_, i)| i.x + i.width) + .reduce(f32::max)?; + edges.push(max_x_right + 5.0); + Some(edges) + } else { + None + }; + + let rect_col_edges = { + let mut x_vals = Vec::with_capacity(content_rects.len() * 2); + for &&(x, _, w, _) in &content_rects { + x_vals.push(x); + x_vals.push(x + w); + } + let mut edges = snap_edges(&x_vals, 6.0); + edges.sort_by(|a, b| a.total_cmp(b)); + if (3..=26).contains(&edges.len()) { + Some(edges) + } else { + None + } + }; + + let col_edges = match (rect_col_edges, text_col_edges) { + (Some(rect_edges), Some(text_edges)) if rect_edges.len() <= text_edges.len() => { + debug!( + " cell-rect using {} rect-derived columns over {} text clusters", + rect_edges.len() - 1, + text_edges.len() - 1 + ); + rect_edges + } + (_, Some(text_edges)) => text_edges, + (Some(rect_edges), None) => rect_edges, + (None, None) => { + debug!( + " cell-rect rejected: only {} columns from text clustering", + columns.len() + ); + return None; + } + }; + + if col_edges.len() < 3 { return None; } - // Build column edges - let mut col_edges: Vec = Vec::with_capacity(columns.len() + 1); - let min_x = page_items.iter().map(|(_, i)| i.x).reduce(f32::min)?; - col_edges.push(min_x - 5.0); - for pair in columns.windows(2) { - col_edges.push((pair[0] + pair[1]) / 2.0); - } - let max_x_right = page_items - .iter() - .map(|(_, i)| i.x + i.width) - .reduce(f32::max)?; - col_edges.push(max_x_right + 5.0); - let num_cols = col_edges.len() - 1; let num_rows = row_edges.len() - 1; diff --git a/tests/fixtures/forecast_table_chart.pdf b/tests/fixtures/forecast_table_chart.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2a35cdb4321a85cad45c4b3248160c10c5e1c8f1 GIT binary patch literal 59795 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 literal 0 HcmV?d00001