unstructured

把 PDF/Word 等复杂文档,一键变成 LLM 能用的干净数据

开源 🏷️基础免费,高级付费 🔧 仅开源项目,无在线服务,需自行部署 开源模型 🍴 复刻 1387 🐛 待处理 350 👀 关注 75
访问官网 ↗ GitHub ↗
GitHub 星标 ★ 15703
维护状态 活跃
是否开源 开源
定价模式 🏷️基础免费,高级付费 开源版免费,企业级平台提供增值功能,具体定价需咨询官网。

项目预览

unstructured 项目界面预览图
图片来源:项目官网

项目数据

分类开源模型
开发团队Unstructured-IO
定价模式🏷️基础免费,高级付费
价格说明开源版免费,企业级平台提供增值功能,具体定价需咨询官网。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议Apache-2.0
主要语言HTML
技术栈/模型data-pipelines,deep-learning,document-image-analysis,document-image-processing,document-parser,document-parsing,docx,donut,information-retrieval,langchain,llm,machine-learning,ml,natural-language-processing,nlp,ocr,pdf,pdf-to-json,pdf-to-text,preprocessing
GitHub 星标★ 15703
上线时间2022-09-26 00:00:00
代码更新2026-11-06
仓库体积232.2 MB
本站数据更新2026-11-09
维护状态活跃
收录时间2026-08-09
浏览次数4

项目介绍

Unstructured 是一个开源的 ETL 工具,专注于将复杂文档(如 PDF、Word、PPT、图片等)转换为干净、结构化的数据,以便直接用于大语言模型(LLM)的检索增强生成(RAG)或微调流程。它解决了非结构化数据难以被机器理解和处理的问题,提供了文档解析、分区、清洗、去重、切块和嵌入等核心能力。其核心优势在于支持多种文件格式,并能智能识别文档中的标题、段落、表格、列表等元素,输出为 JSON 或文本等结构化格式。项目提供 Python 库和命令行工具,可灵活集成到现有数据管道中,帮助开发者快速构建高质量的知识库或数据预处理流程。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 15703

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 5 步

环境要求

  • Python 环境(项目提供 PyPI 包 unstructured)
  • pip 可用,用于安装 PyPI 包
  • 按需的系统依赖:libmagic-dev、poppler-utils、tesseract-ocr、libreoffice
  • 如使用容器方式,需先安装 Docker
  • 本地开发需安装 uv 依赖管理工具

安装与启动步骤

  1. 1安装 Python SDK

    安装支持全部文档类型的完整版;若只处理文本、HTML、XML、JSON、邮件,装基础版即可。

    pip install "unstructured[all-docs]"
  2. 2安装系统依赖

    按需安装,不同文档类型需要的依赖不同,未用到可不装。

    apt-get install -y libmagic-dev poppler-utils tesseract-ocr libreoffice
  3. 3验证解析效果

    用 partition 通用入口解析示例邮件文件并打印元素文本,能输出内容即安装成功。

    python3 - <<'PY'
    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]))
    PY
  4. 4拉取 Docker 镜像

    镜像支持 x86_64 与 Apple silicon,docker pull 会自动选择对应架构。

    docker pull downloads.unstructured.io/unstructured-io/unstructured:latest
  5. 5进入容器操作

    该命令要求已有一个名为 unstructured 的运行中容器,进入后可直接用交互模式解析文档。

    docker exec -it unstructured bash

如何确认成功

运行 partition(filename="example-docs/eml/fake-email.eml") 并打印结果,能正常输出解析出的元素文本即表示安装成功。

常见问题

Q:只处理纯文本、HTML、XML、JSON 和邮件,需要装全量依赖吗?

A:不需要,直接执行 pip install unstructured 即可,这些类型无需额外依赖。

Q:只需要解析 Word 或 PPT 怎么办?

A:按类型安装对应的 extras,例如 pip install "unstructured[docx,pptx]",避免安装全部依赖。

Q:解析 PDF 或图片时报缺少依赖怎么办?

A:补充安装 poppler-utils 和 tesseract-ocr;需要多语言 OCR 时再安装 tesseract-lang。

Q:docker pull 的镜像架构不对怎么办?

A:镜像为多平台构建,一般会自动匹配;必要时用 --platform 指定,例如 --platform linux/amd64。

Q:我在 Windows 上安装失败怎么办?

A:README 提示 Windows 可参考官方文档中的 conda 安装方式(unstructured-io.github.io/unstructured/installing.html)。

注意事项

  • Docker 镜像基于 wolfi-base,该基础镜像会定期更新,本地构建 docker-build 可能因上游变更而失败。
  • 若只解析某一种数据,可在 Dockerfile 中注释掉其他数据类型的包/依赖以加快镜像构建。
  • pandoc 已通过 pypandoc-binary Python 包自动捆绑,无需额外系统安装。
  • 本地开发安装需先安装 uv 进行依赖管理,具体步骤见 README 后续内容与官方安装文档。

核心亮点

  • 支持 PDF、Word、PPT、图片等 20+ 种格式,覆盖常见办公文档
  • 自动识别文档结构(标题、表格、列表),输出带语义的 JSON
  • 提供分区、清洗、切块、嵌入全流程 API,开箱即用

不足之处

  • 部分高级功能(如企业级分区)依赖商业版,开源版功能有限
  • 处理超大 PDF 或扫描件时速度较慢,需额外优化

适用场景

  • 构建 RAG 系统前的文档预处理,提升检索准确率
  • 批量清洗历史文档,用于 LLM 微调数据集构建
  • 企业内部知识库自动化入库,支持多格式文档统一管理

替代项目

langchain、llamaindex、textract

上一篇:MNN

下一篇:nano-vllm

同类项目推荐

ds-free-api 开源

把 DeepSeek 网页端封装成 OpenAI/Anthropic 兼容 API

DeepSeek网页端API代理,支持OpenAI与Anthropic兼容接口 | OpenAI & Anthropic compatible···

★ 866 2026-10-27
vLLM-Kunlun 开源

让昆仑芯 XPU 直接跑起 vLLM 大模型推理服务

vLLM Kunlun (vllm-kunlun) is a community-maintained hardware plugin designed to seam···

★ 481 2026-09-16
comfyui-docker 开源

用 Docker 一键跑起 ComfyUI,告别环境配置地狱

Docker image for ComfyUI: The most powerful and modular stable diffusion GUI, api an···

★ 61 2026-08-09
FreeQwenApi 开源

把 Qwen 网页版变成免费 API,本地部署即用

Локальный API-прокси для Qwen AI с поддержкой сохра···

★ 344 2026-08-09
csghub-server 开源

自建大模型资产平台,统一管模型数据推理微调

csghub-server is the backend server for CSGHub which helps user to manage datasets, ···

★ 1041 2026-09-16
ctx-wire 开源

压缩命令输出,脱敏后喂给 AI,减少噪音

ctx-wire runs your commands, compresses the output with declarative filters, scrubs ···

★ 94 2026-08-09