The Empty Quadrant: A Three-Part Series on the Design Space of Frontend PDF Extraction
TLDR: A user asked: "what makes your pipeline any different from any other frontend extraction approach?" The honest answer is the math is borrowed. The lattice reconstruction is the same lattice every server-side tool uses. KD-tree proximity is textbook. Y-band paragraph clustering is from a 1996 paper. What's different is the quadrant of the design space the pipeline occupies, and the architectural commitments it took to land there. This series maps that space across three posts.
Repo: tools/pdf-processor
The series
Part 1: Mapping the 2x2 of frontend PDF extraction Two axes describe almost every PDF extraction project: deterministic vs ML-based, visual fidelity vs semantic structure. Four cells. Three are crowded. One is empty. This post catalogs the four occupied cells (pdf2htmlEX, tesseract.js, transformers.js + layout models, and the text-only Y-clustering camp) and names what each one trades away.
Part 2: Eight architectural moves that fill the empty cell The deterministic-structural-frontend cell asks for a tool that runs in the browser, ships no ML weights, reads the operator list (not just text), and outputs semantic structure. Filling it required eight specific architectural moves: CTM-baked vector segments, region-typed pre-classification, underline-vs-border discrimination, topological cell-merge inference, nearest-cell snap, worker isolation, per-page streaming, and VisualGridMapper integration.
Part 3: Borrowed math, original niches The lattice algorithm, the Y-band clustering, the KD-tree, the XY-cut: all borrowed. What's new is the composition. This post is honest about which pieces are textbook and which are unusual in the niche, then steps back to the broader lesson: constraints are commitments, and the intersection of constraints is where new niches live.
The full pipeline is open source. If you find a fifth camp we missed, or if you've built something that fills the empty quadrant differently, the issue tracker is open.