Document & Image Processing

Truespar Sift

Extract metadata, text, and images from any document. A clean-room replacement for ExifTool and Poppler, built in Rust with bindings for C#, Java, Python, Node.js, and C/C++.

Every Format

JPEG, PNG, TIFF, WebP, HEIF, GIF, BMP, PDF, RAW (CR2, NEF, ARW, DNG, ORF, RW2, PEF, RAF, SRW), QuickTime (MOV/MP4), and ICC profiles. One library handles them all.

Deep Extraction

EXIF, XMP, IPTC, GPS coordinates, MakerNotes from every major camera vendor. PDF text with layout preservation, form fields, annotations, structure trees, and embedded image extraction.

Zero-Copy Performance

Memory-mapped file access, passthrough image extraction, and minimal allocations. Built in Rust with no garbage collector. Processes large files without loading them entirely into memory.

Multi-Language Bindings

Sift ships idiomatic bindings for every major ecosystem. The core library compiles to a native shared library with a C ABI. Each binding wraps this with the conventions developers expect in their language.

EcosystemPackageBinding
RustsiftNative
C# / .NETSift (NuGet)P/Invoke + SafeHandles
Javaio.truespar:siftJNI
Pythonsift (PyPI)PyO3
Node.js@truespar/siftNAPI-RS
C / C++sift.hC ABI

Why Not ExifTool?

ExifTool is a Perl script that has grown over 20 years. It works, but it carries the weight of that history: eval-based value conversions, a single-threaded architecture, and GPL licensing that restricts how it can be embedded in commercial products.

Sift is a clean-room implementation written from specifications, not from ExifTool source. It is MIT/Apache-2.0 licensed, supports the same tag coverage, and can be embedded directly into any application as a native library.