PDFをアップロードせずにローカルでMarkdownに変換する
執筆 pdftomd.tools チーム · 更新日 · 約9分で読めます
PDFをローカルでMarkdownに変換する方法:たとえば私たちのPDFをMDに変換するツールのようにブラウザで動く変換ツールを開き、ネットワークを切ってから変換します。それでも動くなら、何もパソコンの外に出ていません。スクリプトや大量のファイルなら、Pythonライブラリやコマンドラインツールが自分のコンピューターで同じ作業をこなします。

「ローカル」の意味と確かめ方
変換がローカルであるとは、ファイルを自分の端末上のソフトウェアが読んでMarkdownに変え、ファイルのコピーがどのサーバーにも送られないことです。PDFをアップロードし、リモートで処理して結果を送り返す、ほとんどの「無料オンライン変換ツール」はこれに当てはまりません。ノートパソコン上で動いていても、難しい部分では黙ってクラウドのサービスを呼び出すツールも当てはまりません。
誰かの言葉を信じる必要はありません。私たちの言葉もです。どの方法でPDFをローカルでMarkdownに変換する場合でも、どのツールにも使える確認方法が2つあります。
- ネットワークを切る。 ツールを読み込み、Wi-Fiを切って(またはブラウザの開発者ツールでオフラインにして)から変換します。サーバーが必要なツールは失敗します。
- 通信を見る。 ファイルをドロップする前にブラウザのネットワークタブを開き、変換中にPOSTリクエストや本文付きのリクエストがないか確認します。デスクトップのプログラムなら、ファイアウォールの確認画面やネットワークモニターで同じことがわかります。

方法1:ブラウザでPDFをローカルでMarkdownに変換
ファイルが1つでPython環境がないなら、ブラウザツールが最速です。私たちの変換ツールは、オープンソースのエンジン PDF.js を使ってタブの中でPDFを読みます。文字サイズから見出しを見つけ、リストとパイプテーブルを組み立て直し、繰り返しのヘッダーとページ番号を取り除けます。アップロードの手順がないので、ファイルが契約書でもレシピでも、同じようにプライベートなままです。
ネットワークを切るテストは、2026年10月19日にスクリプトで行いました。Chrome 155.0.8059.84でページを開き、ブラウザをオフラインモードにしてから、繰り返しのヘッダー、ページ番号、表が1つある4ページのレポートを変換しました。私たちのテストでは、オフラインでの変換は87ミリ秒で終わり、546文字のMarkdownが得られました。オフラインの間にページが出したリクエストは1件(ページ下部の装飾画像のGET)で、データを含むリクエストは0件でした。ページの読み込み時にもPOSTリクエストはありませんでした。

限界は、テキスト層を読むすべての変換ツールと同じです。スキャンしたページには読み取れるテキストがなく、私たちのツールはOCRを行わないので、推測する代わりにファイルがスキャンのようだと知らせます。複数段組みのレイアウトや複雑な表は、あとで確認が必要です。書式のガイドに確認すべき点をまとめています。
方法2:自分のパソコンで動くPythonライブラリ
繰り返しの作業には、Pythonライブラリのほうが向いています。フォルダーを順に処理し、コードをバージョン管理し、自分が管理するサーバーで動かせます。コードについてはPythonガイドで詳しく扱っています。ここでは「ローカルかどうか」という観点だけで、よく使われる4つのパッケージを見ます。
- PyMuPDF4LLM は1回の呼び出しでPDFをMarkdownにします:
pymupdf4llm.to_markdown("report.pdf")。完全にオフラインで動きます。まずライセンスを確認してください。本体とPyMuPDFはAGPL-3.0で、商用ライセンスは別に販売されています。 - MarkItDown(Microsoft、MIT)は多くのファイル形式を変換します。
pip install 'markitdown[pdf]'でPDF用の拡張を入れ、markitdown report.pdf -o report.mdを実行します。通常のPDFの処理はローカルです。オプションの拡張は Azure Document Intelligence や Content Understanding にファイルを送るので、社外秘のファイルでは使わないでください。 - Docling(MIT)はレイアウトと表のモデルを使い、機密データのためのローカル実行を機能の1つに挙げています。モデルは初回の利用時にダウンロードされます。ネットワークのないマシン向けに事前に取得するには、ドキュメントにある
docling-tools models downloadを使います。 - Marker(コードは Apache-2.0、モデルの重みは商用利用に制限のある独自のライセンス)もモデルベースです。オプションの
--use_llmフラグは内容をLLMのサービス(初期設定は Gemini)に送るので、自分で運用するモデルを指定した場合にしかローカルになりません。
python -m venv .venv && . .venv/bin/activate
pip install pymupdf4llm 'markitdown[pdf]'
# then work with the network off
python -c "import pymupdf4llm; open('report.md','w').write(pymupdf4llm.to_markdown('report.pdf'))"
markitdown report.pdf -o report-markitdown.mdMacでPDFをMarkdownに変換したい場合も、何も変わりません。どちらのパッケージも macOS で pip を使って入れられ、次の方法の pdftotext は Homebrew の poppler パッケージに含まれています。
方法3:コマンドラインツール
定番のオフラインツールは、Poppler の pdftotext です。高速でほぼどこにでも入っていますが、書き出すのはMarkdownではなくプレーンテキストです。# の見出しもパイプテーブルもありません。-layout フラグはスペースで列をそろえます。人が読むには役立ちますが、パーサーやモデルが構造を必要とする場合にはあまり役立ちません。形式の変換の定番である Pandoc は、そもそもPDFを読めません。
同じファイルで各方法を比べるため、私たちのビルド用マシン(Linux x86_64, 8 vCPU)でプロセスのネットワークを無効にして、2つのPythonパッケージと pdftotext を実行し、出力を数えました。ファイルはブラウザのテストと同じ4ページのレポートです。私たちの変換ツールの行は、同じファイルを「AIの痕跡を除去」モードで変換した結果です。
| ツール | 時間 | 見出し | パイプテーブル | ヘッダーのコピー | ページ番号の行 | ハイフンで分かれた単語 |
|---|---|---|---|---|---|---|
| PyMuPDF4LLM 1.28.2 | 1秒 | 4 | あり | 4 | 4 | なし |
| MarkItDown 0.1.8 | 0.32秒 | 0 | あり | 4 | 4 | あり |
| pdftotext 25.03.0 -layout | 0.02秒 | 0 | なし | 4 | 4 | あり |
| 私たちのブラウザ変換ツール(痕跡を除去) | 87ミリ秒 | 4 | あり | 0 | 0 | なし |
どの方法がどの作業に向いているか

- ファイル1つ、今すぐ、セットアップなし: ブラウザ。PDFをMDに変換するツールか、ファイルがまとまっているなら一括変換ページを使います。
- 毎週のフォルダーやパイプライン: AGPLライセンスで問題なければ PyMuPDF4LLM、MITと多くのファイル形式が必要なら MarkItDown。
- 難しいレイアウト、スキャン、数式: モデルのダウンロードと遅い処理を覚悟で、Docling か Marker。
- 検索や簡単な差分のための言葉だけ: pdftotext。
- Vaultに直接: ブラウザで変換し、Obsidianのワークフローに従います。
用語について一言:オフラインのツールとプライベートなツールは、同じ約束ではありません。オフラインとは、ネットワークを必要としないことです。プライベートには、キャッシュ、ログ、クラッシュレポートなど、ツールがディスクに何を残すかも含まれます。インストールするものはすべて、プライバシーのページを読んでください。
社外秘のPDFのためのチェックリスト
- ツールのプライバシーポリシーを読み、上のオフラインテストで自分で確かめます。私たちのものはプライバシーのページにあります。
- パッケージのインストールとモデルのダウンロードはオンラインで行い、そのあとネットワークを切ってPDFをローカルでMarkdownに変換します。
- クラウドの拡張は無効のままにします:MarkItDown の Azure のオプション、Marker の LLM モード、サービスを呼び出す「AIでのクリーンアップ」のスイッチなど。
- 自分が管理するフォルダーで変換し、終わったら途中のコピーを削除します。
- Markdownをチャットモデルに貼り付ける前に:その手順はアップロードです。変換時にアップロードがなくても、その後に起きることまでは守れません。
- 法律や医療のファイルでは、コードを読めるツールを選び、使ったバージョンを出力と一緒に保管します。
出典
- PDF.js — Mozilla
- PyMuPDF4LLM (README and licence) — Artifex, GitHub
- MarkItDown (README and licence) — Microsoft, GitHub
- Docling: model prefetching and offline usage — Docling project
- Marker (README and licence) — Datalab, GitHub
- Poppler (pdftotext) — freedesktop.org
よくある質問
PDFをローカルでMarkdownに変換するには?
ファイルをタブの中で処理するブラウザの変換ツールを使うか、PyMuPDF4LLM や MarkItDown のようなPythonライブラリを入れて自分のパソコンで実行します。どちらもネットワークを切った状態で試し、何もアップロードされないことを確かめてください。
オンライン変換ツールがファイルをアップロードしているか、どうすればわかりますか?
ブラウザのネットワークタブを開いてから変換します。ファイルを含むリクエストは、POSTやアップロードの通信として表示されます。もっと簡単なのは、変換の前にオフラインにすることです。アップロードするツールは、接続なしでは完了しません。
このサイトの変換ツールはオフラインで動きますか?
テキスト層のあるPDFなら動きます。PDFエンジンがダウンロードされるようにオンラインでページを読み込めば、その後は接続を切ってかまいません。私たちのテストでは、4ページのレポートがオフラインで変換され、データを含むリクエストは1件もありませんでした。
ローカルでの変換に最適なPythonライブラリは?
私たちの小さなテストでは PyMuPDF4LLM が最も多くの構造を返しましたが、AGPLです。MarkItDown はMITで多くの形式を扱えます。Docling と Marker は難しいレイアウトやスキャンに向いていますが、モデルのダウンロードが必要です。
スキャンしたPDFもローカルで変換できますか?
自分のパソコンでOCRを実行するツールでなければできません。Docling と Marker はできます。私たちのブラウザ変換ツールはテキスト層だけを読みOCRは行わないので、ファイルがスキャンのようだと知らせます。
Markdownの代わりに pdftotext で十分ですか?
検索やざっと読むためなら、多くの場合は十分です。Markdownの記法で見出しや表は作らないので、構造が必要なノート、ドキュメント、AIのプロンプトには本物のMarkdown変換ツールが必要です。

