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) 或转换为 LlamaIndexDocument对象 (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。
相关
- 项目
- 项目
- 项目
- 项目
- 项目