使用 Unstructured 开源库快速入门指南

news2025/6/8 21:07:40

引言

本文将介绍如何使用 Unstructured 开源库(GitHub,PyPI)和 Python,在本地开发环境中将 PDF 文件拆分为标准的 Unstructured 文档元素和元数据。这些元素和元数据可用于 RAG(检索增强生成)应用、AI 代理、模型微调等任务。

前提条件

开始之前,你需要:

  • Python 虚拟环境管理器:推荐使用虚拟环境管理器来管理代码依赖。本指南使用 uvvenv 管理虚拟环境。以下步骤将指导你安装和使用它们,但并非必需。
  • Python 3.9 或更高版本:如果需要,可以使用 uv 安装指定版本的 Python。
  • PDF 文件:在本地准备一个 PDF 文件。如果没有,可在后续步骤中下载示例文件 layout-parser-paper.pdf

快速开始

1. 安装 uv

macOS 和 Linux

使用 curl 安装:

curl -fsSL https://get.uv.dev | bash

或使用 wget 安装:

wget -qO- https://astral.sh/uv/install.sh | sh

2. 安装 Python

使用 uv 查看已安装的 Python 版本:

uv python list

如果尚未安装 Python,可以使用 uv 安装。例如,安装 Python 3.12:

uv python install 3.12

3. 创建 uv 项目

导航到你的项目目录,初始化 uv 项目:

uv init

4. 创建和激活虚拟环境

创建虚拟环境

在项目目录下,使用以下命令创建虚拟环境:

# 使用当前的 Python 版本
uv venv

# 或者,指定特定的 Python 版本
uv venv --python 3.12
激活虚拟环境
  • macOS 和 Linux

    # 对于 bash 或 zsh
    source .venv/bin/activate
    
    # 对于 fish
    source .venv/bin/activate.fish
    
    # 对于 csh 或 tcsh
    source .venv/bin/activate.csh
    

随时运行 deactivate 命令退出虚拟环境。

5. 安装 Unstructured 开源库

在激活的虚拟环境中,使用 uv 安装 Unstructured 库:

uv add unstructured

上述命令支持处理纯文本(.txt)、HTML(.html)、XML(.xml)和电子邮件(.eml、.msg、.p7s)文件,无需额外依赖。

如果需要处理其他文件类型,还需要安装相应的依赖。例如,处理 PDF 文件:

uv add "unstructured[pdf]"

可用的文件类型扩展包括:

  • all-docs:支持所有文件类型
  • csv:仅限 .csv 文件
  • docx:支持 .doc 和 .docx 文件
  • epub:仅限 .epub 文件
  • image:支持 .bmp、.heic、.jpeg、.png 和 .tiff 等图像文件
  • md:仅限 .md 文件
  • odt:仅限 .odt 文件
  • org:仅限 .org 文件
  • pdf:仅限 .pdf 文件
  • pptx:支持 .ppt 和 .pptx 文件
  • rst:仅限 .rst 文件
  • rtf:仅限 .rtf 文件
  • tsv:仅限 .tsv 文件
  • xlsx:支持 .xls 和 .xlsx 文件

你可以同时安装多个扩展,例如:

uv add "unstructured[pdf,docx]"

6. 安装系统依赖

为确保最大兼容性,你还需要安装以下系统依赖:

  • libmagic-dev:用于文件类型检测
  • poppler-utilstesseract-ocr:用于处理图像和 PDF 文件,以及 tesseract-lang(用于额外的语言支持)
  • libreoffice:用于处理 Microsoft Office 文档
  • pandoc:用于处理 .epub、.odt 和 .rtf 文件;对于 .rtf 文件,需要 2.14.2 或更高版本

安装方法因操作系统而异,请参考相关文档或操作系统的指南。

7. 下载示例 PDF 文件

下载名为 layout-parser-paper.pdf 的示例 PDF 文件到本地:

示例 PDF 文件下载链接

(你也可以使用其他想要处理的 PDF 文件。)

8. 添加 Python 代码

在项目目录下,创建 main.py 文件,添加以下代码(将 <path/to> 替换为示例 PDF 文件的实际路径):

from unstructured.partition.pdf import partition_pdf
from unstructured.staging.base import elements_to_json

file_path = "<path/to>"
base_file_name = "layout-parser-paper"

def main():
    elements = partition_pdf(filename=f"{file_path}/{base_file_name}.pdf")
    elements_to_json(elements=elements, filename=f"{file_path}/{base_file_name}-output.json")

if __name__ == "__main__":
    main()

如果使用其他 PDF 文件,请将 layout-parser-paper 替换为相应的文件名。

9. 运行 Python 代码

使用 uv 运行 main.py 文件:

uv run main.py

运行时间可能需要几分钟,视文件大小和系统性能而定。

10. 查看输出结果

运行成功后,打开与原始 PDF 文件相同目录下的 layout-parser-paper-output.json 文件。使用文本编辑器查看生成的 Unstructured 文档元素和元数据。

后续步骤

  • 了解更多分割函数:除了 partition_pdf,Unstructured 库还提供了处理其他文件类型的分割函数,例如 partition_docxpartition_html 等。

  • 探索不同的分割策略:根据文档特点,选择合适的分割策略,以获得最佳结果。

  • 学习分块、清理和提取功能:使用库中的分块(chunking)、清理(cleaning)、提取(extracting)函数,进一步处理文档元素,满足特定需求。

  • 生成向量嵌入:为文档元素的文本生成向量嵌入,用于 RAG 应用、AI 代理、模型微调等。

  • 参考更多代码示例:参阅 Unstructured 的 Quick Tour Google Colab 笔记本。

  • 使用 Docker 容器:Unstructured 开源库也可以作为 Docker 容器使用,方便部署和管理。

  • 探索高级功能:了解 Unstructured Ingest CLI 和 Unstructured Ingest Python 库,了解批量文件处理、远程文件获取、ETL 管道创建等高级功能。

  • 了解 Unstructured UI 和 API:它们面向生产环境,具备更高的性能和质量,支持最新的 OCR 和视觉语言模型、先进的分块策略、安全合规、多用户账户管理、作业调度和监控、自托管部署等。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2404567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web设计之登录网页源码分享,PHP数据库连接,可一键运行!

HTML 页面结构&#xff08;index.html&#xff09; 1. 流星雨动态背景 2. 主体界面&#xff08;包含登录和注册表单&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&qu…

Cursor + Claude 4:微信小程序流量主变现开发实战案例

前言 随着微信小程序生态的日益成熟&#xff0c;越来越多的开发者开始关注如何通过小程序实现流量变现。本文将详细介绍如何使用Cursor编辑器结合Claude 4 AI助手&#xff0c;快速开发一个具备流量主变现功能的微信小程序&#xff0c;并分享实际的开发经验和变现策略。 项目…

Redis Key过期策略

概述 Redis的Key过期策略是其内存管理系统的核心组成部分&#xff0c;主要包括「被动过期」、「主动过期」和「内存淘汰」三个机制。其中「内存淘汰」相关内容已经在上一篇「Redis内存淘汰策略」中进行了详细的讲解&#xff0c;有信兴趣的同学可以在回顾上一篇文章。本文将着重…

【C/C++】实现固定地址函数调用

在 C 里&#xff0c;函数地址在程序运行期间通常是固定的&#xff0c;不过在动态链接库&#xff08;DLL&#xff09;或者共享库&#xff08;SO&#xff09;中&#xff0c;函数地址可能会因为地址空间布局随机化&#xff08;ASLR&#xff09;而改变。所以我们想要通过地址直接调…

多模态大语言模型arxiv论文略读(109)

Math-PUMA: Progressive Upward Multimodal Alignment to Enhance Mathematical Reasoning ➡️ 论文标题&#xff1a;Math-PUMA: Progressive Upward Multimodal Alignment to Enhance Mathematical Reasoning ➡️ 论文作者&#xff1a;Wenwen Zhuang, Xin Huang, Xiantao Z…

性能优化笔记

性能优化转载 https://www.cnblogs.com/tengzijian/p/17858112.html 性能优化的一般策略及方法 简言之&#xff0c;非必要&#xff0c;不优化。先保证良好的设计&#xff0c;编写易于理解和修改的整洁代码。如果现有的代码很糟糕&#xff0c;先清理重构&#xff0c;然后再考…

Scrapy爬虫教程(新手)

1. Scrapy的核心组成 引擎&#xff08;engine&#xff09;&#xff1a;scrapy的核心&#xff0c;所有模块的衔接&#xff0c;数据流程梳理。 调度器&#xff08;scheduler&#xff09;&#xff1a;本质可以看成一个集合和队列&#xff0c;里面存放着一堆即将要发送的请求&#…

在Windows下编译出llama_cpp_python的DLL后,在虚拟环境中使用方法

定位编译生成的文件 在VS2022编译完成后&#xff0c;在构建目录&#xff08;如build/Release或build/Debug&#xff09;中寻找以下关键文件&#xff1a; ggml.dll、ggml_base.dll、ggml_cpu.dll、ggml_cuda.dll、llama.dll&#xff08;核心动态链接库&#xff09; llama_cp…

关于datetime获取时间的问题

import datetime print(datetime.now())如果用上述代码&#xff0c;会报错&#xff1a; 以下才是正确代码&#xff1a; from datetime import datetime print(datetime.now()) 结果&#xff1a; 如果想格式化时间&#xff0c;使用代码&#xff1a; from datetime import da…

Unity版本使用情况统计(更新至2025年5月)

UWA发布&#xff5c;本期UWA发布的内容是Unity版本使用统计&#xff08;第十六期&#xff09;&#xff0c;统计周期为2024年11月至2025年5月&#xff0c;数据来源于UWA网站&#xff08;www.uwa4d.com&#xff09;性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势作为参…

GPUCUDA 发展编年史:从 3D 渲染到 AI 大模型时代(上)

目录 文章目录 目录1960s~1999&#xff1a;GPU 的诞生&#xff1a;光栅化&#xff08;Rasterization&#xff09;3D 渲染算法的硬件化实现之路 学术界算法研究历程工业界产品研发历程光栅化技术原理光栅化技术的软件实现&#xff1a;OpenGL 3D 渲染管线设计 1. 顶点处理&…

人机融合智能 | 可穿戴计算设备的多模态交互

可穿戴计算设备可以对人体以及周围环境进行连续感知和计算,为用户提供随时随地的智能交互服务。本章主要介绍人机智能交互领域中可穿戴计算设备的多模态交互,阐述以人为中心的智能穿戴交互设计目标和原则,为可穿戴技术和智能穿戴交互技术的设计提供指导,进而简述支持智能穿戴交…

Impromptu VLA:用于驾驶视觉-语言-动作模型的开放权重和开放数据

25年5月来自清华和博世的论文“Impromptu VLA: Open Weights and Open Data for Driving Vision-Language-Action Models”。 用于自动驾驶的“视觉-语言-动作” (VLA) 模型前景光明&#xff0c;但在非结构化极端场景下却表现不佳&#xff0c;这主要是由于缺乏有针对性的基准测…

AI智能体,为美业后端供应链注入“智慧因子”(4/6)

摘要&#xff1a;本文深入剖析美业后端供应链现状&#xff0c;其产品具有多样性、更新换代快等特点&#xff0c;原料供应和生产环节也面临诸多挑战。AI 智能体的登场为美业后端供应链带来变革&#xff0c;包括精准需求预测、智能化库存管理、优化生产计划排程、升级供应商管理等…

跨平台资源下载工具:res-downloader 的使用体验

一款基于 Go Wails 的跨平台资源下载工具&#xff0c;简洁易用&#xff0c;支持多种资源嗅探与下载。res-downloader 一款开源免费的下载软件(开源无毒、放心使用)&#xff01;支持Win10、Win11、Mac系统.支持视频、音频、图片、m3u8等网络资源下载.支持视频号、小程序、抖音、…

数据湖是什么?数据湖和数据仓库的区别是什么?

目录 一、数据湖是什么 &#xff08;一&#xff09;数据湖的定义 &#xff08;二&#xff09;数据湖的特点 二、数据仓库是什么 &#xff08;一&#xff09;数据仓库的定义 &#xff08;二&#xff09;数据仓库的特点 三、数据湖和数据仓库的区别 &#xff08;一&#…

【深度学习新浪潮】如何入门三维重建?

入门三维重建算法技术需要结合数学基础、计算机视觉理论、编程实践和项目经验,以下是系统的学习路径和建议: 一、基础知识储备 1. 数学基础 线性代数:矩阵运算、向量空间、特征分解(用于相机矩阵、变换矩阵推导)。几何基础:三维几何(点、线、面的表示)、射影几何(单…

Codeforces Round 1025 (Div. 2) B. Slice to Survive

Codeforces Round 1025 (Div. 2) B. Slice to Survive 题目 Duelists Mouf and Fouad enter the arena, which is an n m n \times m nm grid! Fouad’s monster starts at cell ( a , b ) (a, b) (a,b), where rows are numbered 1 1 1 to n n n and columns 1 1 1 t…

ubuntu中使用docker

上一篇我已经下载了一个ubuntu:20.04的镜像&#xff1b; 1. 查看所有镜像 sudo docker images 2. 基于本地存在的ubuntu:20.04镜像创建一个容器&#xff0c;容器的名为cppubuntu-1。创建的时候就会启动容器。 sudo docker run -itd --name cppubuntu-1 ubuntu:20.04 结果出…

[ElasticSearch] DSL查询

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…