thepipe
用 VLM 驱动的方式从 PDF、网页、视频等复杂文档中提取干净的结构化内容,专为 RAG 应用设计
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 VLM 驱动的方式从 PDF、网页、视频等复杂文档中提取干净的结构化内容,专为 RAG 应用设计
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:周五下午五点,财务同事递给你一个 U 盘,里面装着 200 份 PDF 扫描件——合同、发票、报表,格式混乱得令人窒息。有的扫描模糊、有的表格跨页、有的甚至拍了照片。"帮我整理成 Excel,周一开会用。"
你的表情可能是这样的:😱
thepi.pe(项目名 thepipe,读作 "the pi-pe")正是来解决这个痛点的。它是一个 Python 工具包,核心能力一句话概括:给任意复杂文档(PDF、网页、Word、视频等)装一个"AI 读图大脑",让它们乖乖吐出干净的结构化内容。
.png)
图1:thepipe 处理流程示意
这个工具的诞生背景很有代表性。作者 Emmett McFarlane 在日常开发中反复遇到一个经典问题:想把 PDF 报告、网页文章、视频字幕提取出来喂给 GPT 或其他大模型,但现有工具要么只能处理纯文本、要么遇到图片就傻眼、要么输出格式乱七八糟。
他的解决思路很清晰:与其让 AI 模型去啃"脏"文档,不如先让工具把文档"洗干净"再送过去。这个理念和 RAG(检索增强生成)技术的主流实践高度一致——"Garbage in, garbage out" 是 AI 应用开发者的共同噩梦,thepipe 正是这个问题的精准解法。
项目于 2024 年 3 月上线 GitHub,截至目前已获得 1526 颗星、99 个 Fork、1526 个订阅者。对于一个细分场景的工具来说,这个数据相当亮眼。项目采用 MIT 许可证,支持 OpenAI、OpenRouter、OpenLLM 等多种 LLM 后端,定位清晰:做 RAG 数据预处理的"瑞士军刀"。
thepipe 的功能覆盖面非常广,涵盖了几乎所有常见的数据源类型:
| 数据源 | 格式 | 多模态 | 说明 |
|---|---|---|---|
| 网页 | URL | ✅ | 提取 markdown、图片、表格;可加 VLM 做截图分析 |
| ✅ | 提取页面 markdown + 页面截图;支持扫描件 OCR | ||
| Word | .docx | ✅ | 提取文本、表格、图片 |
| PPT | .pptx | ✅ | 提取文本和幻灯片图片 |
| 视频 | .mp4/.mov | ✅ | 用 Whisper 转录 + 提取关键帧 |
| 音频 | .mp3/.wav | ✅ | 用 Whisper 转录 |
| 表格 | .csv/.xlsx | ❌ | 转 JSON,每行含行索引 |
| 图片 | .jpg/.png | ✅ | VLM 做 OCR |
| 笔记本 | .ipynb | ✅ | 提取 markdown、代码、输出、图片 |
| GitHub 仓库 | URL | ✅ | 需 GITHUB_TOKEN |
| ZIP/目录 | - | ✅ | 递归处理所有文件 |
核心处理流程分为三步:Scraping(抓取)→ Chunking(分块)→ 导出为 LLM 可用格式。
Scraping 阶段,代码会使用 Playwright 截取网页截图、PyMuPDF 解析 PDF 页面、python-docx 读取 Word 文档。默认用启发式方法提取文本,但当你传入 OpenAI 客户端(或其他兼容的 OpenAI API 客户端)时,会自动启用 VLM(视觉语言模型)做深度理解——这就是项目名称中 "powered by vision-language models" 的含义。
Chunking 阶段支持 7 种分块策略:chunk_by_document(整文档一块)、chunk_by_page(每页一块)、chunk_by_length(按长度切)、chunk_by_section(按 Markdown 标题结构切)、chunk_by_keyword(按关键词切)、chunk_semantic(用 Sentence Transformers 语义嵌入检测主题变化)、chunk_agentic(让 LLM 自主判断最优切分位置)。
导出阶段,chunks_to_messages() 方法将每个 Chunk 转换为 OpenAI Chat API 格式的消息,支持多模态(图片 URL 或 base64)和纯文本两种模式,无缝对接任何 LLM。也可以用 .to_llamaindex() 转成 LlamaIndex 的 Document,直接灌入主流 RAG 框架。
安装极其简单,pip 一行搞定:
pip install thepipe-api
默认安装只拉 CPU 友好依赖,CI 系统也能用。如果需要 GPU 加速 Whisper 音视频转录或 Sentence Transformers 语义分块,按需安装 extras:
pip install thepipe-api[all] # 全量依赖
pip install thepipe-api[gpu] # PyTorch + Whisper + 语义分块
对于复杂网页和视频,还需要装系统依赖:
apt-get install -y git ffmpeg
python -m playwright install --with-deps chromium
实际使用三行代码:
from openai import OpenAI
from thepipe.scraper import scrape_file
client = OpenAI() # 自动读 OPENAI_API_KEY
chunks = scrape_file(filepath="paper.pdf", openai_client=client, model="gpt-4o")
CLI 也支持指定自定义 VLM 端点(OpenRouter、本地 Ollama 等)。
从代码结构来看,thepipe 分为四个核心模块:
| 文件 | 职责 | 关键类/函数 |
|---|---|---|
scraper.py | 各类型文件的读取解析 | scrape_file(), scrape_url(), scrape_directory() |
core.py | 通用数据结构和工具 | Chunk 类、chunks_to_messages()、save_outputs() |
chunker.py | 7 种分块策略实现 | chunk_by_page(), chunk_semantic(), chunk_agentic() |
extract.py | 结构化抽取(已标记废弃) | extract() |
Chunk 类是整个系统的核心数据结构——一个 Chunk 封装了文件路径、提取的文本、图片列表、音频/视频数据,以及丰富的转换方法(.to_message()、.to_llamaindex()、.to_json())。
核心设计亮点:依赖管理极其克制。基础安装仅需 20 个依赖(beautifulsoup4、markdownify、magika、moviepy、openai、pandas、Pillow、playwright、pydantic、PyMuPDF 等),GPU 依赖全部作为可选 extras,LlamaIndex 支持采用懒加载。
1. 结构化抽取即将废弃。作者明确表示当前的 extract() 函数实现不够优雅,将在未来版本中移除,推荐改用 OpenAI 官方的 Structured Outputs。
2. YouTube 视频下载依赖 pytube 库,因 YouTube 反爬机制频繁失效,项目 README 有 workaround 但体验不够顺滑。
3. Twitter/X 推文抓取使用非官方 API,随时可能失效。
4. Whisper 转录对长音频/视频处理时间较长,且依赖本地 GPU 才能达到可接受的性能。
thepipe 处于一个正在快速扩张的赛道:RAG 数据预处理工具。当前 RAG 生态中,文档解析和分块的质量直接决定了检索效果的上限。
thepipe 的差异化在于:轻量级 + 多模态优先 + 开箱即用。相比 Unstructured.io 的服务端架构,thepipe 是一个纯 Python 库,更适合嵌入现有 Python 应用;相比 LangChain 的 Document Loaders,thepipe 对多模态(尤其是 VLM 驱动的 PDF 解析)支持更深入。
| 维度 | 评分 |
|---|---|
| 功能覆盖面 | ⭐⭐⭐⭐⭐ 支持 12+ 种文件格式,多模态支持完整 |
| 上手难度 | ⭐⭐⭐⭐⭐ pip install 即可,示例清晰 |
| 代码质量 | ⭐⭐⭐⭐ 类型注解完善,测试覆盖良好 |
| 文档质量 | ⭐⭐⭐⭐ README 详细,多场景示例完整 |
| 社区活跃度 | ⭐⭐⭐ Stars 增长稳健,更新频率适中 |
一句话推荐:如果你在构建 RAG 应用或需要批量处理复杂文档,thepipe 是目前最值得一试的 Python 工具之一——尤其是当你需要处理扫描件 PDF、图文混排的 Word、或需要提取视频字幕时,它的 VLM 驱动方案几乎没有对手。