OpenRouter tutorial: extracting tables from PDFs with an LLM
An OpenRouter tutorial sends a PDF plus a strict JSON schema to pull tables into rows with explicit data types. Field descriptions handle negative numbers in parentheses, footnotes and merged cells. Across 5 test PDFs, 2 of them scans, models that read the PDF directly extracted all 644 cells correctly, a result the post limits to this test set.
Why it matters: It pairs a strict row schema with field-level cleanup rules and catches dropped rows in otherwise normal responses using empty-result and truncation checks.