# How to Extract Tables From a Scanned PDF Report

- Author: Schema Law (https://www.schemalaw.com/)
- Published: 2021-12-19T02:06:12Z
- Updated: 2026-10-11T19:22:20Z
- Category: Converting scans
- Canonical: https://www.schemalaw.com/blog/how-to-extract-tables-from-a-scanned-pdf

> How to extract tables from a scanned PDF report: find the table pages, convert only those, name each worksheet by table number and keep an index.

To extract tables from a scanned PDF that is mostly ordinary text, first find the pages that hold tables, convert those pages with OCR that detects tables, and export an Excel workbook. Then rename each worksheet after the document's own table number and keep an index of table, page, sheet and checks done.

One table on one page is a conversion job. Fifteen tables scattered through a 212-page expert report is a logistics job: knowing how many there are, getting each one out, and being able to say afterwards which sheet is which table and whether anyone checked it. This guide is about the second kind.

The example used throughout is fictional: a scanned environmental site assessment for 2200 Marlow Street, prepared by Kestrel Geoscience, 212 pages, with soil and groundwater results in tables spread between the narrative and the appendices.

## Where are the tables in a long scanned PDF?

Find the tables in a long scanned PDF from three places: the report's own list of tables, the captions printed over each table, and a search for the word "Table" once the file has a text layer. Use all three, because each one misses tables the others catch.

### The list of tables

Look in the front matter, after the table of contents. A list of tables gives you a number, a title and a printed page for each. Copy it into a spreadsheet at once. It is the skeleton of your index and your count of how many tables the author thinks there are.

The printed page is not the page of the PDF file. A cover, a transmittal letter and roman-numbered front matter all push the file's page counter ahead of the printed number. Work out the offset once. If printed page 1 is page 9 of the file, add 8, then test the sum on two tables near the end, since appendices may restart their numbering.

### The captions

Page through the file looking for captions. Thumbnail view makes this quick, because a page of figures in columns looks different from a page of paragraphs even at a small size. Record every caption you see and the file page it sits on. Captions catch what the list leaves out: tables in appendices, tables added in a late revision, and tables inside attached laboratory reports that carry numbering of their own.

### Searching after OCR

If the scan has no text layer, search finds nothing. Once the file has been through OCR, search for "Table" and step through the hits. The hits fall into three groups: captions, cross-references in the narrative such as "see Table 6", and the list of tables. The cross-references are useful in themselves. A paragraph that refers to Table 6 tells you what the author used it to prove.

### Tables with no caption

Some tables are never labelled: a cost breakdown in the middle of a letter, a sample log, a fee table in an engagement agreement bound into the appendix. Only paging through finds them. Give each a label of your own, in a form that cannot be confused with the report's numbers, such as "Unnumbered A (p. 147)".

For the Marlow Street report, the three passes give this: the list of tables names 11, the captions show 14 because Appendix C holds three laboratory summary tables, and paging finds one unlabelled sample log. Fifteen tables on 23 pages.

## Extracting only the table pages from a scanned PDF

Extract the table pages into a smaller PDF, convert that file, and keep a map from each new page number to its page in the full scan. Converting 23 pages instead of 212 uses fewer pages of a plan's allowance, gives a workbook with fewer stray sheets, and puts every table in front of you without scrolling.

1. **List the page ranges.** From your findings, write the file pages that hold tables: for example 31, 44 to 46, 58, 102 to 109, 147, 180 to 188.
2. **Take one page either side when in doubt.** A caption can sit at the foot of the page before its table, and notes can run onto the page after.
3. **Extract, do not reprint.** In your PDF program, use the command that extracts or copies pages into a new file. That keeps each page image as it is. Printing a range to a new PDF can resample the image. The post on [splitting a searchable PDF](https://www.schemalaw.com/blog/split-a-searchable-pdf) compares the two methods.
4. **Keep the page order of the original.** Do not group tables by subject at this stage.
5. **Write the page map.** A two-column list: page in the extract, page in the full scan. Page 1 of the extract is page 31 of the scan, pages 2 to 4 are 44 to 46, and so on.
6. **Name the extract after its source.** For example `Kestrel ESA - table pages extract - from 212pp scan.pdf`. The full scan stays untouched.
7. **Convert the extract and export Excel.** Schema Law takes a PDF of up to 20 MB, shows the parsed pages for checking against the original, and exports a workbook with each table on its own sheet and the rest of the text on another. Every plan includes the Excel export; the [pricing page](https://www.schemalaw.com/pricing) lists how many pages each plan lets you convert.
8. **Save the export untouched** and work in a copy.

Is extraction always worth it? No. If the whole report fits within your plan's per-document page limit and you want the narrative text as well, convert the whole file and skip the page map. Extraction pays when the report is long, the tables are few, or the file is over an upload size limit.

For the Marlow Street assessment, the workbook feeds the discussion of soil and groundwater. Keep each sample identifier beside the result so you can trace a hazardous waste figure back to the laboratory page. If the report describes remediation or a contaminated site, leave those words in a notes column next to the table they support. A chain of custody reference stays text.

One table may run across several pages, as the groundwater results on pages 102 to 109 do. It will arrive in pieces, one per page. Joining them is covered in the Excel guide under [tables that span several pages](https://www.schemalaw.com/blog/scanned-pdf-to-excel#tables-that-span-several-pages).

## One worksheet per table, named after the document's own table numbers

Give each extracted table one worksheet and name the sheet with the number the document uses, so that "Table 6" in the report is "Table 6" in the workbook. Anyone reading the report beside the workbook can then go from a cross-reference in the text to the right sheet without a key.

Exported sheets are named by the software, in the order the tables were found. That order is not the report's numbering. A table of contents read as a table, a multi-page table arriving in eight pieces and an unnumbered sample log all shift the sequence. Rename by looking at each sheet's content and matching it to a caption, never by counting.

### Names that Excel accepts

Excel restricts what a sheet can be called. Microsoft's page on how to [rename a worksheet](https://support.microsoft.com/en-us/office/rename-a-worksheet-3f1f7148-ee83-404d-8ef0-9ff99fbad1f9) says a name cannot "Contain more than 31 characters" or "Contain any of the following characters: / \ ? * : [ ]", and cannot be blank. That rules out pasting in a full caption. "Table 6: Groundwater Analytical Results, Volatile Organic Compounds" is too long and contains a colon.

A pattern that fits:

| Document's label | Sheet name | Note |
| --- | --- | --- |
| Table 6 | `T06 Groundwater VOCs` | Two-digit number so sheets sort in order |
| Table 6, continued on seven more pages | `T06 Groundwater VOCs` | One sheet after joining; the pieces stay in the untouched export |
| Table C-2 (Appendix C) | `TC-2 Lab summary soil` | Keep the appendix letter |
| Unlabelled sample log, page 147 | `UA Sample log p147` | Your label, marked as yours |

### What goes on each sheet

- **Row 1: the full caption,** typed exactly as printed. The sheet name is too short to hold it.
- **Row 2: the source.** File name and the pages of the full scan, not of the extract.
- **Row 3: blank.**
- **Row 4 onward: the table,** header row first.

Keeping the caption and source on the sheet means a sheet copied into another workbook still says what it is.

### Order and leftovers

Drag the sheets into the document's order. Put a sheet named Index first. Move sheets that turned out not to be tables to the end and prefix them `x-`, so they are out of the way but not lost until you have confirmed nothing on them is needed.

## Why did OCR treat ordinary text as a table, or miss a real one?

OCR calls ordinary text a table when the text is lined up in columns, and misses a real table when nothing on the page marks out a grid. Both faults come from the same step, in which the software decides which regions of a page are tables.

The mechanics are in the Excel guide under [how OCR finds a table on a scanned page](https://www.schemalaw.com/blog/scanned-pdf-to-excel#how-does-ocr-find-a-table-on-a-scanned-page).

In a long report the question is practical: which pages produce each fault, and what do you do about it?

### Text that came out as a table

| On the page | Why it can look like a table |
| --- | --- |
| Table of contents with dot leaders | A column of titles and a column of page numbers |
| Signature blocks side by side | Two aligned blocks of short lines |
| Letterhead with addresses in columns | Aligned short entries with gaps between |
| A numbered list with hanging indents | Numbers in one column, text in another |
| Two-column body text | Two blocks side by side |
| Distribution or "cc" lists | Names and organisations lined up |

These cost you nothing but tidying. Move the sheet to the `x-` group and record it in the index as "not a table". Check first that the same words also appear in the text sheet or in a Word export, so that removing the false table does not remove content.

### A real table that was missed

A missed table does not vanish. Its words and figures come out as running text, one printed line after another, on the sheet that holds the rest of the document's text. The numbers are there, with the columns collapsed.

Pages to look at closely:

- Tables with no ruled lines and narrow gaps between columns.
- Tables printed sideways on the page.
- Tables set inside a figure, a map legend or a title block.
- Small tables of two or three rows inside a paragraph.
- Pages where a stamp, a handwritten note or a punch hole crosses the grid.

How to catch a miss: compare your count of table sheets with your own count of the tables in the document. Every table in your list needs a sheet. A table with no sheet was missed.

What to do about it, in order of effort:

1. **Convert that page alone.** A page on its own, rotated upright if it was sideways, can come out differently.
2. **Split the text into columns.** If the figures are on the text sheet in clean lines, Excel's Text to Columns command can rebuild the grid from the spaces. Check every row, because an empty cell leaves no space to split on.
3. **Type it.** For a table of a dozen cells, typing from the scan and having a second person read it back leaves no grid for the software to get wrong.

Record in the index which route each table took. A table that was typed or rebuilt needs a closer check than one that converted as a grid.

## Captions, footnotes and units that belong with an extracted table

An extracted table needs its caption, its units, its footnotes and its key to abbreviations carried onto the worksheet, because the figures cannot be read correctly without them. The software puts those words outside the grid, with the rest of the document's text, and they are easy to leave behind.

A cell that says 4.2 means nothing until you know it is milligrams per kilogram, measured in a sample taken on a stated date, against a limit shown in another column.

What to collect for every table:

| Item | Where it is printed | What goes wrong without it |
| --- | --- | --- |
| Caption | Over or under the table | Nobody can tell which table this is |
| Units line, such as "all results in µg/L" | Under the caption or in the header row | Figures compared across tables in different units |
| Scale note, such as "in thousands" | Under the caption | Every amount off by a factor of 1,000 |
| Footnotes keyed to cells | Under the table | A qualified value read as a plain one |
| Abbreviation key, such as "ND = not detected" | Under the table | Text cells mistaken for misreads |
| Source line | Under the table | No trail to the underlying data |
| "Continued" notices | Top or foot of the page | Joined pieces counted as separate tables |

### Footnote markers fused to numbers

A figure printed with a raised footnote marker, such as 12.4 followed by a small 1, can come out as 12.41. A marker letter can come out as 12.4a, which will not convert to a number, and that failure is the lucky case because it draws your eye. The digit case is silent.

Before converting any column to numbers, read the footnotes and note which markers the table uses. Then look down the column for values with one more decimal place than their neighbours. Move each marker into a Flag column beside the value, so the qualification is kept and the number is clean.

### Cells that are not numbers on purpose

Results tables contain entries such as "<0.5", "ND", "NA" and a dash. Each means something different, and the abbreviation key says what. Do not turn them into zero. Keep the printed entry in one column and put a number in the numeric column only where the page gives one.

### Units in header rows

Some tables put the unit in the header, as in "Depth (ft)", and some put a different unit on each row. Where the header spans two printed lines, the software may split it into two rows. Join them into one header row and keep the unit in the heading text.

Paste the caption into row 1 of the sheet, and put notes, keys and footnotes under the last row of the table with a blank row between. They then travel with the table wherever the sheet goes.

## Building an index of every table taken from the scanned PDF

Build the index as the first sheet of the workbook: one row per table, with the table's label, its caption, its pages in the full scan, its worksheet name, how it was extracted and what has been checked. It answers two questions a colleague will ask: is this everything, and can I rely on it?

Columns for the index:

| Column | Content |
| --- | --- |
| Label | The document's number, or your own for unlabelled tables |
| Caption | As printed |
| Scan pages | Pages of the full PDF, not the extract |
| Printed pages | The report's own page numbers, for citing |
| Sheet | The worksheet name |
| Rows by columns | Counted on the page, and counted on the sheet |
| Route | Converted, joined from pieces, rebuilt from text, or typed |
| Notes carried | Yes or no: units, footnotes, key |
| Checked | What was checked, by whom, on what date |
| Open points | Anything unresolved |

Three rows from the Marlow Street index:

| Label | Scan pages | Sheet | Rows by columns | Route | Checked |
| --- | --- | --- | --- | --- | --- |
| Table 3 | 44 to 46 | `T03 Soil metals` | 38 by 9, both | Joined from 3 pieces | Row count and all header units, RV, 8 Oct |
| Table 6 | 102 to 109 | `T06 Groundwater VOCs` | 212 by 14 on page, 211 on sheet | Joined from 8 pieces | Open: one row missing at the seam of pages 105 and 106 |
| Unnumbered A | 147 | `UA Sample log p147` | 12 by 5, both | Typed | Read back against the scan, RV and DM, 8 Oct |

### Closing the index

Before anyone uses the workbook, reconcile three counts: tables in the report's own list, tables you found, and rows in the index. Explain every difference in the index itself. For this report: 11 listed, 15 found, 15 indexed, with the four extra identified as three appendix tables and one unlabelled log.

Then decide what "checked" means for this matter and write it over the index. Row and column counts catch structural faults. They do not catch a wrong digit. Tables whose figures will be quoted or relied on need their cells read against the scan, and the method for that is in the post on [why OCR output is full of errors](https://www.schemalaw.com/blog/why-is-ocr-output-full-of-errors).

Not every table needs to leave the document. A definitions table or a short schedule that someone will edit as part of the text is better kept in a Word conversion; see the guide to [scanned PDF to Word with tables that stay tables](https://www.schemalaw.com/blog/scanned-pdf-to-word-with-tables). The [formats section of the homepage](https://www.schemalaw.com/#formats) lists what each export contains.

## Try it on a real document

Upload a scanned PDF and export it as Word, a searchable PDF or plain text on the free plan. Your documents are never used to train an AI model. [Start free](https://www.schemalaw.com/api/auth/google)
