Tables are where most of the useful data in a PDF lives: invoice line items, bank statement transactions, price lists, lab results, shipping manifests. They are also the part that copy-and-paste and basic converters get wrong. This guide explains why, and walks through a repeatable way to get tables out as Excel or JSON.
Why PDF tables are hard to extract
A PDF does not store a table. It stores text fragments at positions on a page, plus lines that happen to be drawn around them. A converter has to guess which fragments belong to which row and column. The guess breaks when:
- a cell wraps onto two lines, so one row looks like two;
- a table continues onto the next page and repeats (or drops) its header;
- the document is a scan or a phone photo, so there is no text layer at all, only pixels;
- columns are aligned by eye rather than by ruled lines;
- stamps, signatures or handwriting overlap the cells.
Scans are the hardest case. Traditional OCR turns pixels into lines of text, but it reads text, not layout, so the table structure still has to be rebuilt afterwards.
The approach that holds up: read the page as an image, fill a schema
HussleBook uses a vision-language model (VLM). Instead of parsing the text layer, the model looks at each page as an image, the way a person does, so it sees rows, columns, merged cells and wrapped text in context. It then fills a schema you define, rather than returning free text.
A schema is just the list of fields you want, with a type for each. For a table you add a repeating table field and name its columns. For example, for invoice line items:
| Column | Type |
|---|---|
| Description | text |
| Quantity | number |
| Unit price | number |
| Amount | number |
Because the output must match the schema, every row comes back with the same columns, numbers come back as numbers, and a table that spans two pages comes back as one list of rows.
Step by step
- Upload two or three sample documents of the same kind. HussleBook proposes a schema from them, including the repeating table and its columns.
- Review the proposed fields. Rename columns, change types, and add short instructions where a column needs a rule (for example, “amount excluding tax”).
- Test on a real sample and compare the result with the page. Change and re-test until it is right. Any change to the fields or instructions requires another test before you finalize.
- Upload the batch. PDFs and images (JPG, PNG, WEBP, BMP) are supported. Extraction starts automatically, with progress and failures shown per document.
- Review flagged values. Each value keeps the page it was read from, so you can open the source and confirm or correct it.
- Export. Download an Excel workbook for spreadsheets, or JSON to keep nested tables intact for code and other tools.
Excel or JSON?
Choose Excel when the data is going into a spreadsheet. The workbook has a summary sheet with one row per document and a separate sheet for each repeating table, such as line items, keyed back to its document. Amounts come out as real numbers, so columns sum. It opens in Excel and Google Sheets. Choose JSON when the data feeds code or another tool, because JSON keeps the nesting (a header block with its line items) in one record.
Common questions
Can it extract tables from scanned PDFs?
Yes. The VLM reads the page image, so scans and photos work without a separate OCR step. Quality still depends on the source: very low-resolution or cut-off pages should be checked.
What about tables that continue across pages?
Define the table once in the schema. Rows from every page are returned in one list.
How do I know the numbers are right?
Every extracted value links back to its page. Review flagged fields first, then spot-check against the source before the data leaves the workspace.
How much does it cost?
Extraction uses credits. The free start includes 150 credits (≈ 60–75 pages). Paid plans start at $29.99 a month for 3,000 credits (≈ 1,200–1,500 pages). See pricing for details.
Read more about schema extraction.
Try HussleBook free with 150 credits (≈ 60–75 pages).