alterlab-pdf-extract について
alterlab-pdf-extractは、複数の文書をユーザー指定の列を持つ構造化エビデンステーブルにまとめるコマンドラインスキルです。入力をMarkdownに変換したうえで、決定的なキーワード照合または任意のLLM抽出バックエンドを利用できます。
主な機能
- 01複数文書から指定項目を抽出
- 02対応入力をMarkdownに変換
- 03ヒューリスティックと任意のLLMバックエンド
- 04MarkdownまたはCSVテーブルに出力
- 05変換失敗ファイルをエラー行として保持
活用シーン
- 01論文コーパスの研究手法を比較
- 02レビュー用エビデンスシートの作成
- 03PDFを並べ替え可能なCSVに整理
- 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 は、論文の発見より後、統合より前の段階で機能します。
- 論文を見つける — データベース/検索スキル(
alterlab-literature-review、検索バックエンド)。 - エビデンステーブルを抽出する — このスキル。
- 統合/執筆 —
alterlab-literature-review、alterlab-paper-writer。
ファイル
scripts/extract_to_table.py— CLI です。--helpで全フラグを確認できます。--columns/--columnで表を定義し、--backend、--format、--model、-oで抽出と出力を制御します。
AlterLab Academic Skills スイートの一部です。