はじめに
LLMにドキュメントを解析させるには、ドキュメントをテキストに変換する必要があります。
(最近では、APIに直接画像を設定して解析させる、VLMなどの手法が使えることもありますが、RAGなどでベクトル検索やキーワード検索を実装する際には依然としてドキュメントをテキストに変換する必要があります。)
本記事では、PDFを操作するライブラリであるPyMuPDFとVLMによる画像読み取りのマークダウン化を試した結果を記載します。
PyMuPDFとは
ドキュメントのデータ抽出、分析、変換、操作のための高性能な Python ライブラリです。
Artifex Softwareという企業により開発されている様です。
VLMとは
VLM(Vision-Language Model、視覚言語モデル)とは、画像や動画といった視覚情報とテキスト(言語情報)を同時に理解・処理できるAIモデルのことで、「画像の内容を説明する文章を生成する(画像キャプション生成)」、「画像について質問に答える(視覚質問応答)」、「テキストで指示して画像を生成する」など、視覚とテキストをまたいだ複雑なタスクが可能になっています。
本記事の検証ではGemini 1.5 Flashを利用しています。
検証内容
マークダウンファイル作成手順
- PyMuPDFによる文字起こし・表抽出結果の取得
- VLMによるPDFの画像抽出とマークダウン化の取得
※ PyMuPDFによる画像認識は別途Tesseract-OCRの有効化が必要であった為、今回PyMuPDFからはテキストと表の抽出のみ実施した。
検証環境
- 検証対象のPDF:環境省が公開している、「令和7年版 環境・循環型社会・生物多様性白書」および「こども環境白書(2019年版)」を利用しました。(参考資料ご参照ください)
- 利用API:Gemini 1.5 Flash
検証結果
結果まとめ
記載されている文字やを抜き出すだけであれば、PyMuPDFだけでも十分に出せて居ました。
しかし、マークダウン化して構造情報も保持したり、画像の内容を解説するとなると不十分で、VLMなどを活用した方が良い結果が見込めます。
参考資料
付録
- VLMによるマークダウン化のプロンプト
details
このPDFページの画像を見て、内容を適切なマークダウン形式に変換してください。
## 指示
- 画像に表示されているすべてのテキストを読み取ってください
- 視覚的なレイアウト(フォントサイズ、太字、配置など)から文書構造を判断してください
- 適切な見出し階層(#, ##, ###など)をつけてください
- 段落、リスト、引用などを適切にフォーマットしてください
- 表がある場合は、マークダウンの表形式で出力してください
- 図表や画像がある場合は、その内容を説明してください
- 数式や専門用語も正確に記述してください
## 出力形式
- マークダウン形式で出力してください
- コードブロック記号(```markdown など)は出力しないでください
- 余計な説明は不要です
上記の指示に従って、このページをマークダウン形式で出力してください。






