pdf-table-pull-lite について
pdf-table-pull-liteは、テキスト層のあるPDFから表を抽出し、表ごとにCSVで保存するローカルのコマンドラインツールです。AIクライアント向けのMCPサーバーを備え、ページや抽出方式を指定できます。
主な機能
- 01テキストPDFから表を抽出
- 02表ごとのCSV保存
- 03処理ページの指定
- 04表の抽出方式の選択または自動判定
- 05スキャンページの警告
活用シーン
- 01PDFレポートの表の書き出し
- 02明細書の指定ページの処理
- 03GitHub ActionsでのPDF表抽出
MCP 対応
組み込みのMCPサーバーは`extract_pdf_tables`ツールを公開し、CSVテキストを返すか指定ディレクトリに保存します。PDFパス、任意のページ指定、抽出方式を受け取ります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 4 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | |
| pages | string | いいえ | |
| strategy | string | いいえ | |
| output_dir | string | いいえ |
詳細
pdf-table-pull-lite
無料。API キー不要。自分のコンピューター上で動作するため、PDF は手元に置いたままです。
テキスト PDF から表を抽出し、それぞれを CSV ファイルとして保存するツールです。 Excel 出力、スキャンした PDF、複数ページにまたがる表が必要ですか?有料版なら対応しています:Gumroad の pdf-table-pull
自分のコンピューター上で動作するため、PDF が外部にアップロードされることはありません。MIT ライセンス。Windows、Mac、Linux で Python 3.10 以降が必要です。
インストール
pip install pdf-table-pull-lite
または、専用の環境にインストールできる pipx を使用してください:
pipx install pdf-table-pull-lite
GitHub の最新コードを使いたい場合:
pip install git+https://github.com/tidybytetools/pdf-table-pull-lite
使い方
pdf-table-pull-lite statement.pdf # CSVs go in statement_tables/
pdf-table-pull-lite statement.pdf -o out/ -p 2-5 # only pages 2 to 5
pdf-table-pull-lite statement.pdf -s text # tables with no border lines
実行例:
Found 2 table(s).
page1_table1: 2 rows x 3 columns
page1_table2: 2 rows x 2 columns
Saved: statement_tables/page1_table1.csv
Saved: statement_tables/page1_table2.csv
表ごとに 1 つの CSV が生成され、ページ番号に基づいた名前が付けられます。CSV は UTF-8 BOM 付きで保存されるため、Excel でそのまま開くことができ、アクセント記号も正しく表示されます。
--strategy(-s):罫線のある表には lines、空白で位置合わせされた表には text を指定します。auto(デフォルト)は最初に lines を試し、次に text を試します。
ターミナルで実行すると、有料版についての短い案内が最後に表示されます。--quiet で非表示にできます。また、出力がパイプまたはリダイレクトされている場合は表示されません。
既知の制限
- スキャンした PDF。 ページが画像のみ(テキストレイヤーなし)の場合はスキップされ、対象のページが通知されます。
- 次のページに続く表。 ページごとに個別の CSV として出力されます。
- 特殊なレイアウト。 セルが結合されている表や、列がはっきりしていない表では、セルの位置がずれる場合があります。CSV を確認してください。
- CSV のみ。 Excel や JSON には出力できず、数値の補正も行いません(そのため、
(40)はテキストのままです)。パスワード保護された PDF にも対応していません。
Lite 版と有料版の比較
| lite(無料) | pdf-table-pull | |
|---|---|---|
| テキスト PDF、罫線付きまたは空白で区切られた表 | 対応 | 対応 |
| CSV 出力 | 対応 | 対応 |
| Excel(表ごとに 1 シート)および JSON 出力 | 非対応 | 対応 |
| スキャンした PDF(OCR) | 非対応 | 対応 |
| 複数ページにまたがる表の結合 | 非対応 | 対応 |
数値の補正(1,200 → 1200、(40) → -40) | 非対応 | 対応 |
| パスワード保護された PDF | 非対応 | 対応 |
他の無料ツールとの比較
すべて無料のオープンソースです。ご自身に合うものをお選びください。
| pdf-table-pull-lite | pdfplumber | Camelot | tabula-py | |
|---|---|---|---|---|
| 概要 | コマンドラインツール | Python ライブラリ | Python ライブラリ+CLI | Tabula 用の Python ラッパー |
| Java が必要 | いいえ | いいえ | いいえ | はい |
| 1 つのコマンドで CSV を取得 | はい | いいえ。コードを書く必要があります | はい | はい |
| 枠線モードと間隔モードを自動選択 | はい(auto) | いいえ | いいえ | はい(推測) |
| スキャンされたページを通知 | はい | いいえ | いいえ | いいえ |
| AI アプリ向け MCP サーバーを内蔵 | はい | いいえ | いいえ | いいえ |
| 調整項目が豊富 | いいえ | はい | はい | 一部あり |
このツールは pdfplumber を基盤にしています。独自のコードで完全に制御したい場合は、pdfplumber または Camelot を直接お使いください。
AI アプリで使う(MCP)
小規模な無料の MCP サーバーが組み込まれています。AI アプリに extract_pdf_tables というツールを 1 つ提供します。API キーやアカウントは不要です。uv が必要です。uv を使うと uvx コマンドを利用できます。
起動することを確認するため、手動で実行します(アプリからの接続を静かに待ち受けます)。
uvx --from pdf-table-pull-lite pdf-table-pull-lite-mcp
同じサーバーを起動する、より短い方法:uvx pdf-table-pull-lite mcp。
以下からお使いのアプリを選び、設定ブロックをコピーしてください。保存した後、アプリを再起動します。
Claude Desktop
Settings > Developer > Edit Config を開きます。claude_desktop_config.json が開きます。次の内容を追加してください。
{
"mcpServers": {
"pdf-table-pull-lite": {
"command": "uvx",
"args": ["--from", "pdf-table-pull-lite", "pdf-table-pull-lite-mcp"]
}
}
}
Claude が uvx を見つけられない場合は、which uvx(Mac/Linux)または where uvx(Windows)を実行し、そのフルパスを "command" に指定してください。
Cursor
同じ設定ブロックを ~/.cursor/mcp.json(すべてのプロジェクト向け)または .cursor/mcp.json(1 つのプロジェクト向け)に記述します。
{
"mcpServers": {
"pdf-table-pull-lite": {
"command": "uvx",
"args": ["--from", "pdf-table-pull-lite", "pdf-table-pull-lite-mcp"]
}
}
}
VS Code
VS Code では mcpServers ではなく servers を使います。プロジェクト内の .vscode/mcp.json に記述するか、MCP: Open User Configuration を実行してすべての場所で使えるようにします。
{
"servers": {
"pdf-table-pull-lite": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "pdf-table-pull-lite", "pdf-table-pull-lite-mcp"]
}
}
}
または、1 つのコマンドで追加します。
code --add-mcp '{"name":"pdf-table-pull-lite","type":"stdio","command":"uvx","args":["--from","pdf-table-pull-lite","pdf-table-pull-lite-mcp"]}'
Cline
Cline パネルで MCP Servers アイコンをクリックし、Configure を開いてから、Configure MCP Servers をクリックします。mcpServers の中に次の内容を追加してください。
{
"mcpServers": {
"pdf-table-pull-lite": {
"command": "uvx",
"args": ["--from", "pdf-table-pull-lite", "pdf-table-pull-lite-mcp"],
"disabled": false,
"autoApprove": []
}
}
}
Codex
コマンド 1 つで設定できます。
codex mcp add pdf-table-pull-lite -- uvx --from pdf-table-pull-lite pdf-table-pull-lite-mcp
または、次の内容を ~/.codex/config.toml に追加します。
[mcp_servers.pdf-table-pull-lite]
command = "uvx"
args = ["--from", "pdf-table-pull-lite", "pdf-table-pull-lite-mcp"]
Gemini CLI
このリポジトリは Gemini CLI の拡張機能でもあります。次のコマンドでインストールできます。
gemini extensions install https://github.com/tidybytetools/pdf-table-pull-lite
ツール:extract_pdf_tables(path, pages="", strategy="auto", output_dir="")。各テーブルの CSV テキストを含むリストを返します。output_dir を設定すると、CSV をその場所に保存し、代わりにファイルパスを返します。
GitHub Actions で使う
リポジトリ内の PDF や、ワークフローがダウンロードする PDF レポートから、実行のたびにテーブルを抽出できます。テーブルごとに CSV が 1 つ作成され、実行ページにはプレビューが表示されます。
name: PDF tables
on: [push, workflow_dispatch]
permissions:
contents: read
jobs:
tables:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: tidybytetools/pdf-table-pull-lite@v1
with:
files: reports/**/*.pdf
artifact-name: pdf-tables # download the CSVs from the run page
各 PDF の CSV は、pdf-tables/ 内に PDF のパスに基づく名前のフォルダーを作成して保存されます。たとえば reports/june.pdf の場合、pdf-tables/reports/june/page1_table1.csv が作成されます。
選択したタグと同じバージョンのコードを、固定バージョンの pdfplumber で実行します。API キーやアカウントは不要で、PDF が GitHub の外部に送信されることもありません。Linux、Windows、Mac のランナーで動作します。スキャンされたページ(テキストがなく、画像だけのページ)は警告とともにスキップされます。
入力
| 入力 | デフォルト | 内容 |
|---|---|---|
files | **/*.pdf | 読み込む PDF。glob パターンを 1 行に 1 つずつ指定するか、カンマで区切って指定します。 |
exclude | node_modules/**, **/node_modules/**, vendor/** | 除外するパターン。 |
output-dir | pdf-tables | CSV ファイルの保存先フォルダー。 |
pages | (empty) | 各 PDF で読み込むページ。1,3-5 のように指定します。空欄の場合は全ページを読み込みます。 |
strategy | auto | lines(罫線のある表)、text(スペースで位置合わせされた表)、または auto(まず lines、次に text)。 |
fail-if-no-tables | false | PDF に表がない場合に失敗します。 |
fail-on-scanned | false | テキストのないスキャンページが PDF に含まれている場合に失敗します。 |
fail-if-no-files | true | 一致するファイルがない場合に失敗します。 |
artifact-name | (empty) | 設定すると、CSV をこの名前のアーティファクトとしてアップロードします。 |
python-version | (empty) | セットアップする Python。空欄の場合はランナーの Python(3.10 以降)を使用します。 |
出力
| 出力 | 内容 |
|---|---|
files | 読み込んだ PDF の数。 |
tables | CSV として保存した表の数。 |
scanned-files | スキャンページを含む PDF の数。 |
output-dir | CSV ファイルが保存されているフォルダー。 |
AI エージェント向け
- 使用する場合: 実際のテキストが含まれるローカル PDF(単語を選択できる)があり、表を行として取得する必要がある場合。
- 使用しない場合: PDF がスキャンまたは写真である場合、パスワードが設定されている場合、または Excel が必要な場合。これらのページはスキップされます。その場合は有料版を使用してください。
- 入力: ファイルパスと、任意の
pages(1,3-5など)およびstrategy(auto、lines、text)。 - 出力: CSV 文字列のリスト。表ごとに 1 つで、先頭行がヘッダーです。空のリストは表が見つからなかったことを意味します。
- CLI の終了コードは、成功時は 0、エラー時は 1 です(メッセージは stderr に出力されます)。
llms.txtも参照してください。
テスト
pip install pdfplumber "mcp<2"
python3 -m unittest discover tests
ライセンス
MIT。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。