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 Protobuf Schema is
A proto3 message definition with numbered fields.
gRPC services and anything using Protocol Buffers.
What changes when you convert PDF to Protobuf Schema
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.
Field numbers are assigned in column order starting at one. Types are inferred from the values.
What carries over from PDF to Protobuf Schema
One property of the PDF has no home in Protocol Buffers, and it is worth knowing which before you convert.
Protocol Buffers 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 Protocol Buffers and is dropped. The values are what survives.
The result can be read a record at a time, and appended to by adding to the end of it. That is worth having for a table too large to hold in memory, and it means a Protocol Buffers file that is cut off part way through still gives you every record before the cut.
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.