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

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


http://www.xdnf.cn/news/871327.html

相关文章:

  • 机器学习:聚类算法
  • Python爬虫:trafilatura 的详细使用(快速提取正文和评论以及结构,转换为 TXT、CSV 和 XML)
  • Day44打卡 @浙大疏锦行
  • 01-Redis介绍与安装
  • pyqt5 安装失败
  • 查看服务应用是否有跑起来命令
  • 机器学习算法分类
  • 3D旋转动态爱心 - Python创意代码
  • MySQL ACID 面试深度解析:原理、实现与面试实战
  • Pytest+Selenium UI自动化测试实战实例
  • MCP:AI应用的通用接口,如何重塑大模型与外部系统的连接?
  • 小米又开源了,一个多模态大模型 + 一个生不逢时的推理大模型
  • CppCon 2015 学习:Bridging Languages Cross-Platform
  • 循环链表与循环队列的区分与对比
  • 防火墙iptables项目实战
  • Java 二维码
  • ROS2性能狂飙:C++11移动语义‘偷梁换柱’实战
  • CSP严格模式返回不存在的爬虫相关文件
  • C#和C++在编译过程中的文件区分
  • 树莓派上遇到插入耳机后显示“无输入设备”问题
  • 格恩朗椭圆齿轮流量计 精准计量 赋能工业
  • 探索花语的奥秘:全新花语网站上线啦!
  • Elasticsearch中的地理空间(Geo)数据类型介绍
  • PostgreSQL配置文件修改及启用方法
  • ubutu修改网关
  • 将多个分段btsnoop文件合并为一个
  • 低空城市场景下的多无人机任务规划与动态协调!CoordField:无人机任务分配的智能协调场
  • HTML转EXE最新版本2.1.0新功能介绍 - 附CSDN免费下载链接
  • 数据结构与算法:动态规划中根据数据量猜解法
  • 在java 项目 springboot3.3 中 调用第三方接口(乙方),如何做到幂等操作(调用方为甲方,被调用方为乙方)? 以及啥是幂等操作?