Camera and photo metadata
Pulls EXIF, IPTC, XMP, and color-profile data, the camera, exposure, GPS, captions, and copyright, from JPEG, TIFF, PNG, WebP, HEIF, AVIF, and more.
Agent Extraction· Sift
Sift reads the hidden story inside a file: the camera and GPS behind a photo, the author and structure behind a PDF, the text and images locked inside a document, in a fraction of the time it takes to launch a traditional tool. It is a clean-room rewrite in Rust that does the work of two entire legacy toolchains, and slots natively into five programming languages.
Why Sift
The tools for reading file metadata and pulling text or images out of PDFs are a patchwork of aging command-line programs that you install separately, launch as a new process for every file, and parse back from brittle text output. They are platform-specific, slow at scale, and cannot be embedded in an application.
Sift collapses all of that into one fast, native library any program can call directly, with no external binaries to ship or shell out to.
Capabilities
Pulls EXIF, IPTC, XMP, and color-profile data, the camera, exposure, GPS, captions, and copyright, from JPEG, TIFF, PNG, WebP, HEIF, AVIF, and more.
Decodes the vendor-specific data Canon, Nikon, Sony, Fujifilm, and Apple bury in their files, with a built-in lens-identification database.
Reads ten RAW formats, from Canon and Nikon to Sony, Adobe DNG, and Fujifilm.
Reconstructs reading order, columns, words, and lines, handling multi-column pages, right-to-left scripts, and vertical CJK text, with correct Unicode mapping. Replaces pdftotext.
Extracts embedded images including inline images and masks, with deduplication across pages. Replaces pdfimages.
Title, author, page count and sizes, version, encryption, tagged and linearized status, and PDF/A and PDF/X conformance. Replaces pdfinfo.
Authenticates user or owner passwords across every standard encryption scheme and reports the permissions the document allows.
Extracts interactive form fields, annotation types, and the tagged structure tree of headings, tables, and alt-text used for accessibility.
Built different
Sift does in a single embeddable library what used to need ExifTool plus three separate Poppler programs, with nothing to install or shell out to.
Written from the published standards, not ported from the restrictively-licensed originals, so it is freely embeddable in commercial products, unlike the tools it replaces.
Built in Rust, eliminating the buffer-overflow bugs that have produced real security holes in image and PDF parsers. The format parsers contain no unsafe code.
Instead of a full rendering engine, Sift reads only what is needed for text and metadata, using memory-mapped, zero-copy reads so only the bytes it touches are ever loaded.
Recovers gracefully from truncated files, corrupt cross-reference tables, and circular references, and is continuously fuzz-tested across every format.
The same core ships as idiomatic packages for Rust, .NET, Java, Python, and Node.js, plus a C interface, not thin wrappers around a CLI.
By the numbers
Agent-first
When an agent receives an uploaded file, it needs to know what the file is and what is inside before it can act, and it needs that answer in microseconds, not after spinning up a subprocess. Sift gives an agent an instant, structured read of any image or PDF: the metadata, the text, the embedded images, the location, the document structure, all from one in-process call with no external tools to orchestrate, returning typed data it can reason over directly.
See HQ running in your own Slack or Teams, on the operating system we built for agents.