Skip to content

Latest commit

 

History

History
277 lines (203 loc) · 8.56 KB

File metadata and controls

277 lines (203 loc) · 8.56 KB

MarkPDFDown

English | 中文 | 日本語 | Русский | فارسی | العربية

Size Pulls Tag License

マルチモーダル大規模言語モデルを活用して、PDFファイルをMarkdown形式に変換する強力なツールです。

デスクトップアプリ

GUIをお探しですか? より使いやすい体験のために、デスクトップアプリケーションをお試しください!

npx -y markpdfdown

デスクトップアプリのスクリーンショット

デスクトップアプリのリポジトリを見る

概要

MarkPDFDownは、PDF文書をクリーンで編集可能なMarkdownテキストに変換するプロセスを簡素化するために設計されています。LiteLLMを通じて高度なマルチモーダルAIモデルを活用することで、テキストを正確に抽出し、書式を保持し、表、数式、図表を含む複雑な文書構造を処理できます。

機能

  • PDFからMarkdownへの変換: あらゆるPDF文書を適切にフォーマットされたMarkdownに変換
  • 画像からMarkdownへの変換: 画像を適切にフォーマットされたMarkdownに変換
  • マルチプロバイダーサポート: LiteLLMを通じてOpenAIとOpenRouterをサポート
  • 柔軟なCLI: ファイルベースとパイプベースの両方の使用モードをサポート
  • 書式の保持: 見出し、リスト、表、その他の書式要素を維持
  • ページ範囲選択: PDF文書から特定のページ範囲を変換
  • モジュラーアーキテクチャ: 関心の分離による清潔で保守性の高いコードベース

デモ

インストール

uvを使用(推奨)

# uvをまだインストールしていない場合
curl -LsSf https://astral.sh/uv/install.sh | sh

# リポジトリをクローン
git clone https://github.com/MarkPDFdown/markpdfdown.git
cd markpdfdown

# 依存関係をインストールし、仮想環境を作成
uv sync

# パッケージを開発モードでインストール
uv pip install -e .

condaを使用

conda create -n markpdfdown python=3.9
conda activate markpdfdown

# リポジトリをクローン
git clone https://github.com/MarkPDFdown/markpdfdown.git
cd markpdfdown

# 依存関係をインストール
pip install -e .

設定

MarkPDFDownは設定に環境変数を使用します。プロジェクトディレクトリに.envファイルを作成してください:

# サンプル設定をコピー
cp .env.sample .env

.envファイルを編集して設定を行います:

# モデル設定
MODEL_NAME=gpt-4o

# APIキー(LiteLLMが自動的に検出します)
OPENAI_API_KEY=your-openai-api-key
# またはOpenRouterの場合
OPENROUTER_API_KEY=your-openrouter-api-key

# オプションパラメータ
TEMPERATURE=0.3
MAX_TOKENS=8192
RETRY_TIMES=3

サポートされているモデル

OpenAIモデル

MODEL_NAME=gpt-4o
MODEL_NAME=gpt-4o-mini
MODEL_NAME=gpt-4-vision-preview

OpenRouterモデル

MODEL_NAME=openrouter/anthropic/claude-3.5-sonnet
MODEL_NAME=openrouter/google/gemini-pro-vision
MODEL_NAME=openrouter/meta-llama/llama-3.2-90b-vision

使用方法

ファイルモード(推奨)

# 基本的な変換
markpdfdown --input document.pdf --output output.md

# 特定のページ範囲を変換
markpdfdown --input document.pdf --output output.md --start 1 --end 10

# 画像をMarkdownに変換
markpdfdown --input image.png --output output.md

# Pythonモジュールを使用
python -m markpdfdown --input document.pdf --output output.md

パイプモード(Docker対応)

# パイプを介したPDFからMarkdownへの変換
markpdfdown < document.pdf > output.md

# Pythonモジュールを使用
python -m markpdfdown < document.pdf > output.md

高度な使用方法

# PDFの5〜15ページを変換
markpdfdown --input large_document.pdf --output chapter.md --start 5 --end 15

# 複数のファイルを処理
for file in *.pdf; do
    markpdfdown --input "$file" --output "${file%.pdf}.md"
done

Dockerの使用

# イメージをビルド(必要な場合)
docker build -t markpdfdown .

# 環境変数を使用して実行
docker run -i \
  -e MODEL_NAME=gpt-4o \
  -e OPENAI_API_KEY=your-api-key \
  markpdfdown < input.pdf > output.md

# OpenRouterを使用
docker run -i \
  -e MODEL_NAME=openrouter/anthropic/claude-3.5-sonnet \
  -e OPENROUTER_API_KEY=your-openrouter-key \
  markpdfdown < input.pdf > output.md

開発セットアップ

コード品質ツール

このプロジェクトでは、リンティングとフォーマットにruffを、自動コード品質チェックにpre-commitを使用しています。

開発依存関係のインストール

# uvを使用する場合
uv sync --group dev

# pipを使用する場合
pip install -e ".[dev]"

pre-commitフックのセットアップ

# pre-commitフックをインストール
pre-commit install

# すべてのファイルでpre-commitを実行(オプション)
pre-commit run --all-files

コードフォーマットとリンティング

# ruffでコードをフォーマット
ruff format

# リンティングチェックを実行
ruff check

# 自動修正可能な問題を修正
ruff check --fix

要件

  • Python 3.9+
  • uv(パッケージ管理に推奨)またはconda/pip
  • pyproject.tomlで指定された依存関係
  • サポートされているLLMプロバイダー(OpenAIまたはOpenRouter)へのアクセス

アーキテクチャ

このプロジェクトはモジュラーアーキテクチャに従っています:

src/markpdfdown/
├── __init__.py          # パッケージ初期化
├── __main__.py          # python -m のエントリーポイント
├── cli.py               # コマンドラインインターフェース
├── main.py              # コア変換ロジック
├── config.py            # 設定管理
└── core/                # コアモジュール
    ├── llm_client.py    # LiteLLM統合
    ├── file_worker.py   # ファイル処理
    └── utils.py         # ユーティリティ関数

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

  1. リポジトリをフォーク
  2. フィーチャーブランチを作成(git checkout -b feature/amazing-feature
  3. 開発環境をセットアップ:
    uv sync --group dev
    pre-commit install
  4. 変更を加えてコード品質を確保:
    ruff format
    ruff check --fix
    pre-commit run --all-files
  5. 変更をコミット(git commit -m 'feat: Add some amazing feature'
  6. ブランチにプッシュ(git push origin feature/amazing-feature
  7. プルリクエストを開く

提出前にリンティングとフォーマットツールを実行して、プロジェクトのコーディング標準に従っていることを確認してください。

ライセンス

このプロジェクトはApache License 2.0の下でライセンスされています。詳細はLICENSEファイルを参照してください。

謝辞

  • 統一されたLLMアクセスを提供するLiteLLMの開発者に感謝します
  • このツールを支えるマルチモーダルAIモデルの開発者に感謝します
  • より良いPDFからMarkdownへの変換ツールの必要性に触発されました