从PDF、URL、幻灯片、视频等源提取markdown和视觉内容,为多模态LLM做好准备。⚡
thepi.pe是一个API,可以通过thepipe.scrape
抓取多模态数据,或通过thepipe.extract
从广泛的源中提取结构化数据。它专为与GPT-4o等视觉语言模型对接而设计,并可与任何LLM或向量数据库无缝协作。您可以立即使用托管云服务,或在本地运行。
特性 🌟
- 从任何文档或网页提取markdown、表格和图像
- 从任何文档或网页提取复杂的结构化数据
- 与LLM、向量数据库和RAG框架开箱即用
- AI原生文件类型检测、布局分析和结构化数据提取
- 适用于视频、音频和图像源的多模态抓取
5分钟快速上手 🚀
thepi.pe可以读取多种文件类型和网络源,因此需要一些依赖项。它还需要视觉语言模型推理来实现AI提取功能。出于这些原因,我们在thepi.pe提供了一个开箱即用的API。
详细的设置说明,请参阅文档。
pip install thepipe-api
托管API(Python)
from thepipe.scraper import scrape_file
from thepipe.core import chunks_to_messages
from openai import OpenAI
# 抓取markdown、表格、视觉内容
chunks = scrape_file(filepath="paper.pdf", ai_extraction=True)
# 使用干净、全面的数据调用LLM
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=chunks_to_messages(chunks),
)
本地安装(Python)
对于本地安装,您可以使用以下命令:
pip install thepipe-api[local]
您必须设置并运行本地LLM服务器才能使用AI提取功能。您可以使用任何遵循OpenAI格式的本地LLM服务器(如LiteLLM或OpenRouter)。接下来,将LLM_SERVER_BASE_URL
环境变量设置为您的LLM服务器的端点URL,并将LLM_SERVER_API_KEY
设置为您选择的LLM的API密钥。DEFAULT_VLM
环境变量可以设置为您的LLM的模型名称。例如,如果使用OpenRouter,您可以使用openai/gpt-4o-mini
,如果使用OpenAI,则使用gpt-4o-mini
。
为了充分发挥媒体丰富源的功能,您需要安装以下依赖项:
apt-get update && apt-get install -y git ffmpeg tesseract-ocr
python -m playwright install --with-deps chromium
使用thepi.pe时,请确保在函数调用中添加local=True
:
chunks = scrape_url(url="https://example.com", local=True)
您也可以从命令行使用thepi.pe:
thepipe path/to/folder --include_regex .*\.tsx --local
支持的文件类型 📚
来源 | 输入类型 | 多模态 | 备注 |
---|---|---|---|
网页 | 以http 、https 、ftp 开头的URL | ✔️ | 从网页抓取markdown、图片和表格。可使用ai_extraction 从网页截图中提取AI内容 |
.pdf | ✔️ | 提取页面markdown和页面图片。可使用ai_extraction 进行AI布局分析 | |
Word文档 | .docx | ✔️ | 提取文本、表格和图片 |
PowerPoint | .pptx | ✔️ | 从幻灯片中提取文本和图片 |
视频 | .mp4 、.mov 、.wmv | ✔️ | 使用Whisper进行转录并提取帧 |
音频 | .mp3 、.wav | ✔️ | 使用Whisper进行转录 |
Jupyter笔记本 | .ipynb | ✔️ | 提取markdown、代码、输出和图片 |
电子表格 | .csv 、.xls 、.xlsx | ❌ | 将每行转换为JSON格式,包括每行的索引 |
纯文本 | .txt 、.md 、.rtf 等 | ❌ | 简单文本提取 |
图片 | .jpg 、.jpeg 、.png | ✔️ | 在纯文本模式下使用pytesseract进行OCR |
ZIP文件 | .zip | ✔️ | 提取并处理包含的文件 |
目录 | 任何path/to/folder | ✔️ | 递归处理目录中的所有文件 |
YouTube视频(存在已知问题) | 以https://youtube.com 或https://www.youtube.com 开头的YouTube视频URL | ✔️ | 使用pytube下载视频,使用Whisper进行转录。为确保一致的提取,您可能需要修改pytube 安装以发送有效的用户代理头(参见此问题)。 |
推文 | 以https://twitter.com 或https://x.com 开头的URL | ✔️ | 使用非官方API,可能会意外失效 |
GitHub仓库 | 以https://github.com 或https://www.github.com 开头的GitHub仓库URL | ✔️ | 需要GITHUB_TOKEN环境变量 |
工作原理 🛠️
thepi.pe使用计算机视觉模型和启发式方法从源内容中提取干净的内容,并对其进行处理以便与语言模型或视觉transformer一起使用。thepi.pe的输出是包含源文档中所有内容的块列表。这些块可以轻松地使用thepipe.core.chunks_to_messages
转换为与任何LLM或多模态模型兼容的提示格式,格式如下:
[
{
"role": "user",
"content": [
{
"type": "text",
"text": "..."
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,..."
}
}
]
}
]
您可以直接将这些消息输入模型,或者使用chunker.chunk_by_document
、chunker.chunk_by_page
、chunker.chunk_by_section
、chunker.chunk_semantic
将这些消息分块,用于向量数据库(如ChromaDB)或RAG框架。可以使用.to_llamaindex
将块转换为LlamaIndex的Document/ImageDocument。
⚠️ 请注意您的模型的令牌限制很重要。 GPT-4o在提示中包含太多图像时无法正常工作(参见此讨论)。要解决这个问题,可以使用具有更大上下文窗口的LLM,使用
text_only=True
提取更大的文档,或将块嵌入到向量数据库中。
赞助商
感谢Cal.com赞助本项目。