mcpField
A
alterlab-pdf-extract

alterlab-pdf-extract

github.com/alterlab-ieuドキュメント7863 回インストール5 週間前に更新
リポジトリ

alterlab-pdf-extract について

alterlab-pdf-extractは、複数の文書をユーザー指定の列を持つ構造化エビデンステーブルにまとめるコマンドラインスキルです。入力をMarkdownに変換したうえで、決定的なキーワード照合または任意のLLM抽出バックエンドを利用できます。

主な機能

  1. 01複数文書から指定項目を抽出
  2. 02対応入力をMarkdownに変換
  3. 03ヒューリスティックと任意のLLMバックエンド
  4. 04MarkdownまたはCSVテーブルに出力
  5. 05変換失敗ファイルをエラー行として保持

活用シーン

  1. 01論文コーパスの研究手法を比較
  2. 02レビュー用エビデンスシートの作成
  3. 03PDFを並べ替え可能なCSVに整理
  4. 04サンプル数や結果の収集

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-pdf-extract

インストール後、Claude Code で/alterlab-pdf-extractを入力して読み込まれたか確認します。

同梱ファイルevals/evals.jsonscripts/extract_to_table.py

詳細

PDF Extract — ユーザー定義のエビデンステーブル

概要

Elicit の「columns」機能に相当する無料のツールです。PDF をまとめて指定し、必要な列を定義すると、整理されたエビデンステーブルが返されます。論文ごとに 1 行、質問ごとに 1 列で、CSV または Markdown テーブルとして出力されます。文献スクリーニング、手法の比較、PICO/サンプルサイズの抽出、レビュー用エビデンスシートなど、コーパス全体からデータを抽出するために作られています。

列を抽出する前に、すべての入力は Microsoft MarkItDown(alterlab-markitdown スキルを参照)を使って整った Markdown に正規化されます。そのため、PDF、DOCX、PPTX、HTML など、MarkItDown が対応する形式をすべて扱えます。

このスキルを使う場面

  • 同じ項目を多数の論文から抽出し、比較表やスプレッドシートにまとめる場合。
  • レビュー用のデータ抽出シートを作成する場合(サンプルサイズ、研究デザイン、介入、アウトカム、効果量、限界など)。
  • PDF フォルダーをスクリーニングし、並べ替えやフィルター処理ができる CSV にする場合。
  • 「各行を論文、各列を X とする表を作って」という依頼全般。

このスキルは、すでに手元にある文書を対象に、文章ではなく構造化されたテーブルを作成します。論文を用意してから使用してください。

起動しないケース
シナリオ代わりに使用
論文を探すためにデータベースを検索する場合、またはナラティブ統合を執筆する場合alterlab-literature-review
1 つの PDF を詳細に調べる場合(すべてのセクション、図、表、付録)alterlab-pdf-explore
文書を Markdown に変換するだけの場合alterlab-markitdown
手元にない論文の構造化された実験データを探す場合alterlab-bgpt-search
Zotero ライブラリで PDF とその参考文献を管理する場合alterlab-pyzotero

クイックスタート

SCRIPT=skills/research-tools/alterlab-pdf-extract/scripts/extract_to_table.py

# Heuristic backend: use 'label:question' so the question carries the words the
# papers actually use — overlap is lexical, so a bare label like "Sample size"
# rarely matches "we enrolled 240 participants" (see Backends below).
uv run python "$SCRIPT" papers/*.pdf \
    --column "Sample size:how many participants were enrolled" \
    --column "Main finding:primary result reported" \
    --column "Limitations:study limitations weaknesses" --format md

# Columns with explicit extraction questions, CSV to a file:
uv run python "$SCRIPT" a.pdf b.pdf \
    --column "n:how many participants were enrolled" \
    --column "effect:what was the main reported effect size" \
    --format csv -o evidence.csv

# Precise LLM-backed extraction (needs OPENROUTER_API_KEY) — label-only columns
# are fine here, since the model reads the paper rather than matching keywords:
uv run python "$SCRIPT" lit/*.pdf \
    --columns "Population" "Intervention" "Outcome" --backend llm

列の定義

列は、ラベルと抽出を促す質問で構成されます。定義方法は 2 つあります。

仕様形式意味
"Sample size"ラベル == 質問。キーワードはラベルから取得されます
"n:how many participants"ラベルは n、質問は how many participants

シンプルなラベルをスペース区切りのリストで指定するには --columns を使い、明示的な質問が必要な仕様には --column を繰り返し指定します。両方を組み合わせられますが、ラベルが重複していると拒否されます。

バックエンド

  • heuristic(デフォルト、オフライン、無料):各列について、Markdown の文を列の仕様との文字どおりのキーワードの重なりでスコアリングし、最もよく一致するエビデンスの抜粋を出力します。決定論的なため、最初の確認、スクリーニング、再現可能な実行に適しています。キーワードを共有する文がない場合は、セルを空欄にします。 注意点:一致判定は意味的ではなく、語句に基づきます。一般的なラベル "Sample size" は sample、size に分割されますが、これらは「we enrolled 240 participants」には含まれないため、セルは空欄になります。heuristic バックエンドでは、論文で実際に使われている語句(participants、enrolled、cohort、n=)を質問に含めて、列を Label:question の形式で指定してください。質問に数字または % が含まれる場合、定量的な質問では数字を含む文に小さなランキングボーナスも加算されます。一般的なラベルしかない場合は、代わりに llm バックエンドを使用してください。
  • llm(オプション、高精度):変換後の Markdown(先頭から 24,000 文字)とすべての列の質問を OpenAI 互換エンドポイントに送り、列ごとの簡潔な回答を取得します(論文に記載がない場合は N/A)。OPENROUTER_API_KEY が設定されている場合、リクエストは OpenRouter に送信されます。それ以外の場合は、OPENAI_API_KEY が OPENAI_BASE_URL(または OpenAI のデフォルト)に送信されます。各キーが送信されるのは、それぞれのキー専用のエンドポイントだけです。モデル ID は ALTERLAB_MODEL の規約(skills/core/shared/model_env.md)に従い、$ALTERLAB_MODEL を使用します。設定されていない場合は日付付きのデフォルト値を使用します。実行ごとに上書きするには --model を使います(OpenRouter 以外のエンドポイントでは、そのエンドポイントが提供するモデル ID を渡してください)。LLM の回答は、レビューに取り込む前に PDF と照合して抜き取り確認してください。自信たっぷりの誤った数値も、表では正しい数値と同じように見えるためです。

出力

  • --format md → GitHub Flavored Markdown の表(セル内のパイプはエスケープされます)。
  • --format csv → csv.DictWriter による CSV。
  • -o FILE はディスクに書き込みます(UTF-8)。それ以外の場合、表は標準出力に出力されます。

最初の列は常に Source(入力ファイル名)です。変換に失敗したファイルは ERROR 行となり、表の列が揃います。

パイプラインへの適合

alterlab-pdf-extract は、論文の発見より後、統合より前の段階で機能します。

  1. 論文を見つける — データベース/検索スキル(alterlab-literature-review、検索バックエンド)。
  2. エビデンステーブルを抽出する — このスキル。
  3. 統合/執筆 — alterlab-literature-review、alterlab-paper-writer。

ファイル

  • scripts/extract_to_table.py — CLI です。--help で全フラグを確認できます。--columns/ --column で表を定義し、--backend、--format、--model、-o で抽出と出力を制御します。

AlterLab Academic Skills スイートの一部です。

コメント