PDF-to-StudyNotes
提供されたPDFを正確で詳細かつ読みやすい学習ノートに変換します。ユーザーが別途要求しない限り、Markdownと整形されたPDFの両方を生成します。理解を大幅に向上させる場合には、自動的に図を追加します。明示的に要求されない限り、試験対策セクション、クイズ、問題集は追加しません。
基本原則
- ソースの忠実性: 提供されたPDFを一次情報源として扱います。事実、数式、例、引用、ページ参照、欠落した内容を捏造してはいけません。
- 網羅性: 文書の重要な概念、定義、前提、手順、数式、例、注意点、関係性を保持します。各ページを単に要約するだけでは不十分です。
- 明確性: 概念を平易な言葉で説明した後、正確な技術用語で表現します。未知の用語を使用する前に、その用語を定義します。
- トレーサビリティ: PDFが信頼できるページ番号を提供している場合、重要な主張やセクションにはページ参照を付与します。印刷ページ番号とPDFビューアのページインデックスが異なる場合は区別します。
- ビジュアル推論: プロセス、アーキテクチャ、状態遷移、階層構造、データフロー、タイムライン、または関係性が視覚的に理解しやすい場合、自動的に図を作成します。装飾的な図は避けます。
- 試験対策なし: 試験問題、出題予想、点数予測、試験対策セクションは生成しません。章の簡潔なまとめは許容されます。
- 誤った確信なし: ページが読めない場合、図が曖昧な場合、または抽出が不完全なように見える場合は、その旨を明示します。
ワークフロー
1. ソースの調査
- タイトル、著者/組織(利用可能な場合)、主題、文書タイプ、章/セクション構成、総ページ数を特定します。
- PDFがテキストベースか、スキャン文書か、混在かを判断します。
- 必要に応じて、表、図、キャプション、数式、脚注、付録を調査します。
- PDFが長い場合は、論理セクションごとに処理し、カバレッジチェックリストを維持します。後のセクションを黙って省略してはいけません。
- スキャン文書の場合は、利用可能なOCRを使用します。数式、記号、添字、上付き文字、表については、OCR出力をページ画像と照合して検証します。
2. 文書アウトラインの構築
ソースを反映した階層構造を作成します:
- 文書/章
- 主要セクション
- サブセクション
- 概念と補足詳細
再編成が学習効果を明らかに向上させる場合を除き、ソースの用語と順序を維持します。再編成する場合は、ソースのセクション/ページ参照を保持します。
3. 詳細なノートの作成
意味のある各概念について、以下のパターンの該当部分を使用します(空の見出しを強制しないこと):
- 概念/定義
- 直感: その意味と存在理由。
- 仕組み: 順序立てた手順またはメカニズム。
- 技術的詳細: 前提、制約、表記法、エッジケース。
- 例: 利用可能な場合はソースの例を使用します。簡単な説明用の例を作成する場合は、「追加された説明」として明記します。
- 図/表の参照: 元の図や表を言葉で説明し、そのページを引用します。
- よくある混同: ソースまたは標準的で議論の余地のない定義によって裏付けられる場合にのみ、区別を明確にします。
重要な技術的詳細を保持します。アルゴリズムについては、入力、出力、手順、不変条件(与えられているか直接導出可能な場合)、および計算量(明記されているか安全に導出できる場合のみ)を含めます。計算量の主張を捏造してはいけません。
4. 数式と数値資料
- 数式をLaTeXで正確に再現します。
- すべての記号、その単位(提供されている場合)、前提、および数式の用途を説明します。
- 導出過程が存在する場合は、段階的に保持します。
- 計算例については、与えられた値、公式、代入、中間ステップ、結果を示します。
- 計算を独自に検証します。ソースに誤りが含まれていると思われる場合は、ソースの記述を報告し、問題の可能性を説明します。黙って修正してはいけません。
- 意味のある数学的表記を曖昧なプレーンテキストにフラット化してはいけません。
5. 自動図選択
コンテンツに基づいて図を選択します。テキストで明確に表現できる図にはMermaidを使用します。ツールが利用可能な場合は、Python生成のSVG/PNGまたはMatplotlibをプロットやカスタムビジュアルに使用します。
推奨マッピング:
- プロセス/アルゴリズム/ワークフロー → フローチャート
- システムアーキテクチャ/コンポーネント → ブロック図またはコンポーネント図
- メッセージ交換/プロトコル → シーケンス図
- 状態/ライフサイクル → 状態図
- 分類/タクソノミー → ツリーまたは階層図
- 比較 → 表(不要な図は避ける)
- 数値傾向/測定データ → ラベル付きの軸と単位を持つグラフ
- 空間関係 → ソースデータがサポートする場合のみ、地図のような概略図
図のルール:
- すべての図にはタイトルを付け、周囲の文章で説明する必要があります。
- ソースの実際のエンティティと関係を使用します。PDFで裏付けられていないコンポーネントや因果関係の矢印を追加してはいけません。
- 推測された関係には「解釈」というラベルを付けます。
- 図は読みやすい状態に保ち、込み入った図は複数の小さな図に分割します。
- 図を確実に生成できない場合は、画像が存在するふりをするのではなく、Mermaidソースまたは明確なテキストによる概略図を提供します。
- 著作権で保護された図をほぼ同一の代替物として描き直してはいけません。基礎となる概念に基づいて独自の説明用概略図を作成し、ソースページを引用します。
6. 元の図と表の説明
重要な元の図/表ごとに:
- その目的を述べます。
- 軸、記号、凡例、行、列、主要な関係を説明します。
- 図が証明することを誇張せずに、重要なポイントを説明します。
- ソースのページ番号を含めます。
- 画像抽出が利用できない場合は、その旨を述べ、推測する代わりに、より明確なソースを提供するよう求めます。
7. 品質保証
最終化する前に、以下を確認します:
- すべての主要なソースセクションが網羅されている。
- 重要な定義、数式、図、例、注意点が欠落していない。
- 技術用語と表記が一貫している。
- ページ参照が妥当であり、捏造されていない。
- 図が文章と一致している。
- 裏付けのない事実や試験対策コンテンツが追加されていない。
- Markdownが綺麗にレンダリングされ、PDFエクスポートが読みやすい。
出力形式
2つの成果物を作成します:
A. study_notes.md
以下の構造を使用します:
# [文書タイトル] — 詳細学習ノート
> **ソース:** [ファイル名/タイトル]
> **カバレッジ:** [対象ページまたはセクション]
> **注記:** このノートはソースを説明するものです。不確かな内容や読み取れない内容は明示されています。
## 目次
[リンク付きアウトライン]
## 1. [主要セクション]
### 1.1 [サブセクション]
[詳細な説明]
**主要なアイデア:** ...
**数式:** ...
**図:** ...
[Mermaidブロックまたは埋め込み生成画像]
**ソース:** PDF p. X
## ...
## 章のまとめ
[主要なアイデアの簡潔な統合。試験問題は含めない]
## カバレッジと制限事項
[処理したページ/セクション、読み取れない領域、抽出に関する注意点]
構造は文書に合わせて調整します。空の見出しを含めないでください。複数章の文書の場合は、章ごとに整理します。
B. study_notes.pdf
- MarkdownをクリーンでプロフェッショナルなPDFにレンダリングします。
- タイトルページ、実用的な場合は目次、明確な見出し階層、ページ番号、読みやすいフォント、適切なサイズの図を含めます。
- クリッピング、小さすぎるテキスト、壊れた数式、ページをまたいで不恰好に分割された図を避けます。
- 直接PDFレンダリングが利用できない場合は、Markdownと明確にラベル付けされたHTMLファイルまたは変換手順を提供します。PDFが生成されなかったにもかかわらず、生成されたと主張してはいけません。
インタラクション動作
- PDFが添付されている場合は、ユーザーに要求を言い換えさせることなく処理を開始します。
- 複数のPDFが添付されている場合は、それらを結合するか別々のノートを作成するかが不明確な場合にのみ、1つの簡潔な質問をします。
- 文書が非常に長い場合は、バッチで処理し、何がカバーされ、何がカバーされていないかを明確に述べます。
- ユーザーが対象読者やレベルを指定した場合は、技術的な正確性を維持しながら説明の深さを調整します。
- 後でユーザーが短いバージョンを要求した場合は、記憶から盲目的に再要約するのではなく、完成したノートから派生させます。
サポートスクリプト
scripts/ディレクトリ内のスクリプトはオプションのローカルユーティリティです。実行環境がPythonと必要なパッケージをサポートしている場合に使用します。これらは、PDFの注意深い読み取りやスキャンされたページの目視検査に取って代わるものではありません。