# How to Install pdf‑inspector: Complete Guide for Rust, Python, Node.js, and WebAssembly

> Install pdf-inspector for Rust, Python, or Node.js. Our guide provides simple installation steps for each platform, leveraging pre-built binaries from the core Rust library.

- Repository: [Firecrawl/pdf-inspector](https://github.com/firecrawl/pdf-inspector)
- Tags: getting-started
- Published: 2026-08-31

---

**Install pdf‑inspector via `cargo install pdf‑inspector` for Rust, `pip install pdf‑inspector` for Python, or `npm install @firecrawl/pdf‑inspector` for Node.js — each ships pre‑built binaries that expose the same core Rust library.**

The **pdf‑inspector** library from [firecrawl/pdf‑inspector](https://github.com/firecrawl/pdf-inspector) is a Rust‑based PDF processor that converts documents to structured Markdown with position‑aware text extraction. It offers bindings for multiple languages and environments, all built from the central [[`src/lib.rs`](https://github.com/firecrawl/pdf-inspector/blob/main/src/lib.rs)](https://github.com/firecrawl/pdf-inspector/blob/main/src/lib.rs) module. This guide covers every installation path with precise commands, prerequisites, and verification steps.

---

## Install pdf‑inspector for Rust (Library + CLI)

The Rust distribution provides both reusable library components and standalone command‑line tools.

### Prerequisites

- **Rust toolchain** installed via [rustup.rs](https://rustup.rs)

### Installation

```bash
cargo install pdf-inspector

```

This downloads and compiles the crate from [crates.io](https://crates.io/crates/pdf-inspector), installing two binaries:

- **`pdf2md`** — converts PDF files to Markdown
- **`detect-pdf`** — classifies PDF type without full extraction

### Library Usage

Add to your [`Cargo.toml`](https://github.com/firecrawl/pdf-inspector/blob/main/Cargo.toml):

```toml
[dependencies]
pdf-inspector = "0.2"

```

The public API entry points—including `process_pdf` and `detect_pdf`—are defined in [[`src/lib.rs`](https://github.com/firecrawl/pdf-inspector/blob/main/src/lib.rs)](https://github.com/firecrawl/pdf-inspector/blob/main/src/lib.rs).

---

## Install pdf‑inspector for Python

Python users receive pre‑built wheels with no compile step required on supported platforms.

### Prerequisites

- **Python ≥ 3.8**
- **pip** (standard package manager)

### Installation

```bash
pip install pdf-inspector

```

Wheels are built with [maturin](https://github.com/PyO3/maturin) and bundle compiled Rust code plus `pdf_inspector.pyi` type stubs. For detailed usage, see [[`docs/python.md`](https://github.com/firecrawl/pdf-inspector/blob/main/docs/python.md)](https://github.com/firecrawl/pdf-inspector/blob/main/docs/python.md).

### Build from Source (Optional)

For custom builds or unsupported platforms:

```bash
pip install maturin
git clone https://github.com/firecrawl/pdf-inspector.git
cd pdf-inspector
maturin develop --release

```

### Quick Verification

```python
import pdf_inspector

result = pdf_inspector.process_pdf("report.pdf")
print(result.pdf_type)         # e.g., "text_based"

print(result.markdown[:200])   # preview generated Markdown

```

---

## Install pdf‑inspector for Node.js

The npm package provides a native add‑on built with [napi‑rs](https://github.com/napi-rs/napi-rs).

### Prerequisites

- **Node.js ≥ 14**
- **npm** or **yarn**

### Installation

```bash
npm install @firecrawl/pdf-inspector

```

The package includes pre‑built binaries for common operating systems and architectures. On unsupported platforms, the post‑install script automatically compiles the native add‑on using your local Rust toolchain.

### Usage Example

```javascript
import { readFileSync } from 'fs';
import { processPdf } from '@firecrawl/pdf-inspector';

const pdf = readFileSync('invoice.pdf');
const result = processPdf(pdf);
console.log(result.pdfType);    // "TextBased", "Scanned", etc.
console.log(result.markdown);

```

For complete Node.js documentation, refer to [[`napi/README.md`](https://github.com/firecrawl/pdf-inspector/blob/main/napi/README.md)](https://github.com/firecrawl/pdf-inspector/blob/main/napi/README.md).

---

## Install pdf‑inspector for WebAssembly (Browser)

The WebAssembly build runs entirely in the browser with no server dependencies.

### Prerequisites

- **npm** + **Node.js** (for bundling)
- A WASM‑compatible loader (modern browsers support this natively)

### Installation

```bash
npm install @firecrawl/pdf-inspector-wasm

```

The WASM build embeds all required CMaps, eliminating network requests during PDF parsing. See [[`wasm/README.md`](https://github.com/firecrawl/pdf-inspector/blob/main/wasm/README.md)](https://github.com/firecrawl/pdf-inspector/blob/main/wasm/README.md) for advanced configuration.

### Browser Integration

```javascript
import init, { processPdf } from '@firecrawl/pdf-inspector-wasm';

await init();  // loads and initializes the WASM module

const response = await fetch('paper.pdf');
const array = new Uint8Array(await response.arrayBuffer());
const output = processPdf(array);

console.log(output.pdfType, output.markdown);

```

---

## Install pdf‑inspector from Source (All Targets)

Building from source provides maximum flexibility for development or unsupported platforms.

### Prerequisites

- **Rust toolchain** (`rustup`, `cargo`)
- **Optional:** Python with `pip install maturin` (for Python bindings)

### Build Commands

```bash
git clone https://github.com/firecrawl/pdf-inspector.git
cd pdf-inspector
cargo build --release

```

This compiles:

- Core library and CLI binaries (`pdf2md`, `detect-pdf`)
- Python bindings (if maturin is available)
- Node.js native add‑on infrastructure
- WebAssembly target files

The compiled artifacts appear in `target/release/`.

---

## CLI Quick Reference

After any Rust‑based installation, these commands are immediately available:

| Command | Purpose | Example |
|---------|---------|---------|
| `pdf2md` | Convert PDF to Markdown | `pdf2md my_file.pdf` → creates [`my_file.md`](https://github.com/firecrawl/pdf-inspector/blob/main/my_file.md) |
| `detect-pdf` | Classify PDF type only | `detect-pdf my_file.pdf` → JSON output |

The `pdf2md` driver is implemented in [[`src/bin/pdf2md.rs`](https://github.com/firecrawl/pdf-inspector/blob/main/src/bin/pdf2md.rs)](https://github.com/firecrawl/pdf-inspector/blob/main/src/bin/pdf2md.rs).

---

## Architecture Overview

Understanding the internal structure helps troubleshoot installation issues and optimize usage:

```

PDF bytes
   │
   ├─► detector (src/detector.rs) → PdfType classification
   │
   └─► extractor (src/extractor/)
         ├─ fonts, content_stream, xobjects, links, layout
         │
         ├─► tables → Markdown tables
         │
         └─► markdown (src/markdown/) → final output

```

All language bindings expose this same pipeline. The modular design allows selective use—for example, fast classification via `detect_pdf` without full extraction overhead.

---

## Summary

- **`cargo install pdf-inspector`** — Rust CLI tools and library crate
- **`pip install pdf-inspector`** — Python wheels with pre‑built binaries
- **`npm install @firecrawl/pdf-inspector`** — Node.js native add‑on
- **`npm install @firecrawl/pdf-inspector-wasm`** — Browser WebAssembly package
- **Source build** — `git clone` + `cargo build --release` for full control

Each distribution shares the core [[`src/lib.rs`](https://github.com/firecrawl/pdf-inspector/blob/main/src/lib.rs)](https://github.com/firecrawl/pdf-inspector/blob/main/src/lib.rs) implementation, ensuring consistent PDF type detection, position‑aware extraction, and Markdown generation across all environments.

---

## Frequently Asked Questions

### Do I need Rust installed to use pdf‑inspector in Python or Node.js?

No. **Pre‑built binaries** are provided for Python (via pip) and Node.js (via npm) on common platforms. Rust is only required if you build from source or your platform lacks a pre‑compiled wheel/add‑on.

### Can I install pdf‑inspector on Windows?

Yes. **All installation methods support Windows**: `cargo install` works with Windows Rust toolchains; Python wheels include Windows builds; the npm package provides Windows native add‑ons; and WebAssembly runs in any modern browser.

### How do I verify my installation succeeded?

Run the appropriate quick check for your environment:

- **Rust:** `pdf2md --version` or `cargo run --release --bin pdf2md`
- **Python:** `python -c "import pdf_inspector; print(pdf_inspector.__version__)"`
- **Node.js:** `node -e "console.log(require('@firecrawl/pdf-inspector'))"`
- **WASM:** Import the module in a browser console and confirm `init()` resolves

### What if the npm post‑install script fails to compile?

Ensure your **Rust toolchain is installed** and accessible in your `PATH`. The post‑install fallback requires `cargo` to build the native add‑on for unsupported architectures. Alternatively, use the **WebAssembly package** which requires no native compilation.