2.80:Table Extraction (Concept)

Tables are one of the most common ways data is organized on documents. Human beings have been writing information into tables before they started writing literature, even before paper was invented. They are excellent structures for representing a lot of information with various characteristics in common in a relatively small space. However, targeting the data inside them presents its own set of challenges. A table’s structure can range from simple and straightforward to more complex (and even confounding). Different organizations may organize the same data differently, creating different tables for what, essentially, is the same data.
In Grooper, tabular data can be extracted using the Row Match, Header-Value, or Infer Grid table extraction methods.
What Is a Table?
Tables consists of rows and columns. Where those rows and columns intersect are cells. These are the individual units of the table containing individual pieces of data. Each row consists of the same number of columns (although some columns may be empty in a given row). A single column consists of the same type of information. For example, an "Order Date" column will always have dates in the cells below it. The rows themselves are usually (but not always) in some order as well, such as in order of ascending date.
![]() |
![]() |
![]() |
This may seem obvious, but understanding how data is structured on the page informs how you will use Grooper to target it.
What is a Table in Grooper?

In Grooper, tables are represented as Data Table objects in a Data Model. Each column is represented as a Data Column object, created as a children of the Data Table. Rows and their individual cells are created and populated upon successful data extraction.
To the left is a Content Model in the Node Tree. It contains a Data Table with Data Columns, representing the table's structure.
How raw text data is targeted and extracted to populate each row in the table is determined by the Data Table object's "Extract Method" property. This can be done using either the Row Match, the Header-Value, or the Infer Grid method.
![]() |
Use Cases
Tables are used by an innumerable number of organizations in limitless ways. Examples of tabular data can be found in...
Even data which may not initially seem like a table can be represented as a table. For example, an email inbox is essentially one big table of information pertaining to messages sent to an email address. It has columns like "From", "Received Date", "Subject" and more for rows of messages.

In fact, the main benefit to putting data in a table is that you can easily encapsulate repeated instances of data with multiple similar characteristics. Even if that information isn't presented in a table-like structure, sometimes Grooper can use the same table extraction methods to target the data and format it into a table.