51
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

# 【AI駆動開発】100ページ超のPDFをMarkdownに変換してAIに読ませる方法

Last updated at Posted at 2026-01-29

【AI駆動開発】100ページ超のPDFをMarkdownに変換してAIに読ませる方法

はじめに

最近、大規模システムの引き継ぎ案件を受けました。
その案件はAI駆動の進め方が許可されていたので早速AIを利用して、引き継ぎどんどん進めていくぞ!
と思ったのですが、いくつか困ったことがありました。

そう、資料のほとんどがエクセルで構成されているのと、外部API仕様書のほとんどが100P以上あるPDFデータになっていました。
AIを利用する上で、エクセルなどはもちろんのこと、重厚長大なPDF資料を読み取ることも苦手でございます。
なので、各種ファイルをAIが読みやすい資料にするべく、マークダウンの形式に書き換えていく必要があります。

今回はその中でもPDFをマークダウンに変換する処理についてを紹介できればと思います。

この記事の最後に「ワークフロー」と「Pythonスクリプト」を載せています。
AntigravityやCursorをお使いの方は、それをコピペしてAIに「これでPDFを変換して」と伝えるだけで、あとはAIが勝手にやってくれます。人間がやることは、コーヒーを飲みながら進捗を眺めることくらいです☕


なぜPDFをそのままAIに渡せないのか?

「PDFをそのままアップロードすればいいじゃん」

...と思うじゃないですか。僕もそう思ってました。でも実際にやってみると、色々と辛いことが起きます。

問題点

問題 詳細
トークン消費が激しい 100ページ超のPDFをそのまま渡すと、コンテキストウィンドウを圧迫。「途中で切れちゃいました」が頻発
構造が失われる 表やレイアウトがフラットなテキストになり、「この数値は何の列?」状態に
検索・参照が困難 「この仕様はどこ?」と聞いても、AIが「たぶんこの辺...」みたいな曖昧な回答をしがち
差分管理ができない 仕様が更新されても、どこが変わったのかGitで追えない

解決策:Markdownに変換する

そこで考えたのが、PDFを一度「画像」に変換して、AIに「視覚的に読ませて」Markdownとして書き起こさせるというアプローチです。

Markdownに変換することで:

  • 構造化された情報として保持(見出し、表、箇条書き)
  • Gitで差分管理が可能(「あ、ここ変わったんだ」が一目瞭然)
  • AIが効率的に読み取れる形式に

人間にとっても、AIにとっても、幸せな形式。それがMarkdownです。


変換の全体像

今回のアプローチはこうです:

PDF → 画像(ページごと) → AI精読 → Markdown

「なぜ画像を経由するの?」と思うかもしれません。

理由は単純で、AIは画像を「見る」ことができるからです。PDFのテキスト抽出だと崩れてしまう表やレイアウトも、画像として渡せば「見たまま」を理解してくれます。人間と同じですね。


Step 1: PDFを画像に変換する

まずはPDFを1ページずつの画像ファイル(PNG)に変換します。

事前準備

# Pythonライブラリのインストール
pip install pdf2image Pillow

pdf2imageは内部でpopplerというツールを使うので、OSに合わせてインストールしてください:

macOS:

brew install poppler

Windows:
poppler for Windows からダウンロードして、PATHを通す

Linux:

sudo apt-get install poppler-utils

変換スクリプト

以下のスクリプトをpdf_to_images.pyとして保存します:

#!/usr/bin/env python3
"""
PDF to Images Converter
PDFファイルを各ページの画像ファイルに変換するスクリプト
"""

from pdf2image import convert_from_path
import os
import sys

def pdf_to_images(pdf_path, output_dir=None, dpi=150):
    """
    PDFを画像に変換
    
    Args:
        pdf_path: PDFファイルのパス
        output_dir: 出力先ディレクトリ(省略時はPDFと同名のフォルダ)
        dpi: 解像度(デフォルト150)
    """
    if output_dir is None:
        output_dir = os.path.splitext(pdf_path)[0]
    
    os.makedirs(output_dir, exist_ok=True)
    
    print(f"Converting: {pdf_path}")
    print(f"Output dir: {output_dir}")
    print("-" * 40)
    
    images = convert_from_path(pdf_path, dpi=dpi)
    
    for i, image in enumerate(images, 1):
        image_path = os.path.join(output_dir, f"page_{i:03d}.png")
        image.save(image_path, "PNG")
        print(f"[{i}/{len(images)}] Saved: {image_path}")
    
    print("-" * 40)
    print(f"Done! {len(images)} pages converted.")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python pdf_to_images.py <pdf_path>")
        sys.exit(1)
    
    pdf_to_images(sys.argv[1])

使い方

python pdf_to_images.py api_spec.pdf

これでapi_spec/page_001.pngpage_XXX.pngが生成されます。

199ページのPDFでも、だいたい2分くらいで完了します。コーヒーを淹れる時間もありません。


Step 2: AIに画像を「精読」させてMarkdownに変換

ここからがAI駆動の本領発揮です。

Antigravity(またはCursor)を起動して、こう伝えます:

api_spec/のpage_001.png〜page_020.pngを精読して、Markdownに変換して

するとAIが画像を1枚ずつ読み取り、構造化されたMarkdownに変換してくれます。


Step 3: 段階的に全ページを変換

100ページ超のPDFを一度に変換するのは現実的ではありません。
AIのコンテキストにも限界がありますし、途中でミスがあった場合に手戻りが大きくなります。

そこで、10〜20ページ単位で段階的に変換していきます:

セッション1: p1-20を変換(今日の仕事)
セッション2: p21-40を変換(明日の仕事)
セッション3: p41-60を変換(明後日の仕事)
...

進捗管理用の[task.md]なんかを用意しておくと、どこまでやったか忘れません:
こんな感じのやつです

# API仕様書変換タスク

## 進捗
- [x] p1-20: 認証・ユーザー管理
- [x] p21-40: 商品API
- [ ] p41-60: 注文API(次回ここから)
- [ ] p61-80: 決済API
- [ ] p81-100: エラーコード一覧

実例:経産省の調査報告書199ページをMarkdown化してみた

今回、実際に変換してみたのはこちらのPDFです:

令和2年度 中小企業のAI活用促進に関する調査事業 最終報告書(経済産業省)

  • 全199ページ
  • 表・グラフ・図が多数
  • AI導入の経済効果推計など、数値データが豊富

変換前(PDF p.7)

こんな感じのページです。棒グラフと表が混在した複雑なレイアウト:
page_007.png

「実際に、中小企業におけるAI導入インパクトとして、2025年までに経済効果11兆円・労働人口効果160万人相当を最大で推計」

グラフには業界別のインパクト推計、右側には2022年→2025年の比較表...
人間でも読み取りに時間がかかりそうなページです。

変換後(Markdown)

AIに精読させた結果がこちら:

## 実際に、中小企業におけるAI導入インパクトとして、2025年までに経済効果11兆円・労働人口効果160万人相当を最大で推計

### AI導入領域×業界毎の中小企業における経済効果推計

**対象**: 2025年; 4業界(製造、建設、卸・小売、サービス業の合計。その他業界除く)

**グラフの見方**:
- 面積は経済効果額(兆円)の比率
- 横軸: 領域毎の比率
- 縦軸: 同一領域内での業界毎の比率

#### 業界別の構成(縦軸)

| 業界 | 色 |
|---|---|
| 建設業 | 濃い青 |
| サービス業 | 青 |
| 卸・小売 | 水色 |
| 製造業 | 薄い水色 |

#### 課題に対応するAI導入領域(横軸: 1〜19)

| # | 領域 |
|---|---|
| 1 | 予知保全 |
| 2 | 需要予測 |
| 3 | 経理関連業務効率化 |
| 4 | データマーケティング |
| 5 | 不良品所・自動検出 |
| 6 | 企業間商談の効率化 |
| 7 | 人事業務・最適化 |
| 8 | 調達の効率化 |
| 9 | 棚割り・店舗レイアウト最適化 |
| 10 | 経費精算・給与支払い・業務自動化 |
| 11〜19 | (その他領域) |

---

### AI導入インパクト推計

**4業界にその他業界を加えた全業界**

| 指標 | 2022年 | 2025年 |
|---|---|---|
| **経済効果** | 2兆円 | **11兆円** |
| **労働人口効果** | 29万人 | **157万人** |

> ※人件費算出化による経済効果を含む。1人当たり年間給与350万円(例:給与、福利厚生)で除算して算出

---

### 注釈

1. 経営戦略、人事、財務、調達、製造、販売等、企業のバリューチェーンにおける30の課題領域を特定。そのうち、現在AIを活用することで対応し得る領域を19領域に厳選
2. 4業界(製造、建設、卸・小売、サービス)における試算。製造(IS)コード+金融業含む、他:サービスセクト提供引き上事業者含む、製造(17):小規模事業者除く、製造:製造工程施設

ちゃんと表になってる!

さらに注目してほしいのは:

  • グラフの凡例が表として整理された → 色と業界の対応が一目瞭然
  • 横軸の19領域がリスト化された → 「予知保全って何番目?」がCtrl+Fで即検索可能に
  • 注釈まで抽出されている → 小さい文字の脚注も見落とさない
  • グラフの「読み方」も言語化された → 「面積が経済効果の比率」という情報が明示的に

元のPDFだと「棒グラフをじっくり見て、凡例を確認して...」という作業が必要でしたが、Markdownならテキスト検索で一発です。


もう一つの例:19のAI導入領域(PDF p.8)

元のPDFでは箇条書きと番号付きリストが混在していましたが、AIがきれいに整理してくれました:
page_008.png

## 19のAI導入領域を特定

俯瞰的な事業の課題リストから中小企業ヒアリング・サーベイや業界エキスパートインタビュー・関係者との議論を通じ、中小企業課題に対応する**19のAI導入領域を特定**### 企業の課題に対するAI導入領域(19領域)

| # | 領域 |
|---|---|
| 1 | 機械・施設へのセンサー取付けによる予知保全を通じた逸失利益・保全費用の最小化 |
| 2 | 売上実績等の社内データ・気候等の外部データの分析による需要予測・在庫最適化を通じた業務効率化・人件費の削減 |
| 3 | 文字認識(AI-OCR)・RPAによる受注、請求・支払等の経理関連業務効率化 |
| 4 | 人事データのシフティング・パターン分析データ解析と適切な配置による人件費削減・売上増加 |
| 5 | 画像認識による不良品判断自動検出による検品作業効率化 |
| ... | (以下省略) |

19項目すべてがテーブル形式で整理され、Ctrl+Fで「予知保全」と検索すれば一発でヒットします。


実際にやってみた結果

Before

  • PDF 199ページ
  • AI単体では全体把握が困難
  • 「この数値どこにある?」→ 人力で探すハメに

After

  • Markdown 667行(約41KB)
  • 構造化されたテーブル・見出し
  • Ctrl+Fで一発検索
  • Gitで差分管理可能

所要時間

フェーズ 時間
PDF→画像変換 約2分
主要部分(p1-50)の変換 約15分
参考資料部分(p51-199) 段階的に実施中

正直、人間が手作業でやったら丸一日かかる作業が、1時間もかからず終わります。
空いた時間で別の仕事ができる。これぞAI駆動開発の醍醐味。


まとめ

項目 内容
課題 大量のPDF資料をAIで扱いたい
解決策 PDF → 画像 → AI精読 → Markdown
ポイント 10-20ページ単位で段階的に変換
効率化 ワークフロー化して再利用可能に

重厚長大なPDF資料も、Markdownに変換することでAI駆動開発の土台として活用できるようになります。

引き継ぎ案件や新規参画時に「資料がPDFばかりで辛い...」という方は、ぜひ試してみてください!

付録:コピペで使えるワークフロー

以下のワークフローをAntigravityやCursorに渡せば、あとはAIが勝手にやってくれます。

使い方:

  1. このワークフローをコピー
  2. AIに「このワークフローに従って、{フォルダ名}のPDFをMarkdownに変換して」と伝える
  3. ☕コーヒーを飲みながら待つ
# PDF完全Markdown変換ワークフロー

## 概要
PDFから変換された連番画像ファイル(page_001.png〜)を精読し、AI可読なMarkdownドキュメントに完全変換する。

## 前提条件
- PDFが画像に変換済み
- 画像ファイルが `{フォルダ名}/page_001.png``page_XXX.png` の形式で存在

---

## ステップ1: 対象ファイルの確認

1. ユーザーに以下を確認する:
   - **対象フォルダ**: 画像が格納されているフォルダパス
   - **変換範囲**: 開始ページ〜終了ページ(例: p56-70)
   - **出力先.mdファイル**: 既存ファイルに追記 or 新規作成

2. フォルダ内の画像ファイル数を確認

ls {フォルダパス}/page_*.png | wc -l


---

## ステップ2: ページ精読(10-20ページ単位)

1. 指定範囲のページ画像を順番に確認
- 1回に5ページ程度を並行して読み込み可能

2. 各ページの内容を把握:
- **テキスト**: 見出し、本文、箇条書き
- **表**: 行・列構造、ヘッダー、データ
- **図・イラスト**: 図の意味・内容
- **引用・コメント**: ヒアリング結果など

---

## ステップ3: Markdownに変換

### 変換ルール

| 元の形式 | Markdown形式 |
|---|---|
| 大見出し | `# 見出し` または `## 見出し` |
| 中見出し | `### 見出し` |
| 箇条書き | `- 項目` または `1. 項目` |
| 表 | Markdownテーブル形式 |
| 図・イラスト | 説明テキスト(図の内容を文章で再現) |
| 引用・コメント | `> 引用テキスト` |
| 強調 | `**太字**` |

### 変換時の注意点
- 表の列数を揃える(`|---|---|---|`)
- 図は「【図】〇〇の概念図」などで明示し、内容を説明
- ページ番号を適宜記載(`(p.XX)`)

---

## ステップ4: .mdファイルに追記

1. 既存の.mdファイルの末尾に変換内容を追加
2. または新規.mdファイルを作成

---

## ステップ5: 進捗管理(task.md更新)

1. タスク管理ファイル(task.md)が存在する場合は更新
2. 変換完了した範囲にチェックを付ける

---

## ステップ6: 完了報告

1. 変換したページ範囲を報告
2. 追加した内容のサマリーを提示
3. 次に変換すべき範囲を提案

---

## 所要時間の目安

| ページ数 | 所要時間 | 備考 |
|---|---|---|
| 10ページ | 5-10分 | 図表中心(文字少なめ) |
| 20ページ | 10-20分 | 詳細説明あり(文字多め) |
| 50ページ | 30-60分 | 複数セッションに分割推奨 |

---

## 品質チェックポイント

- [ ] 表の列が正しく揃っているか
- [ ] 見出し階層が適切か
- [ ] 図の内容が説明されているか
- [ ] ページ番号の対応が明確か
- [ ] 誤字・脱字がないか
51
47
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?