superPDF AI について
superPDF AIは、開発者やAIアシスタント利用者向けのローカルPDFツールキットです。コマンドライン、SDK、ローカルAPI、MCPから利用でき、LLMを使わずに文書構造、表、グラフを抽出し、OCRにも対応します。ファイルアクセスは許可したフォルダーに限定されます。
主な機能
- 01Markdown、HTML、JSONへの構造出力
- 02表とグラフの値の抽出
- 0315言語のスキャンOCR
- 04PDFの結合、分割、比較、編集
- 05フォーム入力と文書形式の変換
- 06許可フォルダーへのアクセス制限
活用シーン
- 01レポートPDFを構造化Markdownに変換
- 02表を抽出して表計算で分析
- 03OCRでスキャン文書を読み取り
- 04版の比較やPDFフォームへの入力
MCP 対応
PDFの一覧表示と読み取り、内容抽出、ファイル変換・編集、バッチ処理のMCPツールを提供します。アクセス先は `--allow-dir` で指定したディレクトリーに限定されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
superPDF AI:コンピューター上で実行できる PDF ツール。コマンドライン、Python、AI アシスタント(MCP)、ローカル API から利用できます。
表、グラフ、見出し、スキャン文書を Markdown、HTML、JSON に変換できます。Word、Excel、PowerPoint、フォーム、結合、比較にも対応しています。リーダーは言語モデルではなくルールに基づいて動作し、スキャン文書は Tesseract OCR で処理します。データがアップロードされることはありません。
ウェブサイト · ドキュメント · Python ドキュメント · ベンチマーク · 変更履歴
比較 · クイックスタート · JavaScript/TypeScript · Python · MCP ツール · 仕組み
npx @superpdf/cli export report.pdf --output report.md
superPDF は PDF を、作成されたときの構造に基づいて読み取ります。つまり、内部のテキスト、フォント、図形から内容を読み取ります。文書を Markdown、HTML、JSON として再構成し、適切なレベルの見出し、行と列を保った表、元になった数値を復元したグラフを生成します。スキャンされたページは 15 言語の OCR で読み取ります。
コンピューター上でコマンド、Python パッケージ、Claude Code、Cursor、Codex などの AI アシスタント向け MCP サーバー、または独自のスクリプト用ローカル REST API として実行できます。許可したフォルダー内のファイルのみを開き、ファイルをアップロードすることはありません(MCP 経由では、アシスタントが読み取るテキストは、そのアシスタントに見せたファイルと同様に、アシスタントのモデルに送信されます)。これは、ブラウザーで superpdf.ai を支えるものと同じリーダーです。
| 利用方法 | インストールまたは実行 | ドキュメント |
|---|---|---|
| コマンドライン | npm install -g @superpdf/cli、またはインストールせずに npx @superpdf/cli … | CLI |
| Homebrew を使ったコマンドライン | brew install arjunprabhulal/superpdf/superpdf | Tap |
| AI アシスタント向け MCP サーバー | superpdf mcp --allow-dir ~/Documents/superPDF | MCP の設定 |
| ローカル REST API(OpenAPI 3.1) | superpdf serve --allow-dir ~/Documents/superPDF | API |
| JavaScript および TypeScript SDK | npm install @superpdf/cli の後、import { toDocx } from '@superpdf/cli' | SDK |
| Python SDK | pip install superpdf または uv add superpdf | Python |
| インストールせずに Python を使用 | uvx superpdf … または pipx run superpdf … | Python |
| LangChain | pip install langchain-superpdf | ローダー |
| LlamaIndex | pip install llama-index-readers-superpdf | リーダー |
| LangGraph エージェント | langchain-mcp-adapters 経由の MCP サーバー | エージェント |
比較
ParseBench のオープンソーステストスイートを全 2,078 件のドキュメントで実行した独自のテストでは、superPDF の総合スコアは 65.0 です(調整に使われていないドキュメントでは 64.8)。公式リーダーボードにはまだ掲載されていません。その他のスコアは、公開リーダーボード(2026 年 10 月 12 日)から一部を抜粋したものです。
| パーサー | 総合 | 表 | グラフ | コンテンツ | 書式 | 根拠 |
|---|---|---|---|---|---|---|
| LlamaParse Agentic Plus(有料サービス) | 90.2 | 93.4 | 94.2 | 92.3 | 87.1 | 84.1 |
| Claude Opus 5.5(AI モデル) | 78.0 | 93.9 | 64.1 | 91.8 | 77.0 | 63.2 |
| superPDF(言語モデル不使用、独自テスト) | 65.0 | 68.4 | 52.2 | 80.5 | 62.3 | 61.5 |
| Azure Document Intelligence | 59.6 | 86.0 | 1.6 | 84.9 | 51.9 | 73.8 |
| Docling(docling-models) | 50.6 | 66.4 | 52.8 | 66.9 | 1.0 | 66.1 |
| Google Cloud Document AI | 50.4 | 55.1 | 1.4 | 83.7 | 50.5 | 61.3 |
| AWS Textract | 47.9 | 84.6 | 6.0 | 74.8 | 3.7 | 70.4 |
Azure、Google、AWS のサービスと比べると、superPDF はグラフのスコアが大幅に高く、書式のスコアも高くなっています。一方、表では Azure と Textract のスコアが高くなっています。総合スコアでは LlamaParse と Claude Opus 5.5 が上回っています。全比較表と方法については、superpdf.ai/performance をご覧ください。
クイックスタート
Node.js 22 以降が必要です。
ターミナルから使う
npx @superpdf/cli export report.pdf --output report.md
npx はツールを一度ダウンロードして実行します。superpdf コマンドをインストールして継続的に使うには、次のようにします。
npm install -g @superpdf/cli
superpdf help
または、macOS または Linux では、Node.js が同梱された Homebrew を使います。
brew install arjunprabhulal/superpdf/superpdf
AI アシスタントから使う(MCP)
アシスタントが使用できるフォルダーを作成してから、サーバーを追加します。Claude Code の場合:
mkdir -p ~/Documents/superPDF
claude mcp add --scope user superpdf -- npx -y @superpdf/cli mcp --allow-dir ~/Documents/superPDF
Cursor、Claude Desktop、その他の MCP 設定ファイルを読み込むアシスタントの場合:
{
"mcpServers": {
"superpdf": {
"command": "npx",
"args": ["-y", "@superpdf/cli", "mcp", "--allow-dir", "/Users/you/Documents/superPDF"]
}
}
}
コマンドをインストール済みの場合(npm install -g @superpdf/cli)、npx -y @superpdf/cli mcp --allow-dir … の代わりに superpdf mcp --allow-dir … を使います。次のように依頼してみてください:"superPDF フォルダーにある invoice.pdf を読み込み、明細項目を表にまとめてください。" アシスタントは、--allow-dir で指定したフォルダーのみ使用できます。各アシスタントのセットアップについては、superpdf.ai/docs/mcp-api/mcp-tool-access をご覧ください。
Python から使う
pip install superpdf # or run without installing: uvx superpdf export report.pdf --output report.md
import superpdf
markdown = superpdf.export("report.pdf")
pages = superpdf.export_pages("report.pdf") # Markdown per page
superpdf.merge(["a.pdf", "b.pdf"], "combined.pdf") # every tool is a typed function
superpdf.extract_tables("report.pdf", "tables.xlsx")
superpdf.to_docx("report.pdf", "report.docx")
from superpdf.langchain import SuperPDFLoader # pip install "superpdf[langchain]"
docs = SuperPDFLoader("report.pdf").load()
パッケージには Node.js が同梱されています。30 種類すべてのツール、LlamaIndex リーダー、完全なリファレンスについては、Python ドキュメント と python/README.md をご覧ください。
JavaScript または TypeScript から使う
npm install @superpdf/cli
import { exportPages, extractTables, toDocx, SuperPDFError } from '@superpdf/cli';
const pages = await exportPages('report.pdf'); // [{ page: 1, markdown: '# Quarterly report…' }]
const word = await toDocx({ input: 'report.pdf', output: 'report.docx' });
await extractTables({ input: 'report.pdf', format: 'csv', output: 'tables.csv' });
すべてのツールは非同期関数(merge、split、fillForm、compare、runBatch など。tools() で一覧を取得できます)で、ツールの JSON 入力を受け取り、型付きの結果を返します。Node.js プロセス内で実行されるため(22 以降)、サーバーもサブプロセスも必要ありません。TypeScript 型はパッケージに含まれており、MCP サーバーおよび API と同じスキーマから生成されています。エラーは code(validation、conflict、not_found、operation_failed)を持つ SuperPDFError です。各呼び出しで使用できるのは、指定したパスのフォルダー、または { allowDirs } として渡したフォルダーのみです。
独自のコードから使う(REST API)
superpdf serve --allow-dir ~/Documents/superPDF
これにより、同じコンピューターからのみアクセスできる、127.0.0.1 上のプライベート API が起動します。起動時にトークンが表示されます(または、32 文字以上の SUPERPDF_API_TOKEN を設定してください)。/v1/ 以下へのすべてのリクエストにトークンが必要です。OpenAPI 3.1 ドキュメントは /openapi.json で提供されます(ツールスキーマから生成された openapi.json もこちらにあります)。ガイドとリファレンスについては、superpdf.ai/docs/api をご覧ください。
読み取り内容
| PDFの要素 | superPDFの読み取り方法 |
|---|---|
| 表 | 罫線のある表は線から、罫線のない表はテキストの配置から読み取ります(セル内の網掛けは行の区切りとして扱われます)。--tables html を指定すると、結合されたヘッダーセルを維持します |
| グラフ | 図形として描かれた棒グラフ、折れ線グラフ、ドットグラフ、面グラフ、円グラフを値の表に変換します。印字ではなく描画から測定した値には、概算であることを示します |
| 構造 | 見出しとそのレベル、段落、リスト、太字と斜体のテキスト、ページヘッダーとフッター |
| 読み取り順序 | 複数列のページは列間の余白で分割するため、テキストを正しい順序で読み取れます |
| スキャン | テキストレイヤーのないページは、英語とその他14言語のTesseract OCRで読み取ります。言語データは同梱されているため、ダウンロードは不要です |
| 大容量ファイル | ページ数の上限はなく、最大2 GBのファイルに対応します |
コマンド
superpdf info document.pdf # pages, sizes, form fields, properties
superpdf merge a.pdf b.pdf --output combined.pdf
superpdf extract document.pdf --pages 1,3-5 --output selected.pdf
superpdf rotate document.pdf --pages 2 --angle 90 --output rotated.pdf
superpdf export document.pdf --output document.md # or .html / .json (--format)
superpdf export document.pdf --tables html --output doc.md # tables as HTML, keeping merged header cells
superpdf export https://example.com/a.pdf --output a.md # a PDF from an https:// link
superpdf convert report.docx --output report.pdf # Word, Excel, PowerPoint; needs LibreOffice
superpdf pipeline document.pdf --steps steps.json --output result.pdf
superpdf audio document.pdf --output document.m4a # read aloud with the macOS system voice
superpdf tools # all 30 tools with their JSON input schemas
superpdf tool pdf_protect --input '{"input":"a.pdf","password":"…","output":"locked.pdf"}' # any tool, JSON in and out
結果は常に新しいファイルに書き込まれ、既存のファイルが上書きされることはありません。superpdf help ですべてのコマンドを確認できます。
1ページのレポートである examples/quarterly-report.pdf に対して、info と export を試してみてください。
export は https:// リンクも読み取ります。最大2 GBまでダウンロードし、データが60秒間届かなければ停止して、最大5回まで
リダイレクトをたどります。リダイレクトのたびに、このコンピューターやローカルネットワーク(localhost、プライベートアドレス、リンクローカルアドレス)へのリンクは拒否され、PDF以外のファイルも拒否されます。ダウンロードしたファイルは読み取り後に削除されます。リンクを受け付けるのは export のみです。mcp、serve、tool は --allow-dir フォルダー内のファイルを読み取ります。
MCP ツール
| ツール | 機能 |
|---|---|
pdf_list_files | 許可されたフォルダー内のPDFを一覧表示します |
pdf_info | ページ数、ページサイズ、フォームフィールド、プロパティを表示します |
pdf_read_text | 埋め込みテキストをページごとに読み取ります |
pdf_extract_structure | 見出し、表、グラフ、リストを含むMarkdown、HTML、またはJSONを出力します |
pdf_merge、pdf_split、pdf_extract_pages、pdf_remove_pages | ページを結合・分割して、新しいPDFを作成します |
pdf_extract_tables | 表とベクター形式のグラフをExcel、CSV、JSON、またはMarkdownとして出力します |
pdf_outline、pdf_compare | 各セクションのページを示すアウトライン、または2つのバージョン間の変更点をページごとに表示します |
pdf_to_docx、pdf_to_pptx、pdf_to_epub | 編集可能なWord、PowerPoint(テキストはテキストボックスとして出力)、EPUB 3に変換します |
pdf_from_images、pdf_from_markdown | JPG・PNG画像またはMarkdownファイルからPDFを作成します |
pdf_fill_form、pdf_flatten | 名前を指定してフォームフィールドに入力し、フィールドをページの一部にします |
pdf_add_text、pdf_resize_pages | 署名や注記を文字で追加し、余白を切り取るかページを拡大・縮小します |
pdf_rotate_pages、pdf_add_page_labels、pdf_add_watermark | ページを回転し、番号を付け(ヘッダーまたはフッター)、透かしを追加します |
pdf_protect、pdf_unlock、pdf_remove_metadata、pdf_repair | AES-256パスワードの設定、プロパティの削除、破損ファイルの修復を行います |
pdf_from_office | Word、Excel、PowerPointをPDFに変換します(LibreOfficeが必要です) |
pdf_run_pipeline、pdf_run_batch | 1つのPDFに対して最大10ステップを実行するか、最大50個のPDFに対して同じステップを実行します |
他との違い
多くの PDF からテキストへの変換ツールは、テキストレイヤーを取り出して位置順に並べるか、ページの画像に AI モデルを適用します。 superPDF は PDF 自体の描画命令を処理するため、テキストと位置を正確に保持し、どちらの方法でも失われがちな情報を復元できます。
- グラフをデータに変換します。 棒、線、点、面、円グラフのスライスは図形として描画されます。
pdf-charts.jsは軸ラベル(軸がない場合はグラフ上に印字された値)を基準に棒、線、点、面を測定し、角度から円グラフのスライスを読み取り、系列を凡例の色に対応付けます。画像として保存されたグラフは、棒のピクセルを読み取る方法に切り替わります。 - 失われた文字を復元します。 フォントに適切な Unicode テーブルがない場合、PDF.js は文字を空白として読み取ったり、読み飛ばしたりします。
pdf-text-fixes.jsは各グリフの輪郭を、すでに特定された文字と照合し、TrueType フォントを標準の Mac グリフ順と照らし合わせてから、文字を戻します。 - 太字を推測ではなく測定で判定します。 フォント名は隠されていることが多いため(
F1、g_d0_f2など)、pdf-structure.jsはグリフの線幅を測定し、同じフォントの 2 つのウェイトの幅を比較して、テキストが二重に描画されている場合や、太字に見えるよう輪郭が描かれている場合を検出します。スキャンでは各単語のインクの太さを測定します。 - 間隔と隠れたテキストを修正します。 PDF.js が文字間隔を空けた単語や中国語・日本語の文字の周囲に挿入する不要な空白は、ページ上で描画されるグリフを測定して取り除きます。四角形のクリッピング領域外に描画されたテキストは除外し、文字の順序が入れ替わって出力されるアラビア語のラム・アリフ合字を修正します。
- 必要な箇所だけ OCR を実行します。 ページ全体がスキャンされている場合、フォントエンコーディングが文字化けしている場合、テキストを含む画像がある場合に実行します(写真からノイズが発生しないよう、まず文字らしい形があるか確認します)。言語は PDF の言語タグまたはテキストから判定し、読み取り精度が低い場合は Sauvola のしきい値処理で再試行します。
- 3 つの方法で表を処理します。 罫線、スキャンページのピクセルから検出した線、テキストレイヤーがあるページのテキスト列の配置から抽出した罫線のない表に対応します。
仕組み
- 読み取る。 PDF.js から、フォントと位置を含むテキスト、および描画操作(線、長方形、曲線)を取得します。
- 認識する。 スキャンされたページや文字化けしたページ、テキストを含む画像を Tesseract OCR で処理します。
- 修復する。 Unicode マッピングなしで描画された文字を輪郭から復元し、間隔を修正します。
- 再構成する。 ルールに基づいてテキストを行とブロックにまとめ、表のグリッドと罫線のない列を検出し、図形と軸ラベルからグラフを読み取り、フォントから見出しのサイズを判定して、読みやすい順に列を並べます。
- 出力する。 Markdown、HTML、または JSON で出力します。JSON では各ブロックのページと位置が保持されます。
リーダーは lib/ にあります。pdf-structure.js(ページをブロックに変換)、pdf-layout.js(行、表、読み取り順)、pdf-charts.js(グラフ)、pdf-text-fixes.js(テキストの修復)で構成されています。pdfplumber、Camelot、tabula-java などから取り入れたアイデアについては、NOTICE に記載しています。
プライバシーとセキュリティ
- すべての処理はお使いのコンピューター上で実行されます。superPDF が行うネットワークリクエストは、API 用に設定したジョブのコールバック(Webhook)だけです。OCR の言語データはパッケージに含まれています。
- MCP サーバーと API は
--allow-dirフォルダー内だけを読み書きします。パスはシンボリックリンクをたどって解決されるため、許可された範囲外にはアクセスできません。 - API は
127.0.0.1でのみリッスンし、/v1/以下へのすべてのリクエストでベアラートークンを必要とします。 - 出力は新しいファイルに書き込まれます。既存のファイルが上書きされることはありません。
セキュリティ上の問題を見つけた場合は、SECURITY.md をご覧ください。
コントリビューション
Issue とプルリクエストを歓迎します。読み取りに関する問題を報告する場合は、PDF(またはその 1 ページ)と期待する出力を添付してください。CONTRIBUTING.md をご覧ください。
ライセンス
Apache-2.0。アイデアの改変および同梱データに関するクレジットはNOTICEに記載されています。「superPDF」とそのロゴはプロジェクトの商標であり、ライセンスの対象外です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。