Skip to main content

How is this different from document QA benchmarks?

Document QA benchmarks usually measure accuracy on a fixed corpus. PDF Hell is a procedural stress test for named ingestion and rendering failure modes. Use both: a domain benchmark for representative quality and PDF Hell for targeted failure discovery.

Why not use an LLM judge?

Each generator chooses the expected value before drawing the PDF. The scorer checks that procedural answer directly, so the same class of model being tested does not decide correctness. Optional explanations may use an evaluator, but they are outside the primary scoring path.

What does fell_for_trap mean?

A case can record known lure answers, such as the invisible OCR amount. Matching one marks the failure as trap-specific. It remains a diagnostic field; the procedural expected answer determines correctness.

Can public generators be memorized?

The generators and registry are public for auditability. A fixed public suite can be contaminated, so use fresh deterministic seeds for private follow-up testing and disclose them when publishing. Memorizing one seed does not prove the family is solved.

Which suite should I run?

  • smoke: 3 cases, wiring only.
  • mini: 30 cases from the original three families.
  • mini-v4-sample: 170 cases across all 17 current families; practical routine comparison.
  • mini-v4: 510 cases across all 17 families; greater per-family precision.
The intermediate mini-v2 and mini-v3 registries remain available for historical reproduction. Always report the suite hash, not only its nickname.

What is pixels-only mode?

Normal PDF APIs may combine text extraction and rendering in an opaque provider pipeline. --pixels rasterizes locally and sends only images, isolating visual reading more closely. It requires pdfhell[pixels]; the default is 150 DPI. PDF and pixels-only scores are separate experiments and should not be pooled.

Are all historical leaderboard claims still valid?

No. An earlier Claude Opus result was produced by deprecated-temperature API errors that were silently counted as wrong answers. The repository’s correction notice supersedes the affected 0.4/0.5 README and confirmation claims. Current runs distinguish API errors from wrong answers. Two Unicode families also changed in 0.6.1: zero_width_space_split and unicode_confusable_total previously could render visible replacement boxes. Only results generated with the redesigned families support current invisible/confusable-character claims.

How do I publish a defensible result?

Include the package version, suite version and hash, model identifier, date, modality, DPI/rasterizer build when applicable, case count, pass rate with uncertainty, API error/refusal rates, and the raw JSON. Keep the audit pack when the result may be used in procurement or compliance decisions.

Can I add a trap?

Yes. A useful generator is deterministic, code-grounded, answerable, free of forbidden-answer leakage, and meaningfully discriminative on fresh seeds. The optional pdfhell[research] workflow proposes candidates, runs validation gates, reports results, and creates a promotion plan; a human still decides what enters a released suite.

Where should I look for the latest numbers?

Use the live leaderboard and raw published runs for measurements. These docs describe the methodology and current 0.6.1 interface without freezing volatile rankings into the SDK documentation.