Class: Tabula::Extractors::Basic

Inherits:
ExtractionAlgorithm show all
Defined in:
lib/tabula/extractors/basic_extraction_algorithm.rb

Overview

Stream-mode extraction algorithm. Extracts tables by analyzing text positions and gaps without relying on ruling lines.

Instance Method Summary collapse

Methods inherited from ExtractionAlgorithm

extract, #name

Constructor Details

#initialize(columns: nil, guess: true, **options) ⇒ Basic

Returns a new instance of Basic.

Parameters:

  • columns (Array<Float>, nil) (defaults to: nil) —

    explicit column positions

  • guess (Boolean) (defaults to: true) —

    whether to guess column positions



10
11
12
13
14
# File 'lib/tabula/extractors/basic_extraction_algorithm.rb', line 10

def initialize(columns: nil, guess: true, **options)
  super(**options)
  @columns = columns
  @guess = guess
end

Instance Method Details

#extract(page) ⇒ Array<Table>

Extract tables from a page

Parameters:

  • page (Page) —

    page to extract from

Returns:



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/tabula/extractors/basic_extraction_algorithm.rb', line 19

def extract(page)
  return [] if page.text_elements.empty?

  # Get text chunks and lines
  chunks = page.text_chunks
  return [] if chunks.empty?

  lines = TextChunk.(chunks)
  return [] if lines.empty?

  # Determine column positions
  column_positions = determine_columns(lines, page)

  # Build table
  table = build_table(lines, column_positions, page.page_number)
  table.empty? ? [] : [table]
end