{"owner":"run-llama","repo":"liteparse","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# LiteParse - Agent Documentation\n\n> This file provides comprehensive context for AI coding agents working on this codebase.\n\n## Project Overview\n\n**LiteParse** is an open-source PDF parsing library written in **Rust**, focused on fast, lightweight document processing with spatial text extraction. It runs entirely locally with zero cloud dependencies by default.\n\nLanguage bindings are provided for **Node.js/TypeScript** (via napi-rs), **Python** (via PyO3), and **WebAssembly** (via wasm-bindgen).\n\n### Key Capabilities\n- **Spatial text extraction** with precise bounding boxes\n- **Flexible OCR** (built-in Tesseract or pluggable HTTP servers)\n- **Multi-format support** (PDFs, DOCX, XLSX, PPTX, images via conversion)\n- **Multi-language bindings**: Rust, Node.js/TypeScript, Python, Browser (WASM)\n- **CLI** available from all installation methods (`cargo`, `npm`, `pip`)\n\n## Directory Structure\n\n```\nliteparse/\n├── crates/\n│   ├── liteparse/          # Core Rust library + CLI binary\n│   │   └── src/\n│   │       ├── main.rs         # CLI entry point (clap)\n│   │       ├── lib.rs          # Library root\n│   │       ├── parser.rs       # LiteParse orchestrator\n│   │       ├── config.rs       # Configuration types and defaults\n│   │       ├── types.rs        # Core data types (ParseResult, TextItem, etc.)\n│   │       ├── projection.rs   # Spatial grid projection (layout reconstruction)\n│   │       ├── extract.rs      # Raw text extraction from PDFium\n│   │       ├── render.rs       # Page rendering / screenshots\n│   │       ├── conversion.rs   # Non-PDF format conversion (LibreOffice, image/resvg/usvg rust crates)\n│   │       ├── ocr_merge.rs    # Merging OCR results with native text\n│   │       ├── error.rs        # Error types\n│   │       ├── ocr/            # OCR engine implementations\n│   │       │   ├── mod.rs          # OcrEngine trait\n│   │       │   ├── tesseract.rs    # Built-in Tesseract OCR\n│   │       │   └── http_simple.rs  # HTTP OCR server client\n│   │       └── output/         # Output formatters\n│   │           ├── mod.rs\n│   │           ├── json.rs\n│   │           └── text.rs\n│   ├── liteparse-napi/     # Node.js bindings (napi-rs)\n│   ├── liteparse-python/   # Python bindings (PyO3 / maturin)\n│   ├── liteparse-wasm/     # WASM bindings (wasm-bindgen)\n│   ├── pdfium/             # Rust wrapper around PDFium C API\n│   └── pdfium-sys/         # PDFium FFI (C → Rust) bindings\n├── packages/\n│   ├── node/               # npm package: TS wrapper + CLI around native binary\n│   │   └── src/\n│   │       ├── lib.ts          # Public LiteParse class for Node.js\n│   │       ├── cli.ts          # CLI entry point (commander)\n│   │       └── native.ts       # Native binary loader\n│   ├── python/             # PyPI package: Python wrapper around native binary\n│   │   └── liteparse/\n│   │       ├── __init__.py\n│   │       ├── parser.py       # Public LiteParse class for Python\n│   │       ├── types.py        # Python dataclass types\n│   │       └── cli.py          # CLI entry point\n│   └── wasm/               # WASM npm package\n├── ocr/                    # Example OCR server implementations\n│   ├── easyocr/            # EasyOCR wrapper server\n│   └── paddleocr/          # PaddleOCR wrapper server\n└── Cargo.toml              # Workspace root\n```\n\n## Data Flow\n\n1. **Input**: File path or raw bytes received (any supported format)\n2. **Conversion** (if needed): Non-PDF formats converted to PDF via LibreOffice and image/resvg/usvg rust crates\n3. **PDF Loading**: PDFium extracts text items, images, metadata\n4. **OCR** (if enabled): Pages rendered and OCR'd for text-sparse areas\n5. **Grid Projection**: Spatial reconstruction of text layout using anchor system\n6. **Post-processing**: Bounding boxes, text cleanup\n7. **Output**: Formatted as JSON or plain text\n\n## Key Design Decisions\n\n### 1. Rust Core with Language Bindings\nThe core parsing logic is written in Rust for performance and safety. Language-specific crates expose the same API surface:\n- `liteparse-napi` → Node.js via napi-rs\n- `liteparse-python` → Python via PyO3/maturin\n- `liteparse-wasm` → Browser via wasm-bindgen\n\nEach binding crate is thin — it wraps the core `liteparse` crate's types and async API.\n\n### 2. OCR Engine Trait\nOCR functionality uses a trait-based abstraction (`OcrEngine`). This allows:\n- Built-in Tesseract (default, compiled in via `tesseract-rs`)\n- HTTP OCR server client for remote engines\n- Custom JS-side OCR in the WASM build via a callback interface\n\n### 3. Spatial Grid Projection\nThe most complex (and important!) part of the codebase (`crates/liteparse/src/projection.rs`). Uses:\n- **Anchor-based layout**: Tracks text alignment (left, right, center, floating)\n- **Forward anchors**: Carry alignment information between lines\n- **Column detection**: Identifies multi-column layouts\n- **Rotation handling**: Transforms 90°, 180°, 270° rotated text to correct reading order\n- **OCR merging**: Combines native PDF text with OCR results, preserving confidence scores and source flags in output\n\n### 4. Selective OCR\nOCR only runs on embedded images where text extraction failed, not the entire document. This balances accuracy with performance.\n\n### 5. Configuration\nUses a default-first approach where users only override what they need. See `crates/liteparse/src/config.rs` for defaults.\n\n### 6. Format Conversion via External Tools\nRather than implementing format parsers, LiteParse converts office file formats using system tools (LibreOffice) into PDF. This provides broad format support with minimal code.\n\n## Common Tasks\n\n### Adding a New Output Format\n1. Create new file in `crates/liteparse/src/output/`\n2. Add variant to `OutputFormat` enum in `config.rs`\n3. Wire it up in `main.rs` and binding crates\n\n### Adding a New OCR Engine\n1. Implement `OcrEngine` trait in `crates/liteparse/src/ocr/`\n2. Add initialization logic in `parser.rs`\n3. Add configuration options in `config.rs`\n\n### Modifying Text Extraction Logic\nKey files in `crates/liteparse/src/`:\n- `projection.rs` — Layout reconstruction (most complex)\n- `extract.rs` — Raw text item extraction from PDFium\n- `ocr_merge.rs` — Merging OCR and native text\n\n### Adding CLI Options\n1. Add field to `LiteParseConfig` in `config.rs`\n2. Add clap arg in `main.rs`\n3. Wire through `parser.rs`\n4. Expose in binding crates (`liteparse-napi`, `liteparse-python`, `liteparse-wasm`)\n\n### Adding / Modifying Node.js Wrapper\n- Edit `packages/node/src/lib.ts` for library API changes\n- Edit `packages/node/src/cli.ts` for CLI changes\n- The native binary interface is defined in `packages/node/src/native.ts`\n\n### Adding / Modifying Python Wrapper\n- Edit `packages/python/liteparse/parser.py` for library API changes\n- Types are in `packages/python/liteparse/types.py`\n- CLI entry point is `packages/python/liteparse/cli.py`\n\n## Key Dependencies\n\n| Dependency | Purpose |\n|------------|---------|\n| `pdfium` (C library) | PDF text extraction and rendering |\n| `tesseract-rs` | Built-in OCR engine (optional, via `tesseract` feature) |\n| `clap` | CLI framework |\n| `serde` / `serde_json` | Serialization |\n| `tokio` | Async runtime |\n| `reqwest` | HTTP client (for OCR server) |\n| `image` | Image processing (PNG encoding) |\n| `napi-rs` | Node.js native bindings |\n| `pyo3` / `maturin` | Python native bindings |\n| `wasm-bindgen` | WASM bindings |\n\n## Entry Points\n\n- **Rust CLI**: `crates/liteparse/src/main.rs`\n- **Rust Library**: `crates/liteparse/src/lib.rs` → `parser.rs` contains `LiteParse` struct\n- **Node.js**: `packages/node/src/lib.ts` exports `LiteParse` class\n- **Python**: `packages/python/liteparse/parser.py` exports `LiteParse` class\n- **WASM**: `crates/liteparse-wasm/` exposes `LiteParse` via wasm-bindgen\n\n## Related Documentation\n\n- [User-facing documentation](README.md)\n- [OCR API Specification](OCR_API_SPEC.md)\n- [WASM package README](packages/wasm/README.md)\n- [Python package README](packages/python/README.md)\n- [OCR server examples](ocr/README.md)\n"},"files":{"AGENTS.md":"# LiteParse - Agent Documentation\n\n> This file provides comprehensive context for AI coding agents working on this codebase.\n\n## Project Overview\n\n**LiteParse** is an open-source PDF parsing library written in **Rust**, focused on fast, lightweight document processing with spatial text extraction. It runs entirely locally with zero cloud dependencies by default.\n\nLanguage bindings are provided for **Node.js/TypeScript** (via napi-rs), **Python** (via PyO3), and **WebAssembly** (via wasm-bindgen).\n\n### Key Capabilities\n- **Spatial text extraction** with precise bounding boxes\n- **Flexible OCR** (built-in Tesseract or pluggable HTTP servers)\n- **Multi-format support** (PDFs, DOCX, XLSX, PPTX, images via conversion)\n- **Multi-language bindings**: Rust, Node.js/TypeScript, Python, Browser (WASM)\n- **CLI** available from all installation methods (`cargo`, `npm`, `pip`)\n\n## Directory Structure\n\n```\nliteparse/\n├── crates/\n│   ├── liteparse/          # Core Rust library + CLI binary\n│   │   └── src/\n│   │       ├── main.rs         # CLI entry point (clap)\n│   │       ├── lib.rs          # Library root\n│   │       ├── parser.rs       # LiteParse orchestrator\n│   │       ├── config.rs       # Configuration types and defaults\n│   │       ├── types.rs        # Core data types (ParseResult, TextItem, etc.)\n│   │       ├── projection.rs   # Spatial grid projection (layout reconstruction)\n│   │       ├── extract.rs      # Raw text extraction from PDFium\n│   │       ├── render.rs       # Page rendering / screenshots\n│   │       ├── conversion.rs   # Non-PDF format conversion (LibreOffice, image/resvg/usvg rust crates)\n│   │       ├── ocr_merge.rs    # Merging OCR results with native text\n│   │       ├── error.rs        # Error types\n│   │       ├── ocr/            # OCR engine implementations\n│   │       │   ├── mod.rs          # OcrEngine trait\n│   │       │   ├── tesseract.rs    # Built-in Tesseract OCR\n│   │       │   └── http_simple.rs  # HTTP OCR server client\n│   │       └── output/         # Output formatters\n│   │           ├── mod.rs\n│   │           ├── json.rs\n│   │           └── text.rs\n│   ├── liteparse-napi/     # Node.js bindings (napi-rs)\n│   ├── liteparse-python/   # Python bindings (PyO3 / maturin)\n│   ├── liteparse-wasm/     # WASM bindings (wasm-bindgen)\n│   ├── pdfium/             # Rust wrapper around PDFium C API\n│   └── pdfium-sys/         # PDFium FFI (C → Rust) bindings\n├── packages/\n│   ├── node/               # npm package: TS wrapper + CLI around native binary\n│   │   └── src/\n│   │       ├── lib.ts          # Public LiteParse class for Node.js\n│   │       ├── cli.ts          # CLI entry point (commander)\n│   │       └── native.ts       # Native binary loader\n│   ├── python/             # PyPI package: Python wrapper around native binary\n│   │   └── liteparse/\n│   │       ├── __init__.py\n│   │       ├── parser.py       # Public LiteParse class for Python\n│   │       ├── types.py        # Python dataclass types\n│   │       └── cli.py          # CLI entry point\n│   └── wasm/               # WASM npm package\n├── ocr/                    # Example OCR server implementations\n│   ├── easyocr/            # EasyOCR wrapper server\n│   └── paddleocr/          # PaddleOCR wrapper server\n└── Cargo.toml              # Workspace root\n```\n\n## Data Flow\n\n1. **Input**: File path or raw bytes received (any supported format)\n2. **Conversion** (if needed): Non-PDF formats converted to PDF via LibreOffice and image/resvg/usvg rust crates\n3. **PDF Loading**: PDFium extracts text items, images, metadata\n4. **OCR** (if enabled): Pages rendered and OCR'd for text-sparse areas\n5. **Grid Projection**: Spatial reconstruction of text layout using anchor system\n6. **Post-processing**: Bounding boxes, text cleanup\n7. **Output**: Formatted as JSON or plain text\n\n## Key Design Decisions\n\n### 1. Rust Core with Language Bindings\nThe core parsing logic is written in Rust for performance and safety. Language-specific crates expose the same API surface:\n- `liteparse-napi` → Node.js via napi-rs\n- `liteparse-python` → Python via PyO3/maturin\n- `liteparse-wasm` → Browser via wasm-bindgen\n\nEach binding crate is thin — it wraps the core `liteparse` crate's types and async API.\n\n### 2. OCR Engine Trait\nOCR functionality uses a trait-based abstraction (`OcrEngine`). This allows:\n- Built-in Tesseract (default, compiled in via `tesseract-rs`)\n- HTTP OCR server client for remote engines\n- Custom JS-side OCR in the WASM build via a callback interface\n\n### 3. Spatial Grid Projection\nThe most complex (and important!) part of the codebase (`crates/liteparse/src/projection.rs`). Uses:\n- **Anchor-based layout**: Tracks text alignment (left, right, center, floating)\n- **Forward anchors**: Carry alignment information between lines\n- **Column detection**: Identifies multi-column layouts\n- **Rotation handling**: Transforms 90°, 180°, 270° rotated text to correct reading order\n- **OCR merging**: Combines native PDF text with OCR results, preserving confidence scores and source flags in output\n\n### 4. Selective OCR\nOCR only runs on embedded images where text extraction failed, not the entire document. This balances accuracy with performance.\n\n### 5. Configuration\nUses a default-first approach where users only override what they need. See `crates/liteparse/src/config.rs` for defaults.\n\n### 6. Format Conversion via External Tools\nRather than implementing format parsers, LiteParse converts office file formats using system tools (LibreOffice) into PDF. This provides broad format support with minimal code.\n\n## Common Tasks\n\n### Adding a New Output Format\n1. Create new file in `crates/liteparse/src/output/`\n2. Add variant to `OutputFormat` enum in `config.rs`\n3. Wire it up in `main.rs` and binding crates\n\n### Adding a New OCR Engine\n1. Implement `OcrEngine` trait in `crates/liteparse/src/ocr/`\n2. Add initialization logic in `parser.rs`\n3. Add configuration options in `config.rs`\n\n### Modifying Text Extraction Logic\nKey files in `crates/liteparse/src/`:\n- `projection.rs` — Layout reconstruction (most complex)\n- `extract.rs` — Raw text item extraction from PDFium\n- `ocr_merge.rs` — Merging OCR and native text\n\n### Adding CLI Options\n1. Add field to `LiteParseConfig` in `config.rs`\n2. Add clap arg in `main.rs`\n3. Wire through `parser.rs`\n4. Expose in binding crates (`liteparse-napi`, `liteparse-python`, `liteparse-wasm`)\n\n### Adding / Modifying Node.js Wrapper\n- Edit `packages/node/src/lib.ts` for library API changes\n- Edit `packages/node/src/cli.ts` for CLI changes\n- The native binary interface is defined in `packages/node/src/native.ts`\n\n### Adding / Modifying Python Wrapper\n- Edit `packages/python/liteparse/parser.py` for library API changes\n- Types are in `packages/python/liteparse/types.py`\n- CLI entry point is `packages/python/liteparse/cli.py`\n\n## Key Dependencies\n\n| Dependency | Purpose |\n|------------|---------|\n| `pdfium` (C library) | PDF text extraction and rendering |\n| `tesseract-rs` | Built-in OCR engine (optional, via `tesseract` feature) |\n| `clap` | CLI framework |\n| `serde` / `serde_json` | Serialization |\n| `tokio` | Async runtime |\n| `reqwest` | HTTP client (for OCR server) |\n| `image` | Image processing (PNG encoding) |\n| `napi-rs` | Node.js native bindings |\n| `pyo3` / `maturin` | Python native bindings |\n| `wasm-bindgen` | WASM bindings |\n\n## Entry Points\n\n- **Rust CLI**: `crates/liteparse/src/main.rs`\n- **Rust Library**: `crates/liteparse/src/lib.rs` → `parser.rs` contains `LiteParse` struct\n- **Node.js**: `packages/node/src/lib.ts` exports `LiteParse` class\n- **Python**: `packages/python/liteparse/parser.py` exports `LiteParse` class\n- **WASM**: `crates/liteparse-wasm/` exposes `LiteParse` via wasm-bindgen\n\n## Related Documentation\n\n- [User-facing documentation](README.md)\n- [OCR API Specification](OCR_API_SPEC.md)\n- [WASM package README](packages/wasm/README.md)\n- [Python package README](packages/python/README.md)\n- [OCR server examples](ocr/README.md)\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# LiteParse - Agent Documentation\n\n> This file provides comprehensive context for AI coding agents working on this codebase.\n\n## Project Overview\n\n**LiteParse** is an open-source PDF parsing library written in **Rust**, focused on fast, lightweight document processing with spatial text extraction. It runs entirely locally with zero cloud dependencies by default.\n\nLanguage bindings are provided for **Node.js/TypeScript** (via napi-rs), **Python** (via PyO3), and **WebAssembly** (via wasm-bindgen).\n\n### Key Capabilities\n- **Spatial text extraction** with precise bounding boxes\n- **Flexible OCR** (built-in Tesseract or pluggable HTTP servers)\n- **Multi-format support** (PDFs, DOCX, XLSX, PPTX, images via conversion)\n- **Multi-language bindings**: Rust, Node.js/TypeScript, Python, Browser (WASM)\n- **CLI** available from all installation methods (`cargo`, `npm`, `pip`)\n\n## Directory Structure\n\n```\nliteparse/\n├── crates/\n│   ├── liteparse/          # Core Rust library + CLI binary\n│   │   └── src/\n│   │       ├── main.rs         # CLI entry point (clap)\n│   │       ├── lib.rs          # Library root\n│   │       ├── parser.rs       # LiteParse orchestrator\n│   │       ├── config.rs       # Configuration types and defaults\n│   │       ├── types.rs        # Core data types (ParseResult, TextItem, etc.)\n│   │       ├── projection.rs   # Spatial grid projection (layout reconstruction)\n│   │       ├── extract.rs      # Raw text extraction from PDFium\n│   │       ├── render.rs       # Page rendering / screenshots\n│   │       ├── conversion.rs   # Non-PDF format conversion (LibreOffice, image/resvg/usvg rust crates)\n│   │       ├── ocr_merge.rs    # Merging OCR results with native text\n│   │       ├── error.rs        # Error types\n│   │       ├── ocr/            # OCR engine implementations\n│   │       │   ├── mod.rs          # OcrEngine trait\n│   │       │   ├── tesseract.rs    # Built-in Tesseract OCR\n│   │       │   └── http_simple.rs  # HTTP OCR server client\n│   │       └── output/         # Output formatters\n│   │           ├── mod.rs\n│   │           ├── json.rs\n│   │           └── text.rs\n│   ├── liteparse-napi/     # Node.js bindings (napi-rs)\n│   ├── liteparse-python/   # Python bindings (PyO3 / maturin)\n│   ├── liteparse-wasm/     # WASM bindings (wasm-bindgen)\n│   ├── pdfium/             # Rust wrapper around PDFium C API\n│   └── pdfium-sys/         # PDFium FFI (C → Rust) bindings\n├── packages/\n│   ├── node/               # npm package: TS wrapper + CLI around native binary\n│   │   └── src/\n│   │       ├── lib.ts          # Public LiteParse class for Node.js\n│   │       ├── cli.ts          # CLI entry point (commander)\n│   │       └── native.ts       # Native binary loader\n│   ├── python/             # PyPI package: Python wrapper around native binary\n│   │   └── liteparse/\n│   │       ├── __init__.py\n│   │       ├── parser.py       # Public LiteParse class for Python\n│   │       ├── types.py        # Python dataclass types\n│   │       └── cli.py          # CLI entry point\n│   └── wasm/               # WASM npm package\n├── ocr/                    # Example OCR server implementations\n│   ├── easyocr/            # EasyOCR wrapper server\n│   └── paddleocr/          # PaddleOCR wrapper server\n└── Cargo.toml              # Workspace root\n```\n\n## Data Flow\n\n1. **Input**: File path or raw bytes received (any supported format)\n2. **Conversion** (if needed): Non-PDF formats converted to PDF via LibreOffice and image/resvg/usvg rust crates\n3. **PDF Loading**: PDFium extracts text items, images, metadata\n4. **OCR** (if enabled): Pages rendered and OCR'd for text-sparse areas\n5. **Grid Projection**: Spatial reconstruction of text layout using anchor system\n6. **Post-processing**: Bounding boxes, text cleanup\n7. **Output**: Formatted as JSON or plain text\n\n## Key Design Decisions\n\n### 1. Rust Core with Language Bindings\nThe core parsing logic is written in Rust for performance and safety. Language-specific crates expose the same API surface:\n- `liteparse-napi` → Node.js via napi-rs\n- `liteparse-python` → Python via PyO3/maturin\n- `liteparse-wasm` → Browser via wasm-bindgen\n\nEach binding crate is thin — it wraps the core `liteparse` crate's types and async API.\n\n### 2. OCR Engine Trait\nOCR functionality uses a trait-based abstraction (`OcrEngine`). This allows:\n- Built-in Tesseract (default, compiled in via `tesseract-rs`)\n- HTTP OCR server client for remote engines\n- Custom JS-side OCR in the WASM build via a callback interface\n\n### 3. Spatial Grid Projection\nThe most complex (and important!) part of the codebase (`crates/liteparse/src/projection.rs`). Uses:\n- **Anchor-based layout**: Tracks text alignment (left, right, center, floating)\n- **Forward anchors**: Carry alignment information between lines\n- **Column detection**: Identifies multi-column layouts\n- **Rotation handling**: Transforms 90°, 180°, 270° rotated text to correct reading order\n- **OCR merging**: Combines native PDF text with OCR results, preserving confidence scores and source flags in output\n\n### 4. Selective OCR\nOCR only runs on embedded images where text extraction failed, not the entire document. This balances accuracy with performance.\n\n### 5. Configuration\nUses a default-first approach where users only override what they need. See `crates/liteparse/src/config.rs` for defaults.\n\n### 6. Format Conversion via External Tools\nRather than implementing format parsers, LiteParse converts office file formats using system tools (LibreOffice) into PDF. This provides broad format support with minimal code.\n\n## Common Tasks\n\n### Adding a New Output Format\n1. Create new file in `crates/liteparse/src/output/`\n2. Add variant to `OutputFormat` enum in `config.rs`\n3. Wire it up in `main.rs` and binding crates\n\n### Adding a New OCR Engine\n1. Implement `OcrEngine` trait in `crates/liteparse/src/ocr/`\n2. Add initialization logic in `parser.rs`\n3. Add configuration options in `config.rs`\n\n### Modifying Text Extraction Logic\nKey files in `crates/liteparse/src/`:\n- `projection.rs` — Layout reconstruction (most complex)\n- `extract.rs` — Raw text item extraction from PDFium\n- `ocr_merge.rs` — Merging OCR and native text\n\n### Adding CLI Options\n1. Add field to `LiteParseConfig` in `config.rs`\n2. Add clap arg in `main.rs`\n3. Wire through `parser.rs`\n4. Expose in binding crates (`liteparse-napi`, `liteparse-python`, `liteparse-wasm`)\n\n### Adding / Modifying Node.js Wrapper\n- Edit `packages/node/src/lib.ts` for library API changes\n- Edit `packages/node/src/cli.ts` for CLI changes\n- The native binary interface is defined in `packages/node/src/native.ts`\n\n### Adding / Modifying Python Wrapper\n- Edit `packages/python/liteparse/parser.py` for library API changes\n- Types are in `packages/python/liteparse/types.py`\n- CLI entry point is `packages/python/liteparse/cli.py`\n\n## Key Dependencies\n\n| Dependency | Purpose |\n|------------|---------|\n| `pdfium` (C library) | PDF text extraction and rendering |\n| `tesseract-rs` | Built-in OCR engine (optional, via `tesseract` feature) |\n| `clap` | CLI framework |\n| `serde` / `serde_json` | Serialization |\n| `tokio` | Async runtime |\n| `reqwest` | HTTP client (for OCR server) |\n| `image` | Image processing (PNG encoding) |\n| `napi-rs` | Node.js native bindings |\n| `pyo3` / `maturin` | Python native bindings |\n| `wasm-bindgen` | WASM bindings |\n\n## Entry Points\n\n- **Rust CLI**: `crates/liteparse/src/main.rs`\n- **Rust Library**: `crates/liteparse/src/lib.rs` → `parser.rs` contains `LiteParse` struct\n- **Node.js**: `packages/node/src/lib.ts` exports `LiteParse` class\n- **Python**: `packages/python/liteparse/parser.py` exports `LiteParse` class\n- **WASM**: `crates/liteparse-wasm/` exposes `LiteParse` via wasm-bindgen\n\n## Related Documentation\n\n- [User-facing documentation](README.md)\n- [OCR API Specification](OCR_API_SPEC.md)\n- [WASM package README](packages/wasm/README.md)\n- [Python package README](packages/python/README.md)\n- [OCR server examples](ocr/README.md)\n","category":"root","tokens":1994}]}