The DocLang ecosystem
Converters, viewers, editors and labeling platforms, and which one to reach for.
DocLang is young, and the useful thing about a young open format is how many independent projects already speak it. This page is a map of them. Two are ours, Duckling and Segler. The rest are other people’s work, and several of them are what Segler is built on or beside.
Docling
Docling is the open-source document converter that started IBM Research’s line of work and now lives under the LF AI & Data Foundation, MIT licensed, at docling-project/docling. It reads PDFs, Office files, HTML, images and audio and keeps what makes a document a document: hierarchy, layout, reading order, tables, formulas and pictures, with the page number and bounding box of every element. It runs as a Python library, a command line, a containerized service, or a managed service from IBM. Docling treats DocLang as its unified output: convert once, then export to other formats without reprocessing the source.
docling.rs
docling.rs is a Rust port of Docling in the same organization: one static binary with no Python or PyTorch at runtime. Its README reports the PDF pipeline running about four times faster than Python Docling at under half the memory, and declarative formats such as DOCX and HTML much faster still, with output checked against upstream format by format. It is published as the docling crate on crates.io, as docling-rs on PyPI, and on npm, and it ships a server and a command line. The whole converter also compiles to WebAssembly, so a browser demo converts a document entirely on your device.
It reads DocLang as well as writing it. Duckling is built on it. What it does not do is keep everything: its model is a flat list of nodes and its reader ignores elements and attributes it does not know, which is right for a converter and the reason Segler keeps its own lossless model for editing.
The DocLang viewer
The project’s own viewer runs in a browser, source at doclang-project/viewer. Drop a file on it and it shows the original page, the DocLang, or a reading view, with overlays you can switch on for layout elements, the body, furniture and background layers, reading order, table structure, cross-references, captions and key-value pairs. It is the quickest way to see what a document contains with nothing installed, and a good first stop for a file somebody sent you.
Segler sits next to it rather than in place of it. Segler is a desktop application for the document you are going to keep working on: it opens files from disk, makes no network connection, writes your corrections back with everything you did not touch preserved, and is a library you can build on.
Label Studio
Label Studio is HumanSignal’s open-source platform for data labeling, AI evaluation and human-in-the-loop workflows, covering images, text, audio, time series and documents including PDF and OCR work, with templates, an SDK, webhooks and model-assisted labeling. HumanSignal is one of the five founding members of the DocLang working group.
Label Studio and Segler answer different scales of the same question. Label Studio is for a team labeling a corpus: projects, assignments, annotators, review queues, a pipeline around them. Segler is for one person with one document that needs to be right, who wants to open a file, fix it and save it, with no server and no account. If you are running a labeling program, you want Label Studio. If you have a file open and a wrong table cell in it, you want Segler.
Duckling and Segler
Duckling converts documents to DocLang from a desktop window, using docling.rs, with its models bundled so that nothing is downloaded and nothing leaves the machine. Segler opens that DocLang and lets a person correct it beside the page it came from. Both are free, both are open source, and both are on the Mac App Store, the Microsoft Store and the Excelano apt repository.
Which to reach for
| You want to | Reach for |
|---|---|
| Convert a few files with a window, offline | Duckling |
| Convert from Python, or as a service | Docling |
| Convert from Rust, JavaScript or a single binary | docling.rs |
| Look at a DocLang file with nothing installed | The DocLang viewer |
| Correct a DocLang file and save it | Segler |
| Build on a lossless DocLang model in Rust | segler-core, from crates.io |
| Run a labeling or evaluation program for a team | Label Studio |
| Read the format itself | The specification |