TypeScript SDK for Docling -- bridge between the Python Docling ecosystem and JavaScript/TypeScript.
Docling SDK provides document conversion, OCR, and chunking capabilities in TypeScript. It supports three client modes: an API client for Docling Serve, a CLI client wrapping the Python Docling tool, and a Web OCR client running entirely in the browser via WebGPU/WASM. The SDK works across Node.js, Bun, Deno, browsers, and Cloudflare Workers.
npm install docling-sdkAlso available via GitHub Package Registry: npm install @btwld/docling-sdk
For Web OCR, install peer dependencies: npm install @huggingface/transformers onnxruntime-web
See the Getting Started guide for prerequisites and setup.
import { readFile } from "node:fs/promises";
import { Docling } from "docling-sdk";
const client = new Docling({ api: { baseUrl: "http://localhost:5001" } });
const buffer = await readFile("./document.pdf");
const result = await client.convert(buffer, "document.pdf", { to_formats: ["md"] });
console.log(result.document.md_content);import { Docling } from "docling-sdk";
const client = new Docling({ cli: { outputDir: "./output" } });
const result = await client.convert("./document.pdf", "document.pdf", { to_formats: ["md"] });
console.log(result.document.md_content);import { createWebClient } from "docling-sdk/web";
const client = createWebClient({ device: "webgpu" });
await client.initialize();
const result = await client.processImage(imageFile);
console.log(result.markdown);
client.destroy();| Feature | API | CLI | Web |
|---|---|---|---|
| Document conversion (PDF, DOCX, PPTX, HTML, images, ...) | Yes | Yes | Yes |
| Output formats (Markdown, JSON, HTML, text, DocTags) | Yes | Yes | Yes |
| Streaming (content, ZIP, input) | Yes | -- | -- |
| Async tasks with progress | Yes | -- | -- |
| Document chunking (RAG) | Yes | -- | -- |
| S3 integration | Yes | -- | -- |
| VLM pipeline | Yes | Yes | -- |
| ASR pipeline | -- | Yes | -- |
| Batch processing | -- | Yes | -- |
| Directory watching | -- | Yes | -- |
| Browser-based OCR (no server) | -- | -- | Yes |
| WebSocket progress tracking | Yes | -- | -- |
- Getting Started -- installation, prerequisites, first conversion
- Configuration -- all config options for API, CLI, and Web clients
- Error Handling -- error hierarchy, retry logic, Result pattern
- TypeScript -- type guards, Result types, OpenAPI types, Zod validation
- API Client -- HTTP client for Docling Serve
- CLI Client -- Python CLI wrapper
- Web Client -- browser-based OCR
- Document Chunking -- HybridChunker and HierarchicalChunker for RAG
- Async and Progress -- async tasks, polling, WebSocket
- Streaming -- content, ZIP, and input streaming
- S3 Integration -- S3 source and target operations
- VLM Pipeline -- Vision Language Model and ASR pipelines
- Cross-Runtime -- Node.js, Bun, Deno, Browser, CF Workers
- API Reference -- method-by-method reference
- Migration Guide -- v1.x to v2.0 migration
- Examples -- annotated guide to all examples
| Requirement | Version |
|---|---|
| Node.js | >= 18.0.0 |
| TypeScript (optional) | >= 4.9.0 |
| Docling Serve (API mode) | Latest |
| Python Docling (CLI mode) | Latest |
| WebGPU/WASM (Web mode) | Chrome 113+ or WASM fallback |
Contributions are welcome. Please read the Contributing Guide for details.
BSD 3-Clause License -- see LICENSE for details.
- Docling -- the main Python library
- Docling Serve -- REST API server
- Docling TS -- TypeScript types and components