一、langchain_unstructured简介 #
langchain_unstructured 是 LangChain 生态下用于处理非结构化文档(如PDF、Word、HTML等)的强大工具,支持文档加载、分块、结构化等多种能力。
二、安装方法 #
介绍如何安装langchain_unstructured及其依赖。
# 安装langchain_unstructured主库
pip install langchain_unstructured
# 推荐安装unstructured、pdfplumber等依赖以支持更多格式
pip install unstructured pdfplumber三、核心概念 #
本节介绍langchain_unstructured的主要能力和设计思想。
- 文档加载(Loader):支持多种格式文档的读取与解析。
- 分块(Chunking):将长文档切分为适合大模型处理的小块。
- 结构化(Structuring):将非结构化内容转为结构化数据,便于后续处理。
四、常见用法 #
介绍langchain_unstructured的典型用法,包括加载PDF、Word、HTML等文档,分块与结构化处理。
1. 加载PDF文档 #
展示如何加载PDF文件并提取文本内容。
`python
导入PDF加载器 #
from langchain_unstructured.document_loaders import UnstructuredPDFLoader
指定PDF文件路径 #
file_path = 'example.pdf'
创建PDF加载器对象 #
loader = UnstructuredPDFLoader(file_path)
加载文档,返回Document对象列表 #
documents = loader.load()
遍历并打印每个文档的内容 #
for doc in documents: print(doc.page_content)
### 2. 加载Word文档
> 展示如何加载Word(.docx)文件。
```python
# 导入Word加载器
from langchain_unstructured.document_loaders import UnstructuredWordDocumentLoader
# 指定Word文件路径
file_path = 'example.docx'
# 创建Word加载器对象
loader = UnstructuredWordDocumentLoader(file_path)
# 加载文档,返回Document对象列表
documents = loader.load()
# 遍历并打印每个文档的内容
for doc in documents:
print(doc.page_content)3. 加载HTML文档 #
展示如何加载HTML文件。
`python
导入HTML加载器 #
from langchain_unstructured.document_loaders import UnstructuredHTMLLoader
指定HTML文件路径 #
file_path = 'example.html'
创建HTML加载器对象 #
loader = UnstructuredHTMLLoader(file_path)
加载文档,返回Document对象列表 #
documents = loader.load()
遍历并打印每个文档的内容 #
for doc in documents: print(doc.page_content)
### 4. 文档分块处理
> 展示如何将长文档切分为小块。
```python
# 导入文本分块器
from langchain.text_splitter import RecursiveCharacterTextSplitter
# 假设已获得文档内容
text = "这是一个很长的文本,需要分块处理。" * 100
# 创建分块器对象,设置每块最大长度和重叠长度
splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=20)
# 执行分块,返回文本块列表
chunks = splitter.split_text(text)
# 打印每个分块内容
for chunk in chunks:
print(chunk)5. 结构化处理 #
展示如何将非结构化内容转为结构化数据。
`python
导入结构化处理相关模块 #
from langchain_unstructured.document_loaders import UnstructuredPDFLoader
加载PDF文档 #
loader = UnstructuredPDFLoader('example.pdf') documents = loader.load()
假设每个Document对象有metadata属性 #
for doc in documents:
# 打印文档元数据
print(doc.metadata)
# 打印文档内容
print(doc.page_content)`
五、应用场景 #
langchain_unstructured 常用于以下场景:
- 非结构化文档批量解析与知识入库
- RAG(检索增强生成)场景下的文档预处理
- 企业知识库、合同、报告等内容结构化
- 多格式文档统一处理与分析
六、参考资料 #
推荐学习和查阅的langchain_unstructured相关资料。