当前位置: 首页 > article >正文

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

引言

本文将介绍如何使用 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_jsonfile_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 和视觉语言模型、先进的分块策略、安全合规、多用户账户管理、作业调度和监控、自托管部署等。


相关文章:

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

引言 本文将介绍如何使用 Unstructured 开源库&#xff08;GitHub&#xff0c;PyPI&#xff09;和 Python&#xff0c;在本地开发环境中将 PDF 文件拆分为标准的 Unstructured 文档元素和元数据。这些元素和元数据可用于 RAG&#xff08;检索增强生成&#xff09;应用、AI 代理…...

白银6月想法

一、市场回顾 2025年5月&#xff0c;SHFE白银主力合约总体呈现出震荡偏强的运行格局。从2025年5月1日至2025年5月30日&#xff0c;白银期货价格整体运行在7944元至8342元区间内&#xff0c;最高价出现在5月22日的8342.0元&#xff0c;最低价则为5月15日的7944元。最终在5月30日…...

OpenCV 滑动条调整图像对比度和亮度

一、知识点 1、int createTrackbar(const String & trackbarname, const String & winname, int * value, int count, TrackbarCallback onChange 0, void * userdata 0); (1)、创建一个滑动条并将其附在指定窗口上。 (2)、参数说明: trackbarname: 创建的…...

船舶事故海上搜救VR情景演练全场景 “复刻”,沉浸式救援体验​

船舶事故海上搜救 VR 情景演练系统的一大核心优势&#xff0c;便是能够全场景 “复刻” 海上事故&#xff0c;为使用者带来沉浸式的船舶事故海上搜救 VR 情景演练体验。​ 在船舶事故海上搜救 VR 情景演练的事故场景模拟方面&#xff0c;系统几乎涵盖了所有常见的船舶事故类型。…...

使用Caddy在Ubuntu 22.04上配置HTTPS反向代理

使用Caddy在Ubuntu 22.04上配置HTTPS反向代理(无域名/IP验证+密码保护) 一、 环境说明 环境说明:测试环境,生产环境请谨慎OS: Ubuntu 22.04.1 LTSCaddy版本:v2.10.0服务器IP: 192.168.3.88(内网)公网IP: 10.2.3.11(测试虚拟)代理端口: 9080后端服务: http://192.168.3…...

无人机目标检测与语义分割数据集(猫脸码客)

UAV 无人机数据集&#xff1a;驱动无人机配送研究迈向新高度 在科技浪潮的迅猛推动下&#xff0c;无人机配送这一新兴物流模式正以前所未有的态势&#xff0c;悄然改变着人们的生活图景。为深入挖掘并优化无人机配送技术&#xff0c;名为 UAV Delivery 的无人机数据集应运而生…...

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;并分享实际的开发经验和变现策略。 项目…...

㊗️高考加油

以下是极为详细的高考注意事项清单&#xff0c;涵盖考前、考中、考后全流程&#xff0c;建议逐条核对&#xff1a; 一、考前准备 1. 证件与物品 必带清单&#xff1a; 准考证&#xff1a;打印2份&#xff08;1份备用&#xff09;&#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;然后再考…...

bat批量去掉本文件夹中的文件扩展名

本文本夹内 批量去掉本文件夹中的文件扩展名 假如你有一些文件&#xff0c;你想去掉他们的扩展名 有没有方便的办法呢 今天我们就分享一种办法。 下面&#xff0c;就来看看吧。 首先我们新建一个记事本&#xff0c;把名字改为&#xff0c;批量去掉本文件夹中的文件扩展名.txt 然…...

基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新

提问 #! /usr/bin/env python3from control_planner import usvParam as P from control_planner.courseController import courseLimitationimport tf_transformations # ROS2没有自带tf.transformations, 需装第三方库 import rclpy from rclpy.node import Node from pid_…...

Scrapy爬虫教程(新手)

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

数据可视化大屏案例落地实战指南:捷码平台7天交付方法论

分享大纲&#xff1a; 1、落地前置&#xff1a;数据可视化必备的规划要素 2、数据可视化双路径开发 3、验证案例&#xff1a;数据可视化落地成效 在当下数字化转型浪潮中&#xff0c;数据可视化建设已成为关键环节。数据可视化大屏的落地&#xff0c;成为企业数据可视化建设的难…...

第五篇:Go 并发模型全解析——Channel、Goroutine

第五篇:Go 并发模型全解析——Channel、Goroutine 一、序章:Java 的并发往事 在 Java 世界中,说到“并发”,你可能立马想到以下名词:Thread、Runnable、ExecutorService、synchronized、volatile。再复杂点,ReentrantLock、CountDownLatch、BlockingQueue 纷纷登场,仿…...

锁的艺术:深入浅出讲解乐观锁与悲观锁

在多线程和分布式系统中&#xff0c;数据一致性是一个核心问题。锁机制作为解决并发冲突的重要手段&#xff0c;被广泛应用于各种场景。乐观锁和悲观锁是两种常见的锁策略&#xff0c;它们在设计理念、实现方式和适用场景上各有特点。本文将深入探讨乐观锁和悲观锁的原理、实现…...

在网页加载时自动运行js的方法(2025最新)

在网页加载时自动运行JavaScript方法有多种实现方式&#xff0c;以下是常见的几种方法&#xff1a; 1. ​​使用 DOMContentLoaded 事件​​ 当初始HTML文档完全加载和解析后触发&#xff08;无需等待图片等资源加载&#xff09;&#xff1a; document.addEventListener(DOMC…...

在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…...

CSS radial-gradient函数详解

目录 基本语法 关键参数详解 1. 渐变形状&#xff08;Shape&#xff09; 2. 渐变大小&#xff08;Size&#xff09; 3. 中心点位置&#xff08;Position&#xff09; 4. 颜色断点&#xff08;Color Stops&#xff09; 常见应用场景 1. 基本圆形渐变 2. 椭圆渐变 3. 模…...

n8n 自动化平台 Docker 部署教程(附 PostgreSQL 与更新指南)

n8n 自动化平台 Docker 部署教程&#xff08;附 PostgreSQL 与更新指南&#xff09; n8n 是一个强大的可视化工作流自动化工具&#xff0c;支持无代码或低代码地集成各种服务。本文将手把手教你如何通过 Docker 快速部署 n8n&#xff0c;并介绍如何使用 PostgreSQL、设置时区以…...

关于datetime获取时间的问题

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

前端面试五之vue2基础

1.属性绑定v-bind&#xff08;&#xff1a;&#xff09; v-bind 是 Vue 2 中用于动态绑定属性的核心指令&#xff0c;它支持多种语法和用法&#xff0c;能够灵活地绑定 DOM 属性、组件 prop&#xff0c;甚至动态属性名。通过 v-bind&#xff0c;可以实现数据与视图之间的高效同…...

使用python实现奔跑的线条效果

效果&#xff0c;展示&#xff08;视频效果展示&#xff09;&#xff1a; 奔跑的线条 from turtle import * import time t1Turtle() t2Turtle() t3Turtle() t1.hideturtle() t2.hideturtle() t3.hideturtle() t1.pencolor("red") t2.pencolor("green") t3…...

Oracle 审计参数:AUDIT_TRAIL 和 AUDIT_SYS_OPERATIONS

Oracle 审计参数&#xff1a;AUDIT_TRAIL 和 AUDIT_SYS_OPERATIONS 一 AUDIT_TRAIL 参数 1.1 参数功能 AUDIT_TRAIL 是 Oracle 数据库中最核心的审计控制参数&#xff0c;决定审计记录的存储位置和记录方式。 1.2 参数取值及含义 取值说明适用场景NONE禁用数据库审计测试环…...

Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战

一、为什么布局性能如此重要&#xff1f; 在Android应用中&#xff0c;布局渲染耗时直接决定了界面的流畅度。根据Google官方数据&#xff0c;超过60%的卡顿问题源于布局性能不佳。本文将彻底解析三大传统布局的性能奥秘&#xff0c;并提供可直接落地的优化方案。 二、三大布局…...

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. 顶点处理&…...