このリポジトリには、RAGベースのチャットボットのデータフィードとしてPymUPDFをどのように使用できるかを示す例が含まれています。
例には、チャットボットを開始するスクリプトが含まれます。これは、REPLモードの単純なCLIプログラムまたはブラウザベースのGUIのいずれかです。チャットボットスクリプトは、この一般的な構造に従います。
Pypi pymupdf4llmのPythonパッケージ(エイリアスPDF4llmもあります)は、PDFページをMarkdown形式でテキスト文字列に変換することができます(github互換)。これには、一貫した統合ビューのテーブルベースのテキストと同様に、標準テキストと、RAG設定で特に重要な機能が含まれます。
$ pip install -U pymupdf4llm
このコマンドは、必要に応じてPymUPDFを自動的にインストールします。
その後、スクリプトで行います
import pymupdf4llm
md_text = pymupdf4llm . to_markdown ( "input.pdf" )
# now work with the markdown text, e.g. store as a UTF8-encoded file
import pathlib
pathlib . Path ( "output.md" ). write_bytes ( md_text . encode ())
上記のファイル文字列の代わりに、PymupDF Document
を提供することもできます。デフォルトでは、PDF内のすべてのページが処理されます。必要に応じて、パラメーターpages=[...]
使用して、考慮すべきゼロベースのページ番号のリストを提供できます。
Markdown Textの作成は、マルチコラムページも処理します。
ドキュメント全体に1つの大きな文字列を生成するのではなく、小さなテキストのチャンクを作成するには、新しい(v0.0.2)オプションpage_chunks=True
を使用できます。 .to_markdown("input.pdf", page_chunks=True)
の結果は、各ページに1つのPython辞書のリストになります。
また、バージョン0.0.2の新機能は、画像とベクトルグラフィックのオプションの抽出write_images=True
。 WillはドキュメントのフォルダーにPNG画像を保存し、マークダウンテキストは適切にそれらを参照します。画像は"input.pdf-page_number-index.png"
のような名前が付けられています。
ドキュメント
API
PDFは世界中で最も重要なドキュメント形式ですが、すべての例とヘルパースクリプトが同じように機能し、サポートされているすべてのファイルタイプの変更なしに機能することに言及する価値があります。
したがって、XPSドキュメントまたは電子ブックの場合、たとえば"input.mobi"
としてファイル名を提供するだけで、他のすべてが以前のように機能します。
PymupDFは、軽量のPDF 、 XPS 、および電子ブックビューアー、レンダラー、ツールキットであるMUPDFにPythonバインディングと抽象化を追加します。 PymupDFとMUPDFの両方は、Artifex Software、Inc。によって維持および開発されています。
PymupdfのホームページはGithubにあります。
Discordにご参加ください:#pymupdf。
PymupDFは、オープンソースAGPLおよび商業ライセンス契約の下で入手できます。 AGPLの要件を満たすことができないと判断した場合は、商業ライセンスに関する詳細についてはArtifexにお問い合わせください。