PDFをアップロードせずにローカルでMarkdownに変換する

執筆 pdftomd.tools チーム · 更新日 · 約9分で読めます

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

イラスト:ノートパソコンの画面でPDFがMarkdownファイルに変わり、クラウドへのアップロードには取り消し線が引かれている

「ローカル」の意味と確かめ方

変換がローカルであるとは、ファイルを自分の端末上のソフトウェアが読んでMarkdownに変え、ファイルのコピーがどのサーバーにも送られないことです。PDFをアップロードし、リモートで処理して結果を送り返す、ほとんどの「無料オンライン変換ツール」はこれに当てはまりません。ノートパソコン上で動いていても、難しい部分では黙ってクラウドのサービスを呼び出すツールも当てはまりません。

誰かの言葉を信じる必要はありません。私たちの言葉もです。どの方法でPDFをローカルでMarkdownに変換する場合でも、どのツールにも使える確認方法が2つあります。

  1. ネットワークを切る。 ツールを読み込み、Wi-Fiを切って(またはブラウザの開発者ツールでオフラインにして)から変換します。サーバーが必要なツールは失敗します。
  2. 通信を見る。 ファイルをドロップする前にブラウザのネットワークタブを開き、変換中にPOSTリクエストや本文付きのリクエストがないか確認します。デスクトップのプログラムなら、ファイアウォールの確認画面やネットワークモニターで同じことがわかります。
イラスト:PDFが自分で処理を行うブラウザの画面に入り、ネットワークのケーブルが抜かれたままMarkdownファイルが出てくる
ローカルでの変換:エンジンはブラウザのタブで動くので、ケーブルは抜いたままでかまいません。

方法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リクエストはありませんでした。

スクリーンショット:私たちのブラウザ変換ツールでPDFをローカルでMarkdownに変換。ネットワークを切った状態で4ページのレポートを変換している
オフラインテストのスクリーンショット:レポートはネットワークなしで変換され、繰り返しのヘッダーとページ番号が取り除かれています。

限界は、テキスト層を読むすべての変換ツールと同じです。スキャンしたページには読み取れるテキストがなく、私たちのツールは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.md
一度オンラインでインストールしたら、ネットワークを切った状態でPDFをローカルでMarkdownに変換します。同じコマンドが macOS、Linux、Windows で使えます。

MacでPDFをMarkdownに変換したい場合も、何も変わりません。どちらのパッケージも macOS で pip を使って入れられ、次の方法の pdftotext は Homebrew の poppler パッケージに含まれています。

方法3:コマンドラインツール

定番のオフラインツールは、Poppler の pdftotext です。高速でほぼどこにでも入っていますが、書き出すのはMarkdownではなくプレーンテキストです。# の見出しもパイプテーブルもありません。-layout フラグはスペースで列をそろえます。人が読むには役立ちますが、パーサーやモデルが構造を必要とする場合にはあまり役立ちません。形式の変換の定番である Pandoc は、そもそもPDFを読めません。

同じファイルで各方法を比べるため、私たちのビルド用マシン(Linux x86_64, 8 vCPU)でプロセスのネットワークを無効にして、2つのPythonパッケージと pdftotext を実行し、出力を数えました。ファイルはブラウザのテストと同じ4ページのレポートです。私たちの変換ツールの行は、同じファイルを「AIの痕跡を除去」モードで変換した結果です。

4ページのレポートでのローカルツール(私たちのテストによる。2026年10月19日、ネットワーク無効)
ツール時間見出しパイプテーブルヘッダーのコピーページ番号の行ハイフンで分かれた単語
PyMuPDF4LLM 1.28.21秒4あり44なし
MarkItDown 0.1.80.32秒0あり44あり
pdftotext 25.03.0 -layout0.02秒0なし44あり
私たちのブラウザ変換ツール(痕跡を除去)87ミリ秒4あり00なし
小さなファイル1つなので、時間はおおよその規模を示すだけです。Pythonの時間にはインタープリターの起動が含まれます。ヘッダーのコピーとページ番号の行は、手で消す必要のある残りものです。

どの方法がどの作業に向いているか

イラスト:ブラウザツール、Pythonライブラリ、コマンドラインツール、そしてMarkdownを受け取るノートアプリの4枚のカード
PDFをローカルでMarkdownに変換する3つの方法と、1つの行き先:あなたのエディターやノートアプリ。
  • ファイル1つ、今すぐ、セットアップなし: ブラウザ。PDFをMDに変換するツールか、ファイルがまとまっているなら一括変換ページを使います。
  • 毎週のフォルダーやパイプライン: AGPLライセンスで問題なければ PyMuPDF4LLM、MITと多くのファイル形式が必要なら MarkItDown。
  • 難しいレイアウト、スキャン、数式: モデルのダウンロードと遅い処理を覚悟で、Docling か Marker。
  • 検索や簡単な差分のための言葉だけ: pdftotext。
  • Vaultに直接: ブラウザで変換し、Obsidianのワークフローに従います。

用語について一言:オフラインのツールとプライベートなツールは、同じ約束ではありません。オフラインとは、ネットワークを必要としないことです。プライベートには、キャッシュ、ログ、クラッシュレポートなど、ツールがディスクに何を残すかも含まれます。インストールするものはすべて、プライバシーのページを読んでください。

社外秘のPDFのためのチェックリスト

  1. ツールのプライバシーポリシーを読み、上のオフラインテストで自分で確かめます。私たちのものはプライバシーのページにあります。
  2. パッケージのインストールとモデルのダウンロードはオンラインで行い、そのあとネットワークを切ってPDFをローカルでMarkdownに変換します。
  3. クラウドの拡張は無効のままにします:MarkItDown の Azure のオプション、Marker の LLM モード、サービスを呼び出す「AIでのクリーンアップ」のスイッチなど。
  4. 自分が管理するフォルダーで変換し、終わったら途中のコピーを削除します。
  5. Markdownをチャットモデルに貼り付ける前に:その手順はアップロードです。変換時にアップロードがなくても、その後に起きることまでは守れません。
  6. 法律や医療のファイルでは、コードを読めるツールを選び、使ったバージョンを出力と一緒に保管します。

出典

  1. PDF.js — Mozilla
  2. PyMuPDF4LLM (README and licence) — Artifex, GitHub
  3. MarkItDown (README and licence) — Microsoft, GitHub
  4. Docling: model prefetching and offline usage — Docling project
  5. Marker (README and licence) — Datalab, GitHub
  6. 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変換ツールが必要です。