# US 11,443,106 B2 · Intelligent normalization and de-normalization of tables for multiple processing scenarios

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,443,106 B2
- Document ID: US11443106B2
- Status: Granted
- Kind: B2
- Application number: 16/136,721
- Filed: 2018-09-20
- Published: 2020-03-26
- Granted: 2022-09-13
- Earliest claimed: 2018-09-20
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Kyle G. Christianson; Hassan Nadim; Joshua S. Allen; Andrew R. Freed
- Web page: https://patentgrep.com/patent/US11443106B2

## CPC

- G06F 40/18: of spreadsheets (form-filling G06F40/174)
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 40/103: Formatting, i.e. changing of presentation of documents (automatic justification G06F40/189; automatic line break hyphenation G06F40/191)
- G06F 40/177: of tables; using ruled lines
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method, system and computer-usable medium are disclosed for finding vertically and horizontally aligned cells in a complex table structure. A file or document, such as an HTML file that defines a complex table includes spanning rows and columns is expanded into a two dimensional (2D) array or table with orthogonal rows and columns, where the spanning rows and columns included cells with copied values or object references. The expanded 2D array or table can be deduplicated row or column wise to determine header alignment of the table.

## Claims

### Claim 1

A computer-implemented method to find vertically and horizontally aligned cells in a structure data, comprising:
creating a two dimensional (2D) array from the structure data that includes orthogonal rows and columns of cells with object references, wherein the structure data is an HTML file representing a table, and the creating is performed using an algorithm that converts a table defined by the HTML file with row spanning and column spanning;
determining spanning rows and columns in the 2D array;
copying the object references of adjacent cells in the spanning rows and columns to create an expanded table with spanning rows and columns;
copying for a row of the 2D array, all attributes of a cell “i” to an adjacent cell “i+1” if the cell “i+1” does not have data until the rows of the 2D array are complete; and
copying for column of the 2D array, all attributes of a cell “j” to an adjacent cell “j+1 if the cell “j+1” does not data for until the columns of the 2D array are complete.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the object references defines vertical and horizontal alignment in the structure data.

### Claim 3 (depends on 1)

The method of claim 1, wherein:
the cells include header values.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
deduplicating the expanded table with spanning rows and columns, based on row features, to create a deduplicated table for header cell detection.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
deduplicating the expanded table with spanning rows and columns, based on column features, to create a deduplicated table for header cell detection.

### Claim 6

A system comprising:
a processor;
a data bus coupled to the processor; and
a computer-usable medium embodying computer program code, the computer-usable medium being coupled to the data bus, the computer program code used for determining vertically and horizontally aligned cells in a structure data and comprising instructions executable by the processor and configured for:
creating a two dimensional (2D) table from the structure data that includes orthogonal rows and columns of cells with values or object references, wherein the structure data is an HTML file representing a table, and the creating is performed using an algorithm that converts a table defined by the HTML file with row spanning and column spanning;
determining spanning rows and columns in the 2D table;
copying the values or object references of adjacent cells in the spanning rows columns to create an expanded table with spanning rows and columns;
copying for a row of the 2D array, all attributes of a cell “i” to an adjacent cell “i+1” if the cell “i+1” does not have data until the rows of the 2D array are complete; and
copying for column of the 2D array, all attributes of a cell “j” to an adjacent cell “j+1 if the cell “j+1” does not data for until the columns of the 2D array are complete.

### Claim 7 (depends on 6)

The system of claim 6, wherein:
the copying begins with spanning rows before spanning columns.

### Claim 8 (depends on 6)

The system of claim 6, wherein:
the copying begins with spanning columns before spanning rows.

### Claim 9 (depends on 6)

The system of claim 6, further comprising:
deduplicating the expanded table with spanning rows and columns, based on row features, to create a deduplicated table for header cell detection.

### Claim 10 (depends on 6)

The system of claim 6, further comprising:
deduplicating the expanded table with spanning rows and columns, based on column features, to create a deduplicated table for header cell detection.

### Claim 11

A non-transitory, computer-readable storage medium embodying computer program code, the computer program code comprising computer executable instructions configured for:
creating a two dimensional (2D) array from the structure data that includes orthogonal rows and columns of cells with object references, wherein the structure data is an HTML file representing a table, and the creating is performed using an algorithm that converts a table defined by the HTML file with row spanning and column spanning;
determining spanning rows and columns in the 2D array;
copying the object references of adjacent cells in the spanning rows and columns to create an expanded table with spanning rows and columns;
copying for a row of the 2D array, all attributes of a cell “i” to an adjacent cell “i+1” if the cell “i+1” does not have data until the rows of the 2D array are complete; and
copying for column of the 2D array, all attributes of a cell “j” to an adjacent cell “j+1 if the cell “j+1” does not data for until the columns of the 2D array are complete.

### Claim 12 (depends on 11)

The non-transitory, computer-readable storage medium of claim 11, wherein:
the object references defines vertical and horizontal alignment in the structure data.

### Claim 13 (depends on 11)

The non-transitory, computer-readable storage medium of claim 11, wherein:
the copying begins with spanning rows before spanning columns.

### Claim 14 (depends on 11)

The non-transitory, computer-readable storage medium of claim 11, further comprising:
deduplicating the expanded table with spanning rows and columns, based on row features, to create a deduplicated table for header cell detection.

### Claim 15 (depends on 11)

The non-transitory, computer-readable storage medium of claim 11, further comprising:
deduplicating the expanded table with spanning rows and columns, based on column features, to create a deduplicated table for header cell detection.

### Claim 16 (depends on 11)

The non-transitory, computer-readable storage medium of claim 11, wherein the computer executable instructions are deployable to a client system from a server system at a remote location.

### Claim 17 (depends on 11)

The non-transitory, computer-readable storage medium of claim 11, wherein the computer executable instructions are provided by a service provider to a user on an on-demand basis.

### Claim 18 (depends on 1)

The method of claim 1, wherein the 2D array is generated from an HTML file.

### Claim 19 (depends on 6)

The system of claim 6, wherein the 2D array is generated from an HTML file.

### Claim 20 (depends on 11)

The non-transitory, computer-readable storage medium of claim 11, wherein the 2D array is generated from an HTML file.
