What PDF is
PDF describes a page: glyphs at coordinates, not rows and columns. A table in a PDF is a visual arrangement, not a data structure.
Reports, invoices, statements and anything sent to be read rather than processed.
What TOML is
TOML is a configuration format with explicit types and a table syntax, designed to be unambiguous where YAML is clever.
Rust and Python projects, and anything with a pyproject.toml or Cargo.toml.
What changes when you convert PDF to TOML
Every character in a text-based PDF carries its position on the page. Characters sharing a baseline are one row. Columns are found from the vertical strips no character ever occupies, which is why extraction works cleanly on a document laid out with spacing and badly on one laid out with ruled lines. A header repeated at the top of each page is detected and dropped rather than landing in the middle of the data.
Each row becomes an entry in an array of tables. Keys are sanitised to bare keys where possible and quoted where not.
What carries over from PDF to TOML
One property of the PDF has no home in TOML, and it is worth knowing which before you convert.
TOML wants a type for each column, and PDF does not record one, so each column is typed from what its values look like. A column of digits that should stay text - a zip code, a phone number, a leading-zero id - is the usual thing to check afterwards.
Anything visual in the PDF - weight, alignment, colour, column widths - has no counterpart in TOML and is dropped. The values are what survives.
This is the direction that recovers structure: PDF has no table in it to read, only an arrangement that looks like one, so the rows and columns are inferred rather than read.