PDF tables
Silktide checks two things about the tables in a PDF: that each header cell says whether it heads a row or a column, and that every row spans the same number of columns once merged cells are taken into account.
Both are about the same thing. A table only means anything if each value can be traced back to the headings that describe it, and software can only do that when the document states which cells are headers, in which direction, and how the grid fits together.
Why this matters
Sighted readers navigate a table in two dimensions at once. Your eye finds a number, then travels up to the column heading and left to the row heading almost without effort. Someone using a hears one cell at a time and cannot do that, so readers announce the relevant headers with each value instead: "Revenue, Q3, 4.2 million". That single sentence is what makes a table usable without sight, and it is only possible when the document has declared which cells are headers and what they head.
Without a direction on each header, the reader has to guess. It usually assumes the top row heads the columns, which is right often enough to be dangerous: in a table with headings down the left as well, or with two header rows, the guess quietly fails and values are announced against the wrong labels. A reader is then given confident, incorrect information, which is worse than being given none.
Ragged rows break the grid itself. When the column counts do not agree, positions no longer line up, and every value after the ragged row can be matched to the wrong header. Financial and statistical tables are where this hurts most, because a misattributed number still looks like a plausible number.
How to fix it
- Mark your header row or column as a header in the source. In Word, use "Repeat Header Rows" for the top row of a table, and mark header columns through the table properties rather than by making the text bold.
- Give every header a direction, so each one declares whether it applies to its row or its column. Tables with headings on both edges need both.
- Make the rows agree. Every row should account for the same number of columns once row and column spans are counted. Empty cells belong in the table as empty cells rather than being left out.
- Simplify tables that fight the format. Stacked headers, split cells, and tables nested inside tables are hard to tag and harder to listen to. Two straightforward tables are almost always better than one clever one.
- Never use a table to lay out a page. A table is a statement that its contents are related data. If the grid is only there for positioning, the content should be tagged as ordinary text and the table marked as decoration.
- Or run Silktide remediation, which repairs table structure and confirms the header semantics against the table as it appears. See Tables.
How Silktide tests this
- Find the PDF documents linked from your website, and analyse each unique file once however many pages link to it.
- Examine each table's header cells for a declared direction.
- Work out how many columns each row spans, allowing for row and column spans, and compare the rows.
- Report the document when a header has no direction, or when the rows do not agree, once per document however many tables are affected.
Troubleshooting
My header cells are bold, doesn't that make them headers?
No. Bold text is a visual style with no structural meaning, and this is the most common reason a table with obvious headings is reported. A header cell has to be tagged as a header, which is a property of the cell rather than of its formatting.
The table has merged cells
Merged cells are allowed, and are handled by declaring how many rows or columns each one spans. The check only reports rows that fail to add up once those spans are counted, which normally means a span was never declared.
The last row is a totals row
Totals rows are ordinary data rows and need no special treatment. If the label in the first cell describes the row, tag it as a row header like any other.
It is a layout table, not a data table
Then it should not be tagged as a table. Tag the contents as the text they are and mark the grid as decoration, and the check no longer applies. See PDF content tagging.