emcf/thepipe

Get clean data from tricky documents, powered by vision-language models ⚡

thepipe – AI 增强文档提取

功能说明
thepipe(通过 thepipe-api 包安装)能将杂乱的文件(PDF、Word 文档、PowerPoint、笔记本、音频/视频、图像、ZIP,甚至是整个目录)转换为干净的 Markdown、表格和图像。它还能对仅含图像的扫描件执行 OCR,并提取符合用户提供之 Pydantic 架构的结构化数据。

运作方式

  • 核心 scrape_file 函数会读取文件,选择性地将页面图像发送至视觉语言模型 (VLM)(如 OpenAI 多模态模型),并返回一个 块 列表(包含 text、选用的 images 和元数据的对象)。
  • 块化可按页面、长度、Markdown 章节、关键字进行,若安装了选用的 sentence-transformers 包,还可按语义变化进行块化。实验性的 代理式 (agentic) 块化器会使用 LLM 来决定分割点。
  • 对于音频/视频,选用的 openai-whisper 包可转录媒体并提取代表性帧。
  • 提取的块可转换为 OpenAI 风格的聊天消息 (chunks_to_messages) 或转换为 LlamaIndex Document 对象 (Chunk.to_llamaindex)。
  • 结构化提取利用了 OpenAI 的 结构化输出 功能:您传入一个 Pydantic 模型,库即返回验证后的实例。

主要特色

  • 多模态 AI 抓取 – 适用于任何兼容 OpenAI 的客户端(OpenAI、OpenRouter、本地 OpenLLM 等)。
  • 可插拔的额外功能 – 轻量级默认安装;可加入 [audio]、[semantic]、[llama-index] 或 [gpu] 以获得 Whisper、sentence-transformers、LlamaIndex 支持或完整的 GPU 加速。
  • CLI – thepipe <source> 支持 API 密钥、模型选择、纯文本输出、包含正则表达式及详细程度的标志。
  • 集成就绪 – 输出可直接喂给 LLM、存储于向量数据库(ChromaDB、LlamaIndex 等)或用于 RAG 管线。

典型用法

from thepipe.scraper import scrape_file
from openai import OpenAI

client = OpenAI()                     # 任何兼容 OpenAI 的客户端
chunks = scrape_file(
    "paper.pdf",
    openai_client=client,
    model="gpt-5.6-luna",
    include_input_images=True,
)

# 作为聊天提示发送给 LLM
from thepipe.core import chunks_to_messages
messages = [{"role": "user", "content": [{"type": "text", "text": "Summarize this paper."}]}]
messages += chunks_to_messages(chunks)
response = client.chat.completions.create(model="gpt-5.6-luna", messages=messages)

安装

pip install thepipe-api               # 仅 CPU 基础版
pip install thepipe-api[audio]        # 用于音频/视频的 Whisper
pip install thepipe-api[semantic]     # 用于语义块化的 sentence-transformers
pip install thepipe-api[llama-index]  # LlamaIndex 转换支持
pip install thepipe-api[gpu]          # PyTorch + 完整 GPU 堆栈

(对于 GPU 需求较高的额外功能,您可能需要先从 PyTorch 索引安装 CPU wheels。)

适用场景

  • 您需要从 PDF、幻灯片或扫描图像中获取干净、适合 Markdown 的文本。
  • 您的下游管线依赖多模态 LLM 或向量存储库。
  • 您希望使用单一库来处理音频/视频转录和结构化数据提取,而无需拼凑多个独立工具。

限制

  • 基于 VLM 的抓取需要兼容 OpenAI 的 API 密钥(或自托管的 VLM 端点)。
  • GPU 加速为选用;对于视觉密集型工作负载,仅使用 CPU 执行会较慢。
  • 部分功能(语义/代理式块化、结构化提取)需要额外的依赖包。

以上信息直接取自该项目的 README。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目