pptx2md2 プログラム仕様
概要: PowerPointファイルからテキスト、数式、図を抽出し、Markdown形式で出力するスクリプトです。
詳細説明: このスクリプトは、`python-pptx`と`lxml`ライブラリを使用して、PPTXファイルの内部構造を解析します。 各スライドの内容を、Markdown形式の出力ファイルに変換します。 具体的には、以下の要素を抽出してMarkdownに変換します。 - スライドのタイトル - テキストボックス内のテキスト(箇条書きのレベルと改行を保持) - Office Math Markup Language (OMML) で記述された数式(LaTeX形式に変換) - スライドに埋め込まれた画像(指定されたディレクトリに保存し、Markdownからリンク)
変換されたMarkdownファイルは、プレゼンテーションのコンテンツを再利用しやすい形で提供します。
関連リンク: pptx2md2.py ドキュメント
- converter.pptx2md2.extract_content_to_markdown(input_pptx, output_md, image_dir, include_xml=False)[ソース]
概要: PowerPointファイルからコンテンツを抽出し、Markdownファイルに変換して保存します。
詳細説明: python-pptx を使用して指定されたPPTXファイルを開き、各スライドを順番に処理します。 各スライドから以下のコンテンツを抽出し、Markdown形式で出力ファイルに書き込みます。 1. スライドタイトル: Markdownのヘッダーとして追加されます。 2. テキスト: スライド内のすべての段落 (a:p) を走査し、テキスト、改行 (a:br)、
および数式 (m:oMath, m:oMathPara) を結合して、Markdownの箇条書きとして出力します。 箇条書きのレベルは a:pPr/@lvl 属性に基づいて適切にインデントされます。
数式: OMML形式の数式を omml_to_latex 関数でLaTeX形式に変換し、 Markdownの数式ブロック ($$ ... $$) として出力します。重複する数式は一度だけ処理されます。
図: スライドに埋め込まれた画像を抽出し、指定された image_dir に保存します。 保存された画像はMarkdownの画像リンク () として埋め込まれます。
処理中にファイル読み込みや画像保存に関するエラーが発生した場合は、コンソールにエラーメッセージが表示されます。
- パラメータ:
input_pptx -- str 入力するPowerPoint (.pptx) ファイルのパス。
output_md -- str 出力するMarkdown (.md) ファイルのパス。
image_dir -- str 抽出された画像を保存するディレクトリのパス。存在しない場合は作成されます。
include_xml -- bool 数式の元のOMML XMLを出力するかどうかを示すフラグ。(この関数内では現在未使用)
- 戻り値:
None
- converter.pptx2md2.get_slide_title(slide)[ソース]
概要: スライドからタイトルを抽出します。
詳細説明: 指定されたスライドオブジェクトにタイトルプレースホルダーが存在する場合、そのテキストコンテンツを返します。 タイトルプレースホルダーが見つからない場合は、「無題のスライド」というデフォルト文字列を返します。 抽出されたテキストは前後の空白が取り除かれます。
- パラメータ:
slide -- pptx.slide.Slide タイトルを抽出する対象のスライドオブジェクト。
- 戻り値:
str スライドのタイトル文字列。
- converter.pptx2md2.initialize()[ソース]
概要: コマンドライン引数を解析し、設定を初期化します。
詳細説明: argparse モジュールを使用して、以下のコマンドライン引数を定義および解析します。 - -i または --input: 入力するPowerPointファイル名 (必須) - -o または --output: 出力するMarkdownファイル名 (必須) - --xml: 数式の元のOMML XMLを出力するかどうかを示すフラグ - --imagedir: 画像を保存するディレクトリ名 (デフォルトは"images") - --pause: 終了時に待機するかどうかを示すフラグ (デフォルトは0) 解析された引数は argparse.Namespace オブジェクトとして返されます。
- 戻り値:
argparse.Namespace 解析されたコマンドライン引数を含むオブジェクト。
- converter.pptx2md2.main()[ソース]
概要: スクリプトの主要な実行フローを制御します。
詳細説明: コマンドライン引数を初期化し、入力PowerPointファイルの存在を確認します。 ファイルが存在しない場合はエラーメッセージを表示して終了します。 その後、extract_content_to_markdown 関数を呼び出して、PowerPointからMarkdownへの変換処理を実行します。 終了時に`pause`フラグが設定されている場合は、ユーザーの入力を待ちます。
- 戻り値:
None
- converter.pptx2md2.omml_to_latex(element)[ソース]
概要: Office Math Markup Language (OMML) 要素をLaTeX形式に変換します。
詳細説明: OMMLのXML要素を再帰的に走査し、対応するLaTeX表現を生成します。 以下のような主要なOMML構造を扱います。 - m:f: 分数 (frac) - m:rad: 根号 (sqrt) - m:sSup: 上付き文字 (^) - m:sSub: 下付き文字 (_) - m:sSubSup: 下付き上付き文字 (_, ^) - m:d: 区切り文字 (括弧など) - m:r: テキストのまとまり - m:t: テキストコンテンツ (_safe_text_replace_math_unicode`で処理) - `m:limLow, m:limUpp: 限界式の下限、上限 - m:int, m:nary: 積分、多項演算子 (総和、総乗など)
未知のタグや処理されないタグについては、その子要素を再帰的に処理して結合します。
- パラメータ:
element -- lxml.etree._Element 変換するOMML要素。
- 戻り値:
str 変換されたLaTeX文字列。
- converter.pptx2md2.split_latex_blocks(s: str)[ソース]
概要: LaTeX文字列を改行コード \ で分割し、個別のブロックのリストを生成します。
詳細説明: 入力されたLaTeX文字列を正規表現 r'\' (すなわち `` という文字列) で分割します。 分割された各パーツは前後の空白が取り除かれ、空文字列ではないものだけがリストに含まれます。 入力文字列が空の場合や、分割後に有効なパーツがない場合は空のリストを返します。
- パラメータ:
s -- str 分割するLaTeX文字列。
- 戻り値:
list[str] 分割されたLaTeXブロックのリスト。