Unstructured-IO/unstructured provides open-source tools to ingest and pre-process documents into structured outputs for downstream use, with multiple release updates and broad language support. This review summarizes documented setup, usage, and releases based on the repository's README and releases.
Collecting history — the radar snapshots this repo daily. The trend line appears after 3 days of data (1 so far).
What it is
The unstructured library provides open-source components for ingesting and pre-processing images and text documents, such as PDFs, HTML, Word docs, and many more. The use cases revolve around streamlining data processing workflows for LLMs. It includes modular functions and connectors to transform unstructured data into structured outputs.
How it works
The project offers components to partition and process documents into structured elements, with integration to various document types and connectors. It includes a Transform MCP server for agents to parse, enrich, chunk, and embed files into structured data, supporting 60+ file types. The documentation references pipelines, enrichment, chunking, and embedding within a production context.
Getting started
Quick Start options include:
- Run the library in a container or install the library via PyPI or local development setup. Commands in the README show docker-based runs and Python examples.
- Docker pull:
docker pull downloads.unstructured.io/unstructured-io/unstructured:latest
- Run a container and shell into it:
# create the container
docker run -dt --name unstructured downloads.unstructured.io/unstructured-io/unstructured:latest
# drop into a bash shell
docker exec -it unstructured bash
- Install from PyPI or with extras for specific document types, for example:
pip install "unstructured[all-docs]"
- For local development, install dependencies with
make install, and useuvfor dependency management:
curl -LsSf https://astral.sh/uv/install.sh | sh
make install
- Example usage in Python inside the container:
from unstructured.partition.auto import partition
elements = partition(filename="example-docs/eml/fake-email.eml")
print("\n\n".join([str(el) for el in elements]))
Installation details
- Python SDK installation with
pip install "unstructured[all-docs]"(orpip install unstructuredfor plain text/HTML/XML/JSON/Emails). - System dependencies may include
libmagic-dev,poppler-utils,tesseract-ocr,libreoffice, andpandoc(pandoc viapypandoc-binary). - For local development, optional extras can be selected, e.g.
uv sync --extra pdffor specific document types. - The repository provides a Docker-based development environment via
make docker-start-dev.
Releases
Latest releases include:
- 0.25.2 (2026-08-03): Terminology updates and perf improvements in HTML parsing.
- 0.25.0 (2026-07-31): Enhancements including partition_json() and partition_ndjson() handling arbitrary JSON/NDJSON payloads.
- 0.24.1 (2026-07-11): Fix sanitization to prevent stored XSS in HTML output.
- 0.24.0 (2026-07-06): Derived category_depth from heading level in the v2 HTML parser and stability fixes.
- 0.23.1 (2026-06-11): PDF partitioning improvement to extract filled AcroForm field text.
Full changelog: https://gi
Traction
Stars: 15250, forks: 1285, open_issues: 280. (From repository statistics.)
Behind the repo
Not applicable here as no startup/company link is provided beyond the open-source project.
Caveats
License: Apache-2.0. Created: 2022-09-26. Last push: 2026-08-03. The README notes multiple installation paths and system dependencies, including optional extras and Docker-based development environment. No open issues summary is provided in this summary; see repository for current issue state and security advisories.





