Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Get a PDF into the model without blowing the context window or losing structure. Native PDF beats OCR-then-text for most cases; extract-then-summarize beats native for very long docs.
.claude/skills/archive228-pdf-ingestion/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -12% | 0% |
Three ways to feed a PDF to the model, in increasing order of preprocessing:
pdftotext / pypdf / equivalent, then send the text. Loses layout but cheap. Fine for prose-heavy docs where tables don't matter.| Doc shape | Path | |---|---| | <20 pages, layout matters (report, form, invoice) | Native | | <20 pages, pure prose (article, memo) | Text extraction | | 20-100 pages, mixed | Native, but chunk if context tight | | >100 pages | Extract → chunk → summarize | | Scanned PDF (no text layer) | OCR first (Tesseract or vision model), then treat as extracted text | | Tables are the point | Native — text extractors mangle tables | | Figures/diagrams are the point | Native + explicit "describe the figure on page N" prompt |
prompt-caching). Native PDFs are large — every uncached turn costs full input price on the whole doc.pdftotext reading order. Multi-column PDFs come out as interleaved lines. Use pdftotext -layout for column preservation, or pdftotext -raw for straight reading order — pick per doc, don't guess.pdftotext -q file.pdf - first — if text comes out, no OCR needed.If the PDF is a spec, extract it into PROMPT.md via spec-first — the agent should re-read prose, not re-scan the PDF, on every turn.
Other measured skills in the registry, with their headline benchmark lift.