ORIGINAL LAB · ENGINE-DERIVED RESULTS

16 PDF extraction decisions measured against exact fixture bytes

Stable digital tables and safe exports are checked beside encryption, scans, unsupported filters, rotation, merged geometry, hidden optional content, opaque overlays and incremental revisions. Encoded PDF names and closepath fills must not bypass suppression.

Measured result

Worked synthetic benchmark; not a live customer result. Every PDF is generated from checked-in fixture code and processed at the fixed clock 2026-09-19T02:46:21.216Z. No OCR, remote upload, decryption, accounting or universal PDF support claim is made.

16 / 16expected decisions matched
5bounded PASS scenarios
1 + 10BLOCK + INDETERMINATE
0false PASS or sensitive-cell leaks

Engine source SHA-256:

4f791f450e9ea66db56d83f6f0270b4b70f423979bbd04b94cd8f96a0e0f303d

Fixture source SHA-256:

0db0abf3d1980822470e49cddeab62e3e8a75c16dd56b0a57b1bbe6adf3a1a60
Bar chart: five PASS, one BLOCK and ten INDETERMINATE scenarios matched; false PASS and sensitive-cell leaks are zero
Counts measure expected decision agreement only. They are not an accuracy percentage for arbitrary PDFs.

Scenario-by-scenario observations

ScenarioPolicyExpectedObservedEvidence
Stable digital tableAutomatic, page 1PASSPASS1 table; 3 data rows
Two-page documentAutomatic, pages 1-2PASSPASS2 tables; 6 data rows
Page 2 onlyAutomatic, page 2PASSPASSOnly page 2 enters artifacts and policy hash
Irregular anchorsManual boundaries 200,400PASSPASS1 table; 3 data rows
Formula and HTML-like stringsAutomaticPASSPASSCSV/XLSX strings neutralized; raw values remain reviewable
Encrypted PDFAutomaticBLOCKBLOCKencrypted_pdf_not_decrypted
Image-only scanAutomaticINDETERMINATEINDETERMINATENo OCR; image/XObject coverage warning
Unsupported LZW streamAutomaticINDETERMINATEINDETERMINATEContent stream decode incomplete
Rotated coordinate tableAutomaticINDETERMINATEINDETERMINATECandidate rows exist, but rotation prevents PASS
Merged-like spanning textManual boundaries 200,400INDETERMINATEINDETERMINATEText crosses separator and sparse structure is visible
Hidden optional-content tableOCG is OFF in the catalogINDETERMINATEINDETERMINATEVisibility is unresolved; candidate cells are suppressed
Opaque rectangle over table textFilled overlay follows textINDETERMINATEINDETERMINATECovered candidate cells are suppressed
Incremental page revisionActive xref requires /Prev resolutionINDETERMINATEINDETERMINATEStale and active revision cells are not exported
Hex-escaped OCG names/OCPropert#69es and /T#79peINDETERMINATEINDETERMINATEPDF names are decoded before the visibility gate
Closepath opaque overlayre h fINDETERMINATEINDETERMINATECovered candidate cells are suppressed
Hex-escaped incremental key/Pr#65vINDETERMINATEINDETERMINATEStale revision cells remain suppressed

Method and reproducibility

  1. Generate valid bounded PDF byte streams from the public fixture builders.
  2. Run the production-candidate engine with a fixed clock, exact source identity and extraction policy.
  3. Compare expected and observed verdicts, table counts, selected pages and coverage reasons.
  4. Require hidden OCG, covered and incremental-revision candidate values to be absent from every artifact.
  5. Recompute exact SHA-256 for JSON, CSV, XLSX, SVG, Markdown and the receipt.
  6. Open representative fixture files with Poppler pdfinfo, render pages with pdftoppm, and compare rendered layout separately from parser output.
  7. Repeat fixed-clock runs and require byte-identical artifacts.

Reproduce from the source checkout with the configured maintainer Node, spreadsheet and browser dependencies. Serve app/ at http://127.0.0.1:8767 for the separate browser check. The additional export and browser checks are not part of the 16-scenario count.

FASTTOOL_RELEASE_CLOCK=2026-09-19T02:46:21.216Z FASTTOOL_REPORT_PATH=reports/pdf_table_benchmark_build_20260919b.json node scripts/build_pdf_table_benchmark_20260804.mjs
node scripts/pdf_table_rectangular_export_20260919.mjs
FASTTOOL_BASE_URL=http://127.0.0.1:8767 node scripts/pdf_table_independent_redteam_20260919b.mjs

Download exact benchmark evidence

Machine results

benchmark-results.json

c7f0fe882bba5651dfb3b0e094cdb02565643c2b31833c17c7ee9b53a9fd51fa

Formula-safe ledger

benchmark-results.csv

2a881f902086c107b50db0e6f3d78fbd6df753caef9403c03125004a2a88fd40

Methodology

benchmark-methodology.md

5929749bbd32ac1bf05364898937a063e877a8ef7bcf855b7bf65729ebf381f0

Coverage visual

benchmark-coverage.svg

0fa1df095411c33aeb6cb87b517431f73b10274f07365aa7dc17b8d22e5839ae

Receipt

benchmark-receipt.json

322282b92e55675941141ecfa91ec208fdf88d562ef3258ec49a058b0fa32bd3

Receipt core: ce359f0020119604fc4af7672e5c1dfa71d00866724e9347783b4c915f56427b

What the benchmark does and does not establish

Established for these bytes

  • All sixteen expected decisions matched.
  • Selected-page and manual-boundary policies changed the receipt.
  • Rotation, merged-like, hidden, covered and stale revision candidates did not become false PASS.
  • Encoded names and closepath fills did not bypass the same suppression gate.
  • Hidden, covered and stale candidate cell markers were absent from every artifact.
  • Every produced artifact was hashable as exact bytes.

Not established

  • No universal PDF coverage, OCR or decryption.
  • No accounting, legal or semantic correctness.
  • No promise that a visual table maps cleanly to PDF text operators.
  • No safety claim after a source, policy, engine or artifact changes.

Sources and corrections

Reviewed 4 August 2026 against PDF / ISO 32000 resources, RFC 4180, OWASP CSV Injection and ECMA-376.

Report a fixture mismatch, stale hash, unsafe export or unsupported claim to contact@fasttool.app. Reference the scenario ID and exact source hash; do not attach confidential PDFs.