If you've built any pipeline that ingests PDFs, you already know the demo is misleading.

You test on ten clean, well-formatted invoices. Extraction works perfectly. You ship it. Then invoice #47 arrives from a vendor who updated their template last quarter, and suddenly your "working" pipeline is silently returning garbage, or worse, returning incorrect but plausible-looking data that nobody notices until it causes a real problem downstream.

This is the default failure mode of almost every PDF extraction approach, and it's worth understanding why.

The core assumption almost everything makes

Most PDF parsing tools, whether you're using PyPDF, pdfplumber, Camelot, or even a lot of the "AI-powered" extraction tools, quietly assume the document's structure is stable. They're looking for a table in roughly the same place, a field label followed by a value in roughly the same layout, headers and footers in roughly the same positions.