一括変換・自動化

PDFを一括でMarkdown(マークダウン)に変換

フォルダー内のレポート、論文、請求書をREST APIで順番に変換します。ファイルごとのIdempotency-Keyにより、途中で止まっても重複せず再開できます。

要点

一括処理は、小さなジョブの安全な繰り返しです

APIはPDFごとに作成、状態確認、ダウンロードという流れで処理します。一括変換では、その流れをファイルごとに繰り返します。安定したIdempotency-Keyを付けると再実行時に既存ジョブを再利用でき、制限付きのワーカープールを使うとAPIや自分のプランを圧迫せずに並列化できます。数件から数千件まで基本構造は同じです。

使い方

4ステップで変換します

各PDFを独立したジョブとして処理します。安定したIdempotency-Keyと上限付きの並列処理を使うと、安全に再開できます。

1

ファイルを列挙する

フォルダー内の各PDFを順に読み、ファイル名または内容ハッシュをIdempotency-Keyにします。

2

ジョブを作成して待つ

各ファイルを /api/v2/jobs へ送り、ready または error になるまで状態を確認します。

3

結果を保存する

ready のジョブから /download を取得し、元のPDFと対応する .md 名で保存します。

4

失敗だけを再実行する

error_code とファイル名を記録し、成功済みのジョブを重複させずに再開します。

変換結果

文書構造を保ったMarkdown

並列数を制限

最初は同時5件程度の小さなプールから始め、プランのスロット数に合わせて調整します。

冪等な再試行

ファイルごとの安定したキーにより、クラッシュ後の再実行でも完了済みジョブを再利用します。

Webhook

大量処理ではポーリングを増やさず、完了イベントをWebhookで受け取れます。

任意の言語

Python、Node.js、Go、cURLの単一ファイル処理をループで包めます。

最小構成

フォルダーを順番に変換する例

コード、エンドポイント、ヘッダー名は英語版と同じ契約をそのまま使います。

API="https://pdf2md.dev/api/v2"
AUTH="Authorization: Bearer p2m_your_key"

for pdf in *.pdf; do
  # filename as the Idempotency-Key: a rerun reuses the same job
  JID=$(curl -fsS -X POST "$API/jobs" -H "$AUTH" \
    -H "Idempotency-Key: $pdf" -F file=@"$pdf" | jq -r .job_id)

  until [ "$(curl -fsS "$API/jobs/$JID" -H "$AUTH" | jq -r .status)" = "ready" ]; do
    sleep 3
  done

  curl -fsS "$API/jobs/$JID/download" -H "$AUTH" -o "${pdf%.pdf}.md"
  echo "converted $pdf"
done

この例は分かりやすさのため直列です。 実運用では、上限付きワーカープール、error状態の処理、truncated の確認、Webhook通知を追加します。

止めない設計

失敗したファイルを記録して処理を続けます

暗号化、破損、サイズ超過などで一部のPDFが失敗しても、一括処理全体を停止させません。status: errorerror_code をログへ残し、成功したMarkdownと要確認リストを分けます。長い文書では truncated も確認し、一部結果を完全な結果として登録しないようにします。

RAG用の文書コレクションを作りますか?

PDFフォルダーを整ったMarkdownへ変換すると、chunking、embeddings、検索インデックスの入力を揃えられます。

コードやAIエージェントから変換しますか?

同じ変換処理をREST APIとホスト型MCPから利用できます。サーバーのメッセージ、エンドポイント、契約値は原文のままです。

FAQ

よくある質問

複数のPDFを一度に変換する方法は?

ファイルごとに作成、状態確認、ダウンロードを繰り返します。各ファイルへIdempotency-Keyを付け、並列数を制限します。

単一のbulkエンドポイントはありますか?

変換単位は一つのジョブです。一括処理は複数ジョブをまとめて管理する形で、スロット数を超えないようにします。

再実行で重複させない方法は?

ファイル名または内容ハッシュを安定したIdempotency-Keyとして送ります。同じキーは同じジョブを返します。

同時に何件処理できますか?

小さな並列数から始め、プランのスロットと同時変換上限に合わせます。無料プランの上限は低く設定されています。

Webhookを使えますか?

はい。大量処理では、各ジョブの完了をWebhookで受け取る方が多数のポーリングより効率的です。

どの言語で実装できますか?

任意です。Python、Node.js、Go、cURLのガイドにある単一ファイル処理をループで包めます。