From 56537cc9d68d4cd91795e349399452f918cbe9cd Mon Sep 17 00:00:00 2001 From: bosd Date: Thu, 14 Aug 2025 16:54:03 +0200 Subject: [PATCH 1/2] Test for GitHub issue #585. This test checks that Camelot can successfully extract tables when using the 'network' flavor with specified 'table_areas' and 'columns', ensuring that at least one table is detected. --- tests/files/good_energy.pdf | Bin 0 -> 128471 bytes tests/test_network.py | 59 ++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 tests/files/good_energy.pdf diff --git a/tests/files/good_energy.pdf b/tests/files/good_energy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..506fbd0127810bb93c87700a300d4624133bc395 GIT binary patch literal 128471 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 1 + + +# Reported as https://github.com/camelot-dev/camelot/issues/585 +def test_issue_585(testdir): + """Test for GitHub issue #585. + + This test checks that Camelot can successfully extract tables when using + the 'network' flavor with specified 'table_areas' and 'columns', + ensuring that at least one table is detected. + + Parameters + ---------- + testdir : str + The path to the test directory. + + """ + filename = os.path.join(testdir, "multiple_tables.pdf") + tables = camelot.read_pdf( + filename, + flavor="network", + table_areas=["100,700,500,100"], + columns=["150,200,250,300,350,400,450,500"], + ) + assert len(tables) > 0 + + +def test_issue_585_network_flavor_with_table_areas(testdir): + """Test for GitHub issue #585, focusing on the 'network' flavor. + + This test verifies that Camelot's 'network' flavor can detect and + extract a table when a specific 'table_areas' is provided. The issue + reported that this scenario was failing, while the 'lattice' flavor + worked. This test ensures the 'network' flavor now behaves as expected. + + It checks that exactly one table is found in the specified area. + + Parameters + ---------- + testdir : str + The path to the test directory, provided by the testing framework. + This directory should contain the 'issue_585.pdf' file. + + """ + # Use the PDF file mentioned in the GitHub issue + filename = os.path.join(testdir, "good_energy.pdf") + + # The table_areas and columns are taken directly from the issue report + # to replicate the exact conditions. + tables = camelot.read_pdf( + filename, + flavor="network", + table_areas=["46,213,558,180"], + columns=["92,159,262,357,454,534"], + split_text=True, + ) + + # The core of the issue was that no tables were being detected. + # This assertion now checks that exactly one table is found. + assert len(tables) == 1 From ec30867056bd1b8a816b7f4e5e0d4cc5a192afa7 Mon Sep 17 00:00:00 2001 From: bosd Date: Fri, 15 Aug 2025 14:02:59 +0200 Subject: [PATCH 2/2] Fixup network parser --- camelot/parsers/network.py | 268 ++++++++++++++++--------------------- 1 file changed, 118 insertions(+), 150 deletions(-) diff --git a/camelot/parsers/network.py b/camelot/parsers/network.py index 4fbcf5f7..edc415c1 100644 --- a/camelot/parsers/network.py +++ b/camelot/parsers/network.py @@ -66,7 +66,7 @@ def column_spread(left, right, col_anchors): return index_right - index_left -def find_closest_tls( # noqa: C901 +def find_closest_tls( bbox: list[float], tls: list[LTTextLineHorizontal | LTTextLineVertical] ) -> dict[str, LTTextLineHorizontal | LTTextLineVertical | None]: """Search for textlines that are closest to the bounding box but outside in all four directions. @@ -257,7 +257,8 @@ def search_header_from_body_bbox( merged_zones = _merge_zones(zones) max_spread = max( - column_spread(zone[0], zone[1], col_anchors) for zone in merged_zones + (column_spread(zone[0], zone[1], col_anchors) for zone in merged_zones), + default=0, ) # Accept textlines that cross columns boundaries, as long as they @@ -481,13 +482,13 @@ def compute_plausible_gaps(self): # Calculate gaps between textlines h_gaps = np.array( [ - h_textlines[i].x0 - h_textlines[i - 1].x0 + h_textlines[i].x0 - h_textlines[i - 1].x1 for i in range(1, len(h_textlines)) ] ) v_gaps = np.array( [ - v_textlines[i].y0 - v_textlines[i - 1].y0 + v_textlines[i].y0 - v_textlines[i - 1].y1 for i in range(1, len(v_textlines)) ] ) @@ -527,6 +528,8 @@ def search_table_body( [x0, y0, x1, y1] or None if not enough textlines are found. """ most_aligned_tl = self.most_connected_textline() + if most_aligned_tl is None: + return None max_h_gap, max_v_gap = gaps_hv parse_details_search: dict[str, Any] | None = None @@ -813,176 +816,141 @@ def __init__( ) def _generate_table_bbox(self): + """ + Generate table bounding boxes. + + This method is refactored to handle two distinct cases: + 1. User-provided `table_areas`: It iterates through each area, + running the network detection algorithm only on the text contained + within that specific area. + 2. No `table_areas` (Discovery mode): It uses the original logic to + scan the entire page to find tables. + """ user_provided_bboxes = self._get_user_provided_bboxes() - - filtered_textlines = list( - self._get_filtered_textlines() - ) # Convert to list if not already - textlines = list(filtered_textlines) if filtered_textlines else [] - - textlines_processed = ( - set() - ) # Use a set for O(1) average time complexity for lookups + all_textlines = list(self._get_filtered_textlines()) self.table_bbox_parses = {} if self.parse_details is not None: self.parse_details["network_searches"] = [] self.parse_details["bbox_searches"] = [] self.parse_details["col_searches"] = [] - while textlines: # Continue while there are textlines to process - bbox_body, gaps_hv = self._get_bbox_body(user_provided_bboxes, textlines) - - if bbox_body is None: - break # Exit the loop if no more bbox_body can be generated - - tls_in_bbox = textlines_overlapping_bbox(bbox_body, textlines) - if not tls_in_bbox: # If there are no textlines in the bbox, break - break - - cols_boundaries = find_columns_boundaries(tls_in_bbox) - cols_anchors = boundaries_to_split_lines(cols_boundaries) - - bbox_full = self._get_full_bbox( - user_provided_bboxes, - bbox_body, - tls_in_bbox, - textlines, - cols_anchors, - gaps_hv, - ) - - if isinstance(bbox_full, list): - bbox_full = tuple(bbox_full) - - table_parse = { - "bbox_body": bbox_body, - "cols_boundaries": cols_boundaries, - "cols_anchors": cols_anchors, - "bbox_full": bbox_full, - } - - self.table_bbox_parses[bbox_full] = table_parse - - if self.parse_details is not None: - self.parse_details["col_searches"].append(table_parse) + if user_provided_bboxes: + # Case 1: User has specified table areas. + for user_bbox in user_provided_bboxes: + textlines_in_area = textlines_overlapping_bbox(user_bbox, all_textlines) + if not textlines_in_area: + continue + + text_network = TextNetworks() + text_network.generate(textlines_in_area) + text_network.remove_unconnected_edges() + gaps_hv = text_network.compute_plausible_gaps() + + if gaps_hv is None: + bbox_body = user_bbox + else: + bbox_body = text_network.search_table_body( + gaps_hv, self.parse_details + ) + if bbox_body is None: + bbox_body = user_bbox + + tls_in_body = textlines_overlapping_bbox(bbox_body, textlines_in_area) + if not tls_in_body: + continue + + cols_boundaries = find_columns_boundaries(tls_in_body) + cols_anchors = boundaries_to_split_lines(cols_boundaries) + + bbox_full = self._get_full_bbox( + [], + bbox_body, + tls_in_body, + textlines_in_area, + cols_anchors, + gaps_hv, + ) - # Update processed textlines - textlines_processed.update(tls_in_bbox) - # Filter out processed textlines - textlines = [tl for tl in textlines if tl not in textlines_processed] + if isinstance(bbox_full, list): + bbox_full = tuple(bbox_full) + + table_parse = { + "bbox_body": bbox_body, + "cols_boundaries": cols_boundaries, + "cols_anchors": cols_anchors, + "bbox_full": bbox_full, + } + self.table_bbox_parses[bbox_full] = table_parse + if self.parse_details is not None: + self.parse_details["col_searches"].append(table_parse) + else: + # Case 2: No user-specified areas (discovery mode). + textlines = all_textlines + textlines_processed = set() + while textlines: + bbox_body, gaps_hv = self._get_bbox_body(None, textlines) + if bbox_body is None: + break + + tls_in_bbox = textlines_overlapping_bbox(bbox_body, textlines) + if not tls_in_bbox: + break + + cols_boundaries = find_columns_boundaries(tls_in_bbox) + cols_anchors = boundaries_to_split_lines(cols_boundaries) + + bbox_full = self._get_full_bbox( + None, + bbox_body, + tls_in_bbox, + textlines, + cols_anchors, + gaps_hv, + ) - # Early exit if all textlines have been processed - if not textlines: # Check if there are no more textlines to process - break + if isinstance(bbox_full, list): + bbox_full = tuple(bbox_full) + + table_parse = { + "bbox_body": bbox_body, + "cols_boundaries": cols_boundaries, + "cols_anchors": cols_anchors, + "bbox_full": bbox_full, + } + self.table_bbox_parses[bbox_full] = table_parse + if self.parse_details is not None: + self.parse_details["col_searches"].append(table_parse) + + tls_in_full_bbox = textlines_overlapping_bbox(bbox_full, textlines) + textlines_processed.update(tls_in_full_bbox) + textlines = [tl for tl in textlines if tl not in textlines_processed] + if not textlines: + break def _get_bbox_body(self, user_provided_bboxes, textlines): - if user_provided_bboxes is not None: - if len(user_provided_bboxes) > 0: - return ( - user_provided_bboxes.pop(), - None, - ) # Return None for gaps_hv if using user bbox - + """ + This method is now only used for table discovery on a full page. + The case for user-provided bboxes is handled in _generate_table_bbox. + """ text_network = TextNetworks() text_network.generate(textlines) text_network.remove_unconnected_edges() gaps_hv = text_network.compute_plausible_gaps() if gaps_hv is None: - return None, None # End the loop if no gaps can be computed + return None, None edge_tol_hv = ( gaps_hv[0], gaps_hv[1] if self.edge_tol is None else self.edge_tol, ) - bbox_body = text_network.search_table_body( - edge_tol_hv, - parse_details=( - self.parse_details["bbox_searches"] if self.parse_details else None - ), - ) if self.parse_details is not None: - self.parse_details["network_searches"].append(text_network) - - return bbox_body, gaps_hv # Return the computed bbox_body and gaps_hv - - def _get_full_bbox( - self, - user_provided_bboxes, - bbox_body, - tls_in_bbox, - textlines, - cols_anchors, - gaps_hv, - ): - if user_provided_bboxes is not None: - if len(user_provided_bboxes) > 0: - return bbox_body # Use the existing bbox_body directly - else: - bbox_body_from_tls = bbox_from_textlines(tls_in_bbox) - if bbox_body_from_tls is not None: - return search_header_from_body_bbox( - bbox_body_from_tls, textlines, cols_anchors, gaps_hv[1] - ) - return bbox_body - - def _get_filtered_textlines(self): - all_textlines = [ - t - for t in self.horizontal_text + self.vertical_text - if len(t.get_text().strip()) > 0 - ] - return self._apply_regions_filter(all_textlines) + self.parse_details["network_searches"].append( + (text_network, gaps_hv, edge_tol_hv) + ) - def _get_user_provided_bboxes(self): - if self.table_areas is not None: - return [bbox_from_str(area_str) for area_str in self.table_areas] - return None + bbox_body = text_network.search_table_body(edge_tol_hv, self.parse_details) + return bbox_body, gaps_hv - def _generate_columns_and_rows(self, bbox, user_cols): - # select elements which lie within table_bbox - self.t_bbox = text_in_bbox_per_axis( - bbox, self.horizontal_text, self.vertical_text - ) - all_tls = list( - sorted( - filter( - lambda textline: len(textline.get_text().strip()) > 0, - self.t_bbox["horizontal"] + self.t_bbox["vertical"], - ), - key=lambda textline: (-textline.y0, textline.x0), - ) - ) - text_x_min, text_y_min, text_x_max, text_y_max = bbox_from_textlines(all_tls) - # FRHTODO: - # This algorithm takes the horizontal textlines in the bbox, and groups - # them into rows based on their bottom y0. - # That's wrong: it misses the vertical items, and misses out on all - # the alignment identification work we've done earlier. - rows_grouped = self._group_rows(all_tls, row_tol=self.row_tol) - rows = self._join_rows(rows_grouped, text_y_max, text_y_min) - - if user_cols is not None: - cols = [text_x_min] + user_cols + [text_x_max] - cols = [(cols[i], cols[i + 1]) for i in range(0, len(cols) - 1)] - else: - # Check if the bounding box exists as a key in the dictionary - if bbox in self.table_bbox_parses: - parse_details = self.table_bbox_parses[bbox] - col_anchors = parse_details["cols_anchors"] - cols = list( - map( - lambda idx: [col_anchors[idx], col_anchors[idx + 1]], - range(0, len(col_anchors) - 1), - ) - ) - else: - # Handle the KeyError gracefully by returning empty lists - # or by performing alternative logic, such as using a default - # bounding box or skipping the table. - print(f"Warning: Bounding box {bbox} not found in table_bbox_parses.") - return [], [], [], [] # Return empty lists for cols, rows, v_s, h_s - - return cols, rows, None, None