pdf4vllm について
pdf4vllmはビジョンLLM向けのPDF読み取りMCPサーバーで、テキストの破損やコンテキスト制限に対処しながらPDFを抽出する用途に適しています。テキストの破損を検知すると画像モードに切り替え、テキスト、表、画像の順序を保ちます。
主な機能
- 01テキスト破損を検知して画像モードに切替
- 02テキスト・表・画像を順序どおりに抽出
- 03コンテキストあふれを防ぐページ数制限
- 04ロゴ、線、ヘッダー、フッターを除外
- 05PDFの検索・読み取り・テキスト検索
活用シーン
- 01抽出テキストが破損したPDFを読む
- 02ページ数を制限して長いPDFを処理
- 03PDF内のテキストを検索
MCP 対応
`list_pdfs`、`read_pdf`、`grep_pdf`ツールをMCPクライアントに公開し、PDFの検索、読み取り、テキスト検索を可能にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
pdf4vllm
ビジョン LLM 向けに最適化された PDF 読み取り用 MCP サーバー。
한국어
문제
| 방식 | 문제점 |
|---|---|
| 텍스트 추출 | 인코딩 깨짐 → 쓰레기 출력, 이미지-텍스트 순서 뒤섞임 |
| 이미지 변환 | 토큰 폭발 (특히 페이지 많을 때) |
해결
pdf4vllm은 PDF가 지저분하다고 가정합니다.
- 텍스트 손상 자동 감지 → 이미지로 자동 전환
- 읽기 순서 보존 (텍스트 → 표 → 이미지 블록 순서대로)
- 페이지 제한으로 컨텍스트 오버플로우 방지
- 불필요한 이미지 자동 필터링 (로고, 선, 헤더/푸터)
설치
pip install pdf4vllm-mcp
# 또는
uvx pdf4vllm-mcp
Claude Desktop 설정
git clone https://github.com/PyJudge/pdf4vllm-mcp.git
cd pdf4vllm-mcp
python scripts/install_mcp.py
또는 직접 설정 (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"pdf4vllm": {
"command": "/python/경로",
"args": ["/pdf4vllm-mcp/경로/src/server.py"]
}
}
}
도구
| 도구 | 설명 |
|---|---|
list_pdfs | PDF 파일 찾기 (glob 패턴 name_pattern 지원) |
read_pdf | PDF 내용 블록으로 추출 |
grep_pdf | PDF 내 텍스트 검색 (pdfgrep 설치 필요) |
추출 모드
| 모드 | 설명 |
|---|---|
auto (기본) | 텍스트 추출 시도 → 손상 감지 시 이미지로 전환 |
text_only | 텍스트/표만 추출, 이미지 없음 |
image_only | 페이지를 이미지로만 렌더링 |
問題
| 方法 | 問題点 |
|---|---|
| テキスト抽出 | エンコーディングの破損 → 意味不明な出力、テキストと画像の順序が混在 |
| 画像変換 | トークンの爆発的な増加(特にページ数が多い場合) |
解決策
pdf4vllmは、PDFは乱雑なものだと想定しています。
- テキストの破損を自動検出 → 自動的に画像に切り替え
- 読み取り順序を保持(テキスト → 表 → 画像ブロックの順)
- ページ数の上限により、コンテキストのオーバーフローを防止
- 不要な画像(ロゴ、線、ヘッダー/フッター)を自動で除外
PDF Input
↓
Corruption Detection (pdfminer.six + pattern analysis)
↓
┌─────────────┬─────────────┐
│ Corrupted │ Clean │
│ → Image │ → Text + │
│ only │ Tables + │
│ │ Images │
└─────────────┴─────────────┘
↓
Ordered Blocks (JSON)
インストール
pip install pdf4vllm-mcp
# or run without installing
uvx pdf4vllm-mcp
Claude Desktop の設定
git clone https://github.com/PyJudge/pdf4vllm-mcp.git
cd pdf4vllm-mcp
python scripts/install_mcp.py
または、~/Library/Application Support/Claude/claude_desktop_config.jsonを手動で編集します。
{
"mcpServers": {
"pdf4vllm": {
"command": "/path/to/python",
"args": ["/path/to/pdf4vllm-mcp/src/server.py"]
}
}
}
Claude Code の設定
プロジェクトに.mcp.jsonを作成します。
{
"mcpServers": {
"pdf4vllm": {
"command": "uvx",
"args": ["pdf4vllm-mcp"]
}
}
}
ツール
| ツール | 説明 |
|---|---|
list_pdfs | glob フィルタリング(name_pattern)を使って PDF ファイルを検索 |
read_pdf | PDF の内容を順序付きブロックとして抽出 |
grep_pdf | pdfgrep を使って PDF 内のテキストを検索(pdfgrepのインストールが必要) |
抽出モード
| モード | 説明 |
|---|---|
auto(デフォルト) | テキスト抽出を試行 → 破損があれば画像に切り替え |
text_only | テキスト/表のみ。画像なし |
image_only | ページを画像としてのみレンダリング |
出力形式
{
"pages": [
{
"page_number": 1,
"content_blocks": [
{"type": "text", "content": "..."},
{"type": "table", "content": "| A | B |"},
{"type": "image", "content": "[IMAGE_0]"}
]
}
]
}
テキストが破損している場合:
{
"page_number": 2,
"content_blocks": [],
"text_corrupted": true,
"page_image": "[IMAGE_1]"
}
設定
config.jsonまたは環境変数:
{
"max_pages_per_request": 10,
"max_image_dimension": 842,
"page_image_dpi": 100
}
export PDF_MAX_PAGES=20
export PDF_PAGE_IMAGE_DPI=150
テストサーバー
pip install pdf4vllm-mcp[test]
python test_server.py
# → http://localhost:8000
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。