# PDF Reader

> Reads PDF files and extracts text content in Markdown format. Handles tables and multi-page documents. Use when needing to read PDF documents. Requires pdfplumber package.

- Skill: `childbamboo/pdf-reader` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add childbamboo/pdf-reader`
- Raw SKILL.md: https://api.skillmd.com/api/skills/childbamboo/pdf-reader/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: childbamboo (https://skillmd.com/u/childbamboo)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/childbamboo/pdf-reader

---


# PDF Reader

PDF ファイルをテキスト抽出して Markdown 形式に変換するスキルです。

## クイックスタート

### 基本的な使い方

```bash
# WSL環境でPythonスクリプトを実行
wsl python3 scripts/read_pdf.py "/mnt/c/path/to/file.pdf"
```

### Markdown形式で保存

1. スクリプトでテキスト抽出
2. Write ツールで .md ファイルに保存

## 前提条件

pdfplumber パッケージが必要です：

```bash
wsl pip3 install pdfplumber
```

## 使用例

### 例1: PDF ファイルを読み込んで内容を表示

```
User: "C:\Users\keita\repos\guideline.pdf を読み込んで"
Assistant:
1. Windowsパスを WSL パスに変換: /mnt/c/Users/keita/repos/guideline.pdf
2. wsl python3 scripts/read_pdf.py を実行
3. 抽出されたテキストを Markdown 形式で表示
```

### 例2: PDF を Markdown に変換して保存

```
User: "ガイドライン.pdf を Markdown に変換して保存"
Assistant:
1. scripts/read_pdf.py でテキスト抽出
2. Markdown形式で構造化（ページごとに見出し、テーブルも含む）
3. Write ツールで ガイドライン.md に保存
4. 保存完了を報告
```

## ワークフロー

### 単一ファイルの読み込み

1. ユーザーが PDF ファイルパスを指定
2. Windows パスを WSL パス形式に変換 (`C:\` → `/mnt/c/`)
3. `wsl python3 scripts/read_pdf.py` を実行
4. 抽出されたテキストを Markdown 形式で表示または保存

### 複数ファイルの一括処理

1. Glob で .pdf ファイルを検索
2. 各ファイルに対してスクリプトを実行
3. 結果をまとめて報告

## 出力形式

### Markdown 構造

```markdown
# [PDFファイル名]

**Total Pages:** 10

---

## Page 1

[ページ1のテキスト内容]

### Tables

**Table 1:**

| 列1 | 列2 | 列3 |
| --- | --- | --- |
| データ1 | データ2 | データ3 |

---

## Page 2

[ページ2のテキスト内容]

---
```

## スクリプト詳細

Python スクリプトは `scripts/read_pdf.py` に配置されています。

**主な機能:**
- ページごとのテキスト抽出
- テーブルの Markdown 化
- 複数ページの構造化
- エラーハンドリング

**使い方:**
```bash
python scripts/read_pdf.py <file_path>
```

## 対応機能

- ✅ テキスト抽出（全ページ）
- ✅ テーブルの Markdown 化
- ✅ ページ番号の保持
- ✅ 構造化された出力
- ⚠️ 画像からのテキスト抽出（OCR未対応）
- ⚠️ 複雑なレイアウトは簡略化

## 制限事項

- スキャンされた PDF（画像のみ）からはテキスト抽出不可
- OCR 機能は含まれません
- 複雑なレイアウトは簡略化されます
- フォント情報、色などのスタイルは失われます
- 埋め込みオブジェクトは抽出されません

## トラブルシューティング

### pdfplumber がインストールされていない

```bash
wsl pip3 install pdfplumber
```

### テキストが抽出されない

- PDF がスキャン画像の可能性があります（OCR が必要）
- PDF が暗号化されている可能性があります
- テキストレイヤーがない PDF かもしれません

### 文字化けする

```bash
# 日本語対応の確認
wsl locale
# UTF-8 が含まれていることを確認
```

### メモリ不足エラー

大きな PDF ファイルの場合、ページごとに分割して処理することを検討してください。

## パス変換

Windows パスから WSL パスへの変換：

- `C:\Users\...` → `/mnt/c/Users/...`
- `D:\Projects\...` → `/mnt/d/Projects/...`
- バックスラッシュ `\` をスラッシュ `/` に変換

## 関連ツール

- **PyPDF2**: 軽量な代替ライブラリ
- **pdfminer.six**: より詳細な制御が必要な場合
- **Camelot**: テーブル抽出特化
- **OCRmyPDF**: スキャン PDF に OCR を適用

## 高度な使い方

### 特定のページのみ抽出

スクリプトを修正して `pdf.pages[0:5]` のようにスライスを使用できます。

### テーブルのみ抽出

スクリプト内の `extract_tables()` 部分のみを使用します。

### OCR が必要な場合

pytesseract と pdf2image を組み合わせて使用します（別スキルとして作成推奨）。

## バージョン履歴

- v1.0.0 (2026-01-06): 初期リリース
  - 基本的なテキスト抽出機能
  - テーブル Markdown 化対応
  - WSL環境での動作
  - ページごとの構造化

