⚡ RasgaPDF
The Blazing-Fast 2D Spatial PDF Parser powered by Pure Rust.
Extract exact physical coordinates (Raw X/Y) or structured blocks & tables at native hardware speeds.
Live Gradio Demo • Two Modes • CLI Tool • Quickstart • Architecture • Spatial Schema
🎯 The Philosophy: Pure Spatial Parsing
Most PDF extraction tools make fragile guesses: they flatten multi-column layouts into corrupted text streams, mangle tables, and strip away 2D positional geometry.
RasgaPDF does one thing with uncompromising precision:
It returns the exact 2D physical spatial geometry of the PDF.
- Bounding Boxes Everywhere: Every character, word span, line, block, and table has exact coordinates
[x0, y0, x1, y1]. - Zero Lossy Heuristics: No broken markdown assumptions. Downstream LLMs, RAG pipelines, or vision-language models receive the true physical layout.
- Microsecond Rayon Parallelism: Multi-threaded page processing in pure Rust utilizing AVX2/AVX-512 SIMD.
- Polyglot First: Native C-ABI FFI bindings for Python, Node.js, Go, and C# (.NET).
⚡ Two Extraction Modes
RasgaPDF offers two distinct modes for different engineering needs:
⚡ Mode 1: Flat Physical Coordinates (Raw X/Y)
The fastest, most direct extraction possible. Returns an unnested list of physical 2D coordinates for every text span on the page, with zero block or table overhead:
- Latency: ~3 to 8 ms per page
- Supported Formats: Flat JSON, Formatted Text, TSV, or CSV
- Best For: Spatial RAG, 2D visualizers, vector indexing, OCR alignment, Unix pipelines with
awk/grep.
[Page 1] (X0: 50.00, Y0: 67.00, X1: 244.00, Y1: 83.00) [12.0pt] The Revolution of Artificial Intelligence
[Page 1] (X0: 50.00, Y0: 103.00, X1: 478.00, Y1: 119.00) [12.0pt] Artificial Intelligence (AI) has transformed...
🎯 Mode 2: Hierarchical Structured Document
Reconstructs the visual hierarchy into visual paragraphs (text_blocks), text lines (lines), spans, and auto-detects matrix tables via horizontal column projection:
- Latency: ~8 to 15 ms per page
- Output: Hierarchical tree
SpatialDocument->pages->text_blocks->lines->tables.
⚡ Performance Benchmark
Measured on Intel Core i7-1365U (10 Cores / 12 Threads, AVX2):
| Library / Tool | Language | Single Page | 50 Pages | Memory Footprint | Output Type |
|---|---|---|---|---|---|
| ⚡ RasgaPDF (Raw X/Y) | Rust (Native) | 7.7 ms | 95 ms | ~14 MB | Flat Raw Coordinates |
| 🚀 RasgaPDF (Structured) | Rust (Native) | 8.5 ms | 142 ms | ~18 MB | Spatial Blocks & Tables |
PyMuPDF (fitz) |
C / Python | 28.0 ms | 620 ms | ~45 MB | Text / Pixmap |
pdfplumber |
Python | 410.0 ms | 9,800 ms | ~140 MB | Python dicts |
pypdf |
Python | 95.0 ms | 2,100 ms | ~85 MB | Flat text string |
| Apache Tika | Java | 650.0 ms | 12,400 ms | ~320 MB | XHTML |
💻 Standalone CLI Tool
Install or build the standalone CLI binary:
# ⚡ MODE 1: Raw Physical Coordinates (Raw X/Y)
|
# 🎯 MODE 2: Hierarchical Structured Document
🚀 Polyglot Quickstart
🦀 Rust
Add to your Cargo.toml:
[]
= "0.1.1"
use ;
🐍 Python
# ⚡ Mode 1: Raw Physical Coordinates
=
# 🎯 Mode 2: Hierarchical Structured Document
=
🟢 Node.js
const = require;
// ⚡ Mode 1: Raw Physical Coordinates
const raw = ;
console.log;
// 🎯 Mode 2: Hierarchical Structured Document
const doc = ;
console.log;
🔵 Go
package main
import (
"fmt"
"github.com/messiasmartins/rasgapdf/bindings/go"
)
func main()
🟣 C# / .NET 8
using RasgaPdf;
// ⚡ Mode 1: Raw Physical Coordinates
var raw = SpatialPdf.ParseRaw("document.pdf");
Console.WriteLine($"Raw: {raw.TotalSpans} spans in {raw.ParseTimeMs:F2} ms");
// 🎯 Mode 2: Hierarchical Structured Document
var doc = SpatialPdf.Parse("document.pdf");
Console.WriteLine($"Structured: {doc.TotalPages} pages");
🎨 Interactive Gradio Demo
We provide an interactive visual spatial explorer built with Gradio:
Open http://localhost:7860 to:
- Inspect the Responsive Physical Coordinates Table (Raw X/Y).
- Read and instantly copy the Pure Plain Text Stream & Coordinates Dump.
- Visualize translucent 2D bounding boxes overlaid onto the PDF page.
- Analyze detected tables rendered in interactive DataFrames.
- Export raw or structured JSON geometries.
🤝 Contributing & Community
Contributions are what make the open-source community thrive!
- Read our Contributing Guide to get started.
- Adhere to our Code of Conduct.
📄 License
RasgaPDF is licensed under the MIT License.
Copyright (c) 2026 Messias Martins.