PDFluent SDK 1.1.0 returns extraction output in several shapes — Markdown, blocks JSON, words with boxes, and a Docling-shaped JSON. Structured extraction is Preview.
The output formats on this page come from the structured extraction pipeline in PDFluent SDK 1.1.0. Structured extraction is Preview: output quality is still improving and the API may change in a minor release. Plain-text extraction is not Preview. The install commands carry no version pin.
# Rust
cargo add pdfluent@1.1.0
# Python
pip install pdfluent==1.1.0
# Node.js
npm install @pdfluent/node
# Models for the balanced tier (CLI from the 1.1.0 release archives)
pdfluent models install layout tablesStructured extraction returns more than one output shape. Markdown comes from extract_markdown, blocks from extract_blocks (and to_json in Rust), words with boxes from extract_words, and a Docling-shaped JSON (DoclingDocument) from extract_docling. Chunks for retrieval pipelines come from iter_chunks. Structured extraction is Preview: output quality is still improving and the API may change in a minor release.
from pdfluent import Document
from pdfluent.chunks import iter_chunks
with Document("report.pdf") as doc:
md = doc.extract_markdown() # fast tier, no models
md_tables = doc.extract_markdown(quality="balanced") # needs installed models
words = doc.extract_words()
for chunk in iter_chunks(doc, mode="markdown"):
print(chunk.text)extract_markdown returns Markdown: headings, list items, table cells, running heads. In Python the default quality="fast" runs the engine alone, pure Rust, with no models, and works everywhere including WebAssembly. quality="balanced" runs a layout model and a table-structure model locally through ONNX Runtime and is Markdown only: extract_markdown reads it, extract_blocks refuses it.
extract_blocks returns blocks: paragraphs, headings with level, list items, table cells with grid position, running heads, each with page and box. In Rust, to_json(&blocks) renders the blocks as JSON. In WebAssembly and .NET, extractBlocks returns a JSON string.
extract_words returns words with boxes, for pipelines that need token-level positions rather than block structure. Python, Node, WebAssembly, Java and .NET all expose it.
extract_docling returns a Docling-shaped JSON (DoclingDocument) for pipelines built on Docling. Python, Node, WebAssembly, Java and .NET all expose it; in Python the call takes first_page, page_count and name.