内容
# PDF 内联图像 RAG MCP
用于从PDF中构建本地、可搜索的SQLite数据库,其中重要内容出现在内联图像、图表、图表或扫描图像块中。
关键规则很简单:
- 正常提取PDF文本。
- 只提取实际的PDF图像块,而不是整个页面的截图。
- 在页面文本流中插入图像占位符,位于其页面流位置。
- 存储每个提取的图像及其确切的PDF边界框。
示例 `text_with_images` 标记:
```text
[[IMAGE page=72 index=1 bbox=80.6,76.0,535.7,645.7 size=1896x2373 file=mtp-2_assets/images/page_0072_image_01.png]]
```
这为AI代理提供了足够的上下文,以便搜索正常文本,查找图像出现的位置,获取图像资产,对其进行字幕/OCR,并将字幕保存回可搜索索引。
## 安装
```bash
pip install git+https://github.com/Joncallim/pdf-inline-image-rag-mcp.git
```
用于本地开发:
```bash
git clone https://github.com/Joncallim/pdf-inline-image-rag-mcp.git
cd pdf-inline-image-rag-mcp
python -m venv .venv
. .venv/bin/activate
pip install -e ".[dev]"
```
## MCP 用法
将此服务器添加到您的MCP客户端:
```json
{
"mcpServers": {
"pdf-inline-image-rag": {
"command": "pdf-inline-image-rag-mcp"
}
}
}
```
可用工具:
- `build_pdf_rag`
- `search_pdf_rag`
- `get_pdf_page`
- `get_pdf_image`
- `list_uncaptioned_pdf_images`
- `save_pdf_image_caption`
- `inspect_pdf_rag`
典型流程:
1. 使用PDF路径和输出目录调用 `build_pdf_rag`。
2. 调用 `search_pdf_rag` 进行普通文本查询。
3. 当结果包含 `[[IMAGE ...]]` 时,调用 `get_pdf_page` 或 `get_pdf_image`。
4. 使用首选模型为图像添加字幕或进行OCR。
5. 调用 `save_pdf_image_caption` 以便将字幕添加到页面文本和FTS中。
## CLI 用法
构建数据库:
```bash
pdf-inline-image-rag build \
--input /path/to/file.pdf \
--output-dir outputs/pdf_rag \
--replace
```
仅构建选定的页面:
```bash
pdf-inline-image-rag build \
--input /path/to/file.pdf \
--output-dir outputs/pdf_rag \
--pages 1-10,42
```
搜索:
```bash
pdf-inline-image-rag search \
--db outputs/pdf_rag/file_rag.sqlite \
"sector method"
```
检查:
```bash
pdf-inline-image-rag inspect \
--db outputs/pdf_rag/file_rag.sqlite
```
## 输出布局
```text
outputs/pdf_rag/
file_rag.sqlite
file_rag_export.md
file_assets/
images/page_0001_image_01.png
visual_json/page_0001.visual.json
```
默认情况下,整个页面PNG渲染已禁用。仅在调试时使用 `--render-pages`。
## SQLite 表
`pages`:
- `text`:普通嵌入式PDF文本
- `text_with_images`:文本和内联图像占位符
- `markdown`:页面级检索文档
- `image_count`
- `needs_ocr`
`images`:
- `file_path`
- `bbox_x0`, `bbox_y0`, `bbox_x1`, `bbox_y1`
- `width`, `height`
- `block_number`
- `placeholder`
- `caption`
- `caption_model`
`pages_fts`:
- FTS5 索引,涵盖文本、图像占位符、markdown和保存的字幕。
## 备注
该项目并不发明图像字幕。它提取图像块并使其可被发现。使用OCR或视觉模型为提取的图像添加字幕,然后使用 `save_pdf_image_caption` 持久化字幕。