unstructured 是一个面向非结构化文档处理的 Python 开源库,常用来把 PDF、Word、HTML、图片等内容拆解成结构化元素,方便后续做检索、清洗、分析,或者接到 RAG 和 LLM 管道里使用。它的思路很清晰:先把原始文档切分成标题、段落、列表、表格这类元素,再按需清洗、格式化,最后输出成更适合机器消费的结果。
这类库解决的是什么问题
很多文档并不是'天然结构化'的。比如一份 PDF,里面既有正文,也有表格、页眉页脚、脚注,甚至还有扫描图片。直接把整份文件丢给模型,效果通常不会太好。unstructured 做的事情,就是尽量把这些混在一起的内容拆开,并保留文档语义上的边界。
它比较适合下面这些场景:
- 把文档内容整理成结构化元素,供后续程序处理
- 给 RAG 系统准备知识库素材
- 做合同、报告、邮件等文档的信息抽取
- 作为机器学习或数据标注前的数据预处理工具
- 处理本地文件时尽量减少手工清洗成本
安装前先看依赖
unstructured 支持的格式很多,但不同格式对应的依赖并不一样。基础安装相对轻量,真正碰到 PDF、图片、OCR 之类的场景时,往往还要补一些系统组件。
pip install unstructured
如果只想处理某一类文档,也可以装对应的额外依赖包:
pip install "unstructured[docx]"
如果要把 PDF 和图片处理链路也带上,一般会用更完整的安装方式:
pip install "unstructured[local-inference]"
如果你打算走 Serverless API,则需要安装客户端:
pip install unstructured-client
常见系统依赖
本地处理 PDF、图片或 OCR 时,经常会遇到这些外部依赖:
tesseract:OCR 识别poppler:PDF 相关处理pandoc:某些文档格式转换libmagic:文件类型检测
以 macOS 为例,libmagic 可以这样装:
brew install libmagic
在 Ubuntu 上通常是:
sudo apt-get install libmagic1
安装完之后,可以简单验证一下版本:
import unstructured
print(unstructured.__version__)
核心用法:先分区,再清洗,最后格式化
unstructured 的主线非常明确。先用 partition 把文档拆成元素,再对文本做清洗,必要时转成字典或 JSON,最后送进下游流程。
1)分区:把文档拆成可处理的元素
最常见的入口是自动分区。它会先判断文件类型,然后调用对应的解析逻辑。
from unstructured.partition.auto import partition
elements = partition(filename=)
element elements[:]:
()

