API#

PyMuPDF4LLM API#

property version#

ライブラリのバージョンを出力します。

to_markdown(doc: pymupdf.Document | str, *, detect_bg_color: bool = True, dpi: int = 150, use_ocr: bool = True, ocr_dpi: int = 400, embed_images: bool = False, extract_words: bool = False, filename: str | None = None, fontsize_limit: float = 3, footer: bool = True, force_text: bool = True, graphics_limit: int = None, hdr_info: Any = None, header: bool = True, ignore_alpha: bool = False, ignore_code: bool = False, ignore_graphics: bool = False, ignore_images: bool = False, image_format: str = 'png', image_path: str = '', image_size_limit: float = 0.05, margins: int = 0, page_chunks: bool = False, page_height: float = None, page_separators: bool = False, page_width: float = 612, pages: list | range | None = None, show_progress: bool = False, table_strategy: str = 'lines_strict', use_glyphs: bool = False, write_images: bool = False) str | list[dict]#

ファイルのページを読み取り、各ページのテキストを Markdown 形式で出力します。詳細な動作は複数のパラメータで制御できます。 Markdown テキストからページチャンクを構築する機能がサポートされていることにご注意ください。

パラメータ:
  • doc (Document,str) -- ファイルは、ファイルパス文字列、または PyMuPDF Document (pymupdf.open で作成) のいずれかで指定します。pathlib.Path 指定、Pythonファイル風オブジェクト、メモリ内ドキュメントなどを使用する場合は、PyMuPDF Document必ず 使用してください。

  • detect_bg_color (bool) -- Ignored by PyMuPDF Layout ページの全体的な背景色を簡易的にチェックします(デフォルトは True)。テキストやベクターがこの色の場合、無視されます。検出精度が向上する可能性があります。

  • dpi (int) -- 希望する画像解像度をドット・パー・インチ(DPI)で指定します。write_images=True または embed_images=True の場合のみ有効です。デフォルト値は150です。

  • use_ocr (bool) -- Only valid with PyMuPDF Layout OCR機能 を使用してページの分析を支援します。

  • ocr_dpi (int) -- Only valid with PyMuPDF Layout ページの中間画像にOCRを適用する際の希望する画像解像度をドット・パー・インチ(DPI)で指定します。デフォルト値は400です。ページがOCRの恩恵を受けると判断された場合(テキストが無いまたは少ない、ページの大部分が画像または文字のようなベクターで覆われているなど)のみ有効です。大きな値を指定するとOCRの精度が向上する可能性がありますが、メモリ要件と処理時間が増加します。また、画像が過度にシャープ化されてOCRの精度が低下するリスクもあります。そのため、デフォルト値はおそらく十分に高い値となっています。

  • embed_images (bool) -- write_images と同様ですが、画像はbase64エンコードされた文字列としてマークダウンテキストに含まれます。write_images とは相互排他的であり、image_path は無視されます。これによりマークダウンテキストのサイズが大幅に増加する可能性があります。

  • extract_words (bool) -- Ignored by PyMuPDF Layout True を指定すると page_chunks=True が強制され、各ページの辞書にキー「words」が追加されます。その値は、PyMuPDFの Page メソッド get_text("words") によって提供される単語のリストです。このリスト内の単語の順序は、抽出されたテキストと同じです。「レイアウトモード」では無視されます。

  • filename (str) -- 書き込まれる画像の希望するファイル名を上書きまたは設定します。ドキュメントがメモリオブジェクト(固有のファイル名を持たない)として提供される場合に便利です。

  • fontsize_limit (float) -- Ignored by PyMuPDF Layout テキスト抽出時に考慮するフォントサイズの下限を設定します。フォントサイズが設定値より小さい場合、そのテキストは抽出対象として考慮されません。デフォルトは 3 で、フォントサイズが >= 3 のテキストのみが抽出対象として考慮されます。

  • footer (bool) -- Only valid with PyMuPDF Layout ページフッターの内容を含めるか除外するかを切り替えるブール値です。このパラメータは、ドキュメント全ページのフッターテキストを含めるか省略するかを制御します。ドキュメントに繰り返しのフッター内容があり、全体的な抽出データに価値を追加しない場合に便利です。デフォルトは True で、フッターの内容が考慮されることを意味します。

  • force_text (bool) -- 画像やグラフィックが重なっている場合でもテキスト出力を生成します。このテキストは該当する画像の後に表示されます。

  • graphics_limit (int) -- Ignored by PyMuPDF Layout 過剰な量のベクターグラフィック要素への対処を制限するために使用します。科学文書や、グラフィックコマンドでテキストをシミュレートするページには、これらのオブジェクトが数万個含まれている場合があります。ベクターグラフィックは複数の目的で分析されるため、実行時間がすぐに許容できないレベルになる可能性があります。このパラメータを使用すると、ベクターグラフィックの数が閾値を超えた場合、すべてのベクターグラフィックが無視されます。

  • hdr_info -- Ignored by PyMuPDF Layout 独自のヘッダー検出ロジックを提供したい場合に使用します。これは、呼び出し可能オブジェクト、または get_header_id という名前のメソッドを持つオブジェクトです。テキストスパン(extractDICT() に含まれるスパン辞書)とキーワードパラメータ「page」(所有する Page オブジェクト)を受け入れる必要があります。空文字列 "" または最大6個の "#" 文字とその後に続く1つのスペースを返す必要があります。省略した場合(None)、ドキュメント全体がスキャンされ、最も一般的なフォントサイズを見つけ、それに基づいてヘッダーレベルが導出されます。この動作を完全に回避するには、hdr_info=lambda s, page=None: "" または hdr_info=False を指定してください。

  • header (bool) -- Only valid with PyMuPDF Layout ページヘッダーの内容を含めるか除外するかを切り替えるブール値です。このパラメータは、ドキュメント全ページのヘッダー内容を含めるか省略するかを制御します。ドキュメントに繰り返しのヘッダー内容があり、全体的な抽出データに価値を追加しない場合に便利です。デフォルトは True で、ヘッダーの内容が考慮されることを意味します。

  • ignore_alpha (bool) -- Ignored by PyMuPDF Layout True の場合、完全に透明なテキストも含めます。デフォルトは False で、透明なテキストは無視され、通常は検出精度が向上します。「レイアウトモード」では無視されます。

  • ignore_code (bool) -- True の場合、等幅テキスト行は特別なフォーマットを受けません。コードブロックは生成されなくなります。extract_words=True が使用される場合、この値は True に設定されます。

  • ignore_graphics (bool) -- Ignored by PyMuPDF Layout (v.0.0.20の新機能) ページ上のベクターグラフィックを無視します。ページが非常に混雑している場合(プレゼンテーションスライドを表すドキュメントでよくあるケース)、テキストを正しく検出するのに役立つ可能性があります。また、処理時間も短縮されます。これにより、テーブル検出が自動的に無効になります。

  • ignore_images (bool) -- Ignored by PyMuPDF Layout (v.0.0.20の新機能) ページ上の画像を無視します。ページが非常に混雑している場合(プレゼンテーションスライドを表すドキュメントでよくあるケース)、テキストを正しく検出するのに役立つ可能性があります。また、処理時間も短縮されます。

  • image_format (str) -- 拡張子を使用して希望する画像形式を指定します。デフォルトは「png」(ポータブルネットワークグラフィックス)です。他の一般的な形式としては「jpg」があります。使用可能な値は、すべての サポートされている出力形式 です。

  • image_path (str) -- このフォルダに画像を保存します。write_images=True の場合に有効です。デフォルトはスクリプトディレクトリのパスです。

  • image_size_limit (float) -- Ignored by PyMuPDF Layout 0 <= value < 1 の値である必要があります。width / page.rect.width <= image_size_limit または height / page.rect.height <= image_size_limit の場合、画像は無視されます。たとえば、デフォルト値の0.05は、画像が含まれる対象として考慮されるには、画像の幅と高さがそれぞれページの幅と高さの5%より大きくなければならないことを意味します。

  • margins (float,list) --

    Ignored by PyMuPDF Layout ページの境界を指定する浮動小数点数、または2個もしくは4個の浮動小数点数のシーケンスです。マージン内のオブジェクトのみが出力対象として考慮されます。

    • margin=f(left, top, right, bottom) に対して (f, f, f, f) を生成します。

    • (top, bottom)(0, top, 0, bottom) を生成します。

    • 常にページ全体を読み取る (デフォルト) には、margins=0 を使用します。

  • page_chunks (bool) --

    True の場合、出力は Document.page_count 個の辞書のリスト(ページごとに1つ)になります。各辞書は以下の構造を持ちます:

    • "metadata" - ドキュメントのメタデータ Document.metadata から構成される辞書で、追加のキー "file_path" (ファイル名)、"page_count" (ドキュメント内のページ数)、および "page_number" (1ベースのページ番号)で拡張されています。

    • "toc_items" - このページを指す目次項目のリストです。このリストの各項目は [lvl, title, pagenumber] の形式を持ち、lvl は階層レベル、title は文字列、pagenumber は1ベースのページ番号です。

    • "tables" - このページ上のテーブルのリストです。各項目は、キー「bbox」、「row_count」、「col_count」を持つ辞書です。キー「bbox」は、ページ上のテーブルの位置を示すタプル形式の pymupdf.Rect です。

    • "images" - Empty list with PyMuPDF Layout ページ上の画像のリストです。これは、ページメソッド Page.get_image_info() のコピーです。

    • "graphics" - Empty list with PyMuPDF Layout ページ上のベクターグラフィック矩形のリストです。これは、メソッド Page.cluster_drawings() によって提供されるクラスタ化されたベクターグラフィックのバウンディングボックスのリストです。

    • "text" - Markdown テキストとしてのページ内容です。

    • "words" - Empty list with PyMuPDF Layout extract_words=True が使用された場合に含まれます。これは、page.get_text("words") によって提供されるタプル (x0, y0, x1, y1, "wordstring", bno, lno, wno) のリストです。ただし、これらのタプルの 順序 はマークダウンテキスト文字列で生成される順序と同じであり、したがってマルチカラムテキストを尊重します。これはテーブル内のテキストにも当てはまります。単語はテーブル行のセルの順序で抽出されます。

  • page_height (float) -- 希望するページの高さを指定します。関連性については page_width パラメータを参照してください。デフォルトの None を使用する場合、ドキュメントは page_width の幅を持つ1つの大きなページとして表示されます。したがって、この場合、マークダウンページ区切り文字は発生せず(最後のものを除く)、それぞれ1つのページチャンクのみが返されます。

  • page_separators (bool) -- True の場合、各ページ出力の最後に文字列 --- end of page=n --- を挿入します。デバッグ目的を想定しています。ページ番号は0ベースです。区切り文字列は改行で囲まれます。デフォルトは False です。

  • page_width (float) -- 希望するページの幅を指定します。PDF、XPSなどの固定ページ幅を持つドキュメントでは無視されます。しかし、電子書籍、オフィス [2] ファイル、テキストファイルなどの リフロー可能な ドキュメントには固定のページサイズがありません。これらはデフォルトでレター形式の幅(612)と 無制限の ページの高さを持つと見なされます。これは、ドキュメント全体が1つの大きなページとして扱われる ことを意味します。

  • pages (list) -- オプションで、出力対象として考慮するページを指定します(注意:0ベースのページ番号を指定してください)。省略した場合(None)、すべてのページが処理されます。整数項目を持つ任意のPythonシーケンスが受け入れられます。シーケンスはソートされ、一意の項目のみを含むように処理されます。

  • show_progress (bool) -- デフォルトは False です。True を指定すると、ページが変換される際に進捗バーが表示されます。インストールされている場合はパッケージ tqdm が使用され、それ以外の場合は組み込みのテキストベースの進捗バーが使用されます。

  • table_strategy (str) -- Ignored by PyMuPDF Layout 参照: テーブル検出戦略。デフォルトは "lines_strict" で、背景色を無視します。状況によっては、他の戦略がより成功する場合があります。たとえば、すべてのベクターグラフィックオブジェクトを検出に使用する "lines" などです。

  • use_glyphs (bool) -- Ignored by PyMuPDF Layout (v.0.0.19の新機能) デフォルトは False です。True を指定すると、フォントがUnicode値を保存していない場合、文字自体の代わりに文字のグリフ番号が使用されます。

  • write_images (bool) --

    画像またはベクターグラフィックに遭遇した場合、該当するページ領域から画像が作成され、指定されたフォルダに保存されます。これらの画像を指す Markdown 参照が生成されます。これらの領域に含まれるテキストは、テキスト出力には含まれません(ただし、画像の一部として表示されます)。したがって、たとえば、ドキュメントにフルページ画像上に書かれたテキストがある場合は、このパラメータを False に設定してください。

    PyMuPDF Layout を使用する場合、レイアウトモジュールによって「picture」として分類されたバウンディングボックスは、テキスト、画像、またはベクターグラフィックの混在に関係なく、画像として扱われます。force_text=True が使用された場合、これらの領域からテキストが抽出され、該当する画像参照の後に出力に含まれます。

戻り値:

選択されたすべてのドキュメントページの結合されたテキストの文字列、または page_chunks=True の場合は辞書のリストです。

to_text(doc: pymupdf.Document | str, *, **kwargs) str#

ファイルのページを読み取り、各ページのテキストを TXT 形式で出力します。

重要

Only valid with PyMuPDF Layout このメソッドは「レイアウトモード」でのみ利用可能です。つまり、pymupdf4llmのインポートが import pymupdf.layout ステートメントの 後に 行われた場合のみです。

パラメータ:
  • doc (Document,str) -- ファイルは、ファイルパス文字列、または PyMuPDF Document (pymupdf.open で作成) のいずれかで指定します。pathlib.Path 指定、Pythonファイル風オブジェクト、メモリ内ドキュメントなどを使用する場合は、PyMuPDF Document必ず 使用してください。

  • header (bool) -- ページヘッダーの内容を含めるか除外するかを切り替えるブール値です。このパラメータは、ドキュメント全ページのヘッダー内容を含めるか省略するかを制御します。ドキュメントに繰り返しのヘッダー内容があり、全体的な抽出データに価値を追加しない場合に便利です。デフォルトは True で、ヘッダーの内容が出力されることを意味します。

  • footer (bool) -- ページフッターの内容を含めるか除外するかを切り替えるブール値です。このパラメータは、ドキュメント全ページのフッター内容を含めるか省略するかを制御します。ドキュメントに繰り返しのフッター内容があり、全体的な抽出データに価値を追加しない場合に便利です。デフォルトは True で、フッターの内容が出力されることを意味します。

  • ignore_code (bool) -- True の場合、等幅テキスト行は特別なフォーマットを受けません。ブロックは書き込まれず、テキスト行は連続して書き込まれます。

  • pages (list) -- オプションで、出力対象として考慮するページを指定します(注意:0ベースのページ番号を指定してください)。省略した場合(None)、すべてのページが処理されます。整数項目を持つ任意のPythonシーケンスが受け入れられます。シーケンスはソートされ、一意の項目のみを含むように処理されます。

  • force_text (bool) -- 画像やグラフィックが重なっている場合でもテキスト出力を生成します。このテキストは該当する画像参照の後に表示されます。ただし、画像(つまり「picture」領域)はテキスト出力には書き込まれず、==> picture [width x height] <== のようなテキスト行として出力に表示されます。

  • show_progress (bool) -- デフォルトは False です。True を指定すると、ページが変換される際に進捗バーが表示されます。インストールされている場合はパッケージ tqdm が使用され、それ以外の場合は組み込みのテキストベースの進捗バーが使用されます。

to_json(doc: pymupdf.Document | str, *, **kwargs) str#

ドキュメントと指定されたページを解析し、結果を JSON 形式の文字列に変換します。

重要

Only valid with PyMuPDF Layout このメソッドは「レイアウトモード」でのみ利用可能です。つまり、pymupdf4llmのインポートが import pymupdf.layout ステートメントの 後に 行われた場合のみです。

パラメータ:
  • doc (Document,str) -- ファイルは、ファイルパス文字列、または PyMuPDF Document (pymupdf.open で作成) のいずれかで指定します。pathlib.Path 指定、Pythonファイル風オブジェクト、メモリ内ドキュメントなどを使用する場合は、PyMuPDF Document必ず 使用してください。

  • image_dpi (int) -- 希望する画像解像度をドット・パー・インチ(DPI)で指定します。デフォルト値は150です。write_images=True または embed_images=True のいずれかのパラメータが使用される場合にのみ有効です。

  • image_format (str) -- 拡張子を使用して希望する画像形式を指定します。デフォルトは「png」(ポータブルネットワークグラフィックス)です。他の一般的な形式としては「jpg」があります。使用可能な値は、すべての サポートされている出力形式 です。write_images=True または embed_images=True のいずれかのパラメータが使用される場合にのみ有効です。

  • image_path (str) -- このフォルダに画像を保存します。write_images=True の場合に有効です。デフォルトはスクリプトディレクトリのパスです。「picture」として分類されたページ領域は、指定された場所に画像ファイルとして書き込まれます。画像ファイル名は {image_path}/{filename}-pagenumber-image_number.{image_format} の形式になります。

  • force_text (bool) -- レイアウトモジュールによって「picture」として分類された領域上に書かれたテキストのテキスト出力を生成します。これは、画像内容が保存されない場合に特に便利です。

  • show_progress (bool) -- 処理中に進捗バーを表示します。

  • embed_images (bool) -- 「picture」バウンディングボックスの画像バイナリを保存します。Base64エンコードされた画像がJSON出力に含まれます。使用された場合、image_path は無視されます。これによりJSONテキストのサイズが大幅に増加する可能性があります。

  • write_images (bool) -- 「picture」バウンディングボックスの画像ファイルを保存します。画像に遭遇した場合、該当するページ領域から画像ファイルが作成され、指定されたフォルダに保存されます。これらの領域に含まれるテキストは、引き続きテキスト出力に含まれます。

  • pages (list) -- オプションで、出力対象として考慮するページを指定します(注意:0ベースのページ番号を指定してください)。省略した場合(None)、すべてのページが処理されます。0 から page_count - 1 の間の整数を含む任意の有効なPythonシーケンスを指定してください。

注釈

レイアウトモードに関する更なる改善の背景と現状については、このサイト をご覧ください。

LlamaMarkdownReader(*args, **kwargs)#

LlamaIndex パッケージを使用して pdf_markdown_reader.PDFMarkdownReader を作成します。このパッケージは pymupdf4llm をインストールする際に 自動的にインストールされない ことに注意してください。

可能な引数の詳細については、LlamaIndexのドキュメント [1] を参照してください。

Raises:

NotImplementedError: 必要な LlamaIndex パッケージをインストールしてください。

戻り値:

pdf_markdown_reader.PDFMarkdownReader と、メッセージ「Successfully imported LlamaIndex」を返します。このメソッドの実行には数秒かかることに注意してください。マークダウンリーダーの使用方法の詳細については、以下を参照してください。


class IdentifyHeaders#

注釈

Unavailable in PyMuPDF Layout

__init__(self, doc: pymupdf.Document | str, *, pages: list | range | None = None, body_limit: float = 11, max_levels: int = 6)#

テキストフォントサイズをマークダウン構文でヘッダーレベルを示すために使用される '#' 文字の数にマッピングするオブジェクトを作成します。このオブジェクトは、ドキュメントをスキャンしてフォントサイズの「人気度」を調べることで作成されます。最も一般的なフォントサイズとそれより小さいすべてのサイズは本文テキストに使用されます。より大きいフォントサイズは、それぞれのヘッダーレベル(HTMLタグ <h1> から <h6> に対応)にマッピングされます。

すべてのフォントサイズは整数値に丸められます。

6つを超えるヘッダーレベルが必要な場合、<h6> フォントサイズより小さい最大の数値が本文テキストに使用されます。

オブジェクトの作成は、その後 to_markdown() メソッドでドキュメントを再度読み取ることとは独立して、ドキュメント全体のテキストを読み取って検査することに注意してください。to_markdown() メソッドは、hdr_info=None パラメータを上書きしない場合、デフォルトで このオブジェクトを作成します

パラメータ:
  • doc (Document,str) -- ファイルは、ファイルパス文字列、または PyMuPDF Document (pymupdf.open で作成) のいずれかで指定します。pathlib.Path 指定、Pythonファイル風オブジェクト、メモリ内ドキュメントなどを使用する場合は、PyMuPDF Document を 必ず 使用してください。

  • pages (list) -- オプションで、考慮するページを指定します。省略した場合、すべてのページが処理されます。

  • body_limit (float) -- 本文テキストのデフォルトのフォントサイズ下限です。ドキュメントスキャンが有効な情報を提供しない場合にのみ使用されます。

  • max_levels (int) -- 使用する最大ヘッダーレベル数です。有効な値は range(1, 7) 内です。デフォルトは6で、HTMLタグ <h1> から <h6> に対応します。より小さい値を指定すると、生成されるヘッダーレベルの数が制限されます。たとえば、値3を指定すると、ヘッダータグ「#」、「##」、「###」のみが生成されます。「###」に対応するフォントサイズより小さいすべてのフォントサイズは本文テキストと見なされます。

get_header_id(self, span: dict, page=None) str#

適切なマークダウンヘッダープレフィックスを返します。これは空文字列 ""、または「#」文字列とそれに続くスペースのいずれかです。

「dict」抽出からのテキストスパンを指定すると、0からn個の連結された「#」文字からなるマークダウンヘッダープレフィックス文字列を決定します。

パラメータ:
  • span (dict) -- テキストスパン情報を含む辞書です。これは page.get_text("dict") によって返される辞書と同じものです。

  • page (Page) -- 所有するページオブジェクトです。追加情報を抽出する必要がある場合に使用できます。

戻り値:

「#」文字列とそれに続くスペースです。

header_id#

整数のフォントサイズを {14: '# ', 12: '## '} のようなマークダウンヘッダー文字列にマッピングする辞書です。この辞書は IdentifyHeaders コンストラクタによって作成されます。キーはドキュメント内のテキストスパンのフォントサイズです。値はそれぞれのヘッダー文字列です。

body_limit#

本文テキストのフォントサイズ下限を示す整数値です。これは min(header_id.keys()) - 1 として計算されます。上記の例では、body_limitは11になります。


ヘッダーレベルを制限する方法(例)

生成されるヘッダーレベルを3に制限します:

import pymupdf, pymupdf4llm

filename = "input.pdf"
doc = pymupdf.open(filename)  # use a Document for subsequent processing
my_headers = pymupdf4llm.IdentifyHeaders(doc, max_levels=3)  # generate header info
md_text = pymupdf4llm.to_markdown(doc, hdr_info=my_headers)

独自のヘッダーロジックを提供する方法(例1)

事前に決定された固定のフォントサイズを使用する独自の関数を提供します:

import pymupdf, pymupdf4llm

filename = "input.pdf"
doc = pymupdf.open(filename)  # use a Document for subsequent processing

def my_headers(span, page=None):
    """
    Provide some custom header logic.
    This is a callable which accepts a text span and the page.
    Could be extended to check for other properties of the span, for
    instance the font name, text color and other attributes.
    """
    # header level is h1 if font size is larger than 14
    # header level is h2 if font size is larger than 10
    # otherwise it is body text
    if span["size"] > 14:
        return "# "
    elif span["size"] > 10:
        return "## "
    else:
        return ""

# this will *NOT* scan the document for font sizes!
md_text = pymupdf4llm.to_markdown(doc, hdr_info=my_headers)

独自のヘッダーロジックを提供する方法(例2)

このユーザー関数はドキュメントの目次を使用します。ブックマークテキストがヘッダー行としてページ上にも存在することを前提としています(これは必ずしもそうであるとは限りません!):

import pymupdf, pymupdf4llm

filename = "input.pdf"
doc = pymupdf.open(filename)  # use a Document for subsequent processing
TOC = doc.get_toc()  # use the table of contents for determining headers

def my_headers(span, page=None):
    """
    Provide some custom header logic (experimental!).
    This callable checks whether the span text matches any of the
    TOC titles on this page.
    If so, use TOC hierarchy level as header level.
    """
    # TOC items on this page:
    toc = [t for t in TOC if t[-1] == page.number + 1]

    if not toc:  # no TOC items on this page
        return ""

    # look for a match in the TOC items
    for lvl, title, _ in toc:
        if span["text"].startswith(title):
            return "#" * lvl + " "
        if title.startswith(span["text"]):
            return "#" * lvl + " "

    return ""

# this will *NOT* scan the document for font sizes!
md_text = pymupdf4llm.to_markdown(doc, hdr_info=my_headers)

class TocHeaders#

注釈

Unavailable in PyMuPDF Layout

__init__(self, doc: pymupdf.Document | str)#

ドキュメントの目次(TOC)を使用してヘッダーレベルを決定するオブジェクトを作成します。オブジェクト作成時に、Document.get_toc() メソッドを介して目次が読み取られます。その後、TOCデータは to_markdown() メソッドでヘッダーレベルを決定するために使用されます。

これは IdentifyHeaders の代替手段です。フォントサイズを識別するためにドキュメント全体を実行する代わりに、ドキュメントの目次(TOC)を使用してページ上のヘッダーを識別します。IdentifyHeaders と同様に、これもヘッダーを見つけることを保証するものではありませんが、適切に構築された目次の場合、フォントサイズベースのアプローチよりもドキュメントページ上のヘッダー行をより正確に識別できる可能性が高くなります。

また、ドキュメント全体のスキャンを実行したり、ドキュメントページにアクセスしたりしないため、フォントサイズベースのアプローチよりもはるかに高速であるという利点もあります。

このアプローチが非常にうまく機能する例としては、AdobeのPDFドキュメントに関するファイルがあります。

この機能は、目次が通常の標準テキストとして存在する可能性のある ドキュメントページを読み取りませんDocument.get_toc() メソッドによって提供されるデータにのみアクセスします。目次がブックマークのコレクションとして利用できないドキュメントの場合、ヘッダーを識別しません。

get_header_id(self, span: dict, page=None) str#

適切なマークダウンヘッダープレフィックスを返します。これは空文字列、または「#」文字列とそれに続くスペースのいずれかです。

「dict」抽出バリアントからのテキストスパンを指定すると、0からn個の連結された「#」文字からなるマークダウンヘッダープレフィックス文字列を決定します。

パラメータ:
  • span (dict) -- テキストスパン情報を含む辞書です。これは page.get_text("dict") によって返される辞書と同じものです。

  • page (Page) -- 所有するページオブジェクトです。追加情報を抽出する必要がある場合に使用できます。

戻り値:

「#」文字列とそれに続くスペースです。

TocHeaders クラスの使用方法

これは、ヘッダー識別に TocHeaders を使用する以前の 例2 のバージョンです

import pymupdf, pymupdf4llm

filename = "input.pdf"

doc = pymupdf.open(filename)  # use a Document for subsequent processing
my_headers = pymupdf4llm.TocHeaders(doc)  # use the table of contents for determining headers

# this will *NOT* scan the document for font sizes!
md_text = pymupdf4llm.to_markdown(doc, hdr_info=my_headers)

class pdf_markdown_reader.PDFMarkdownReader#
load_data(file_path: Union[Path, str], extra_info: Optional[Dict] = None, **load_kwargs: Any) List[LlamaIndexDocument]#

これは、マークダウンデータを抽出するために現在使用すべきマークダウンリーダーの唯一のメソッドです。いかなる場合でも、aload_data() および lazy_load_data() メソッドは無視してください。use_doc_meta() などの他のメソッドは、意味がある場合とない場合があります。詳細については、LlamaIndexのドキュメント [1] を参照してください。

内部的には、このメソッドは to_markdown() を実行します。

戻り値:

LlamaIndexDocument ドキュメントのリストです。ページごとに1つです。


変更点の一覧については、ファイル CHANGES.md を参照してください。

脚注

This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at artifex.com or contact Artifex Software Inc., 39 Mesa Street, Suite 108A, San Francisco CA 94129, United States for further information.