見出し画像

論文ビューア with Local LLM

研究会や学会に参加していると、毎セッションで6本も7本も発表が続き、しかも分野が次々変わります。スライド1枚目で「これ、なんの論文だっけ?」と既に追いつかなくなる、なんてことが、座長をやっているとよくあります。

事前に予稿集をざっと読んでおく時間も、なかなか取れません。当日になって慌てて読んでも、自分の専門と少しずれた発表だと、質疑応答の場で気の利いた質問を投げるのが難しい。

座長ではなくても、部屋を移って途中から聞くとか、ちょっとメールを書くとかでも聞きそびれが発生してしまい、PDFを読んでないように追いつくという作業が発生します。

そこで、ローカルLLM(LM Studio などPC内で動くLLM)と組み合わせて、論文PDFをドラッグ&ドロップすると要点と「想定される質疑」まで自動で整理してくれるWebアプリを作りました。

GitHubで公開していますので、PC内にLM Studio などが動く環境さえあれば、誰でもすぐに使えます。
🔗 https://github.com/wildriver/paper-viewer-local-llm


なぜ作ったか

理由はシンプルで、座長として恥ずかしくない質問をしたかったからです。
「Limitationsで述べられているXの問題は、Yのケースではどう変わりますか?」のように、その論文の中身を踏まえた質問は、ぼんやり聞いていただけだとなかなか出てきません。
かといって、毎回その場で論文を読み込む時間もない。
だったら、要点を整理してくれて、あわよくば質問例まで考えてくれるツールがあるといいな、と。
ChatGPTのような外部サービスに論文をアップロードする方法もありますが、

  • 未発表・査読中の論文を外部に流すのは避けたい

  • 研究会の予稿集のような、まだ公開されていない論文も扱いたい

  • 通信環境の悪い会場でも動くようにしたい

という事情から、完全にPC内で完結する 仕組みにしました。


① シンプルな起動画面

paper_viewer.html 1ファイルをブラウザでダブルクリックするだけで起動します。

トップ画面

インストール作業はなく、Pythonなどの環境構築も不要です。
最初に表示されるのはこんな画面で、

  1. LLMサーバのURL(既定で LM Studio の http://localhost:1234/v1)を確認

  2. 「接続テスト」を押すと、ロード中のモデル一覧がプルダウンに自動で入ります

  3. PDFをドラッグ&ドロップ(または「クリックして選択」)

  4. 「要約を開始」

これだけで処理が始まります。
論文PDFに限らず、発表スライド (PDF) でも同じように使えます


② 5観点に分かれた要約

要約は、以下の5観点 + 各サブ項目に整理されます。

  • 全体像と意義

    • 背景

    • 目的

    • 新規性

  • 結論

    • 主要な結論

    • 主張と事実の分離

  • 方法

    • 手法の妥当性

    • 再現性

    • 条件・対象

  • 根拠

    • 結果

    • 客観性

  • 限界と今後の展望

    • 研究の限界

    • 今後の展開

特に意識したのは「主張と事実の分離」と「客観性」を独立した観点として置いたことです。論文を読むときは、「著者がこう言っている」だけでなく「実験データはどこまで支持しているか」を冷静に分けて読みたいので、LLMにもそこを言語化させるようにしました。画面の右半分にはPDFそのものが表示されるので、要約を読みながら原文を確認することもできます。


③ 想定される質疑(座長としてのお守り)

これがこのアプリの目玉機能のひとつです。
オレンジ色の枠で囲まれた「💬 想定される質疑」には、論文の核心や弱点に切り込む具体的な質問例が3〜5個並びます。
例えば屋内測位の論文なら、こんな質問が出てきます。

ノード数増加に伴う計算負荷が二乗で増えるとのことですが、64機以上の倉庫を想定した際の現実的な更新レートはどの程度を見込んでいますか?

「再現性は?」のような一般的すぎる質問ではなく、論文の手法・データに即した質問 を出すようにLLMにお願いしているのがポイントです。


④ Vision拡張で図表・著者名も画像から認識

設定画面で「🖼 Vision拡張」をONにすると、全ページを画像化してVLM(Vision LLM)に送る モードになります。

  • Gemma 3-VL / Qwen2.5-VL / MiniCPM-V などの画像が読めるモデルが対象

  • 図・表・著者名・所属を画像から直接読み取る

  • テキスト抽出だけでは取れない数値(グラフの読み取り、表の中身)も拾える

  • その結果を、テキスト抽出の本文と一緒に最終要約LLMに渡す 2段階パイプライン となっています。

処理時間は数倍に伸びますが、グラフや表、数式など、PDF.jsでテキスト化されていない部分についての解説を作ることができます。


タグでテーマを横断、メモは座長メモに

タグも自動で生成されます。

「屋内測位」「UWB」「シミュレーション評価」のようなタグがついて、左パネルからクリックすると同じテーマの発表だけに絞り込めます。

「類似順」ボタンを押せば、今見ている論文と共通タグが多い順に並べ替えてくれるので、テーマの近い発表をまとめて見ておく、といった使い方もできます。

★(お気に入り)、既読、メモはブラウザ内に保存されるので、当日の会場で気になった発表に★をつけたり、質疑応答中の気づきをメモ欄に直接書き込んだりして、そのまま座長メモとして使えます。


プライバシーについて

念のため明記しておくと、論文の中身は外部に一切送信されません
処理の流れは以下の通り完全にローカルです。

[PDF] → ブラウザ内でPDF.jsがテキスト抽出
       → 同じPCで動いているLLM (LM Studio / Ollama) に送信
       → 結果はブラウザ内のIndexedDB / localStorageに保存

唯一の外部通信は、初回ロード時に PDF.js のJSライブラリをCDNから読むだけで、PDFの中身はその後どこにも出ていきません。
DevToolsのネットワークタブで簡単に確認できます。
未発表論文・査読中の原稿・社内資料などにも安心して使えます。


使ってみるには

  1. LM Studio をインストール(lmstudio.ai)。日本語が話せる任意のモデルをロードして、設定でCORSをONにする

  2. GitHubから paper_viewer.html をダウンロード → ダブルクリック

  3. URL確認 → モデル選択 → PDFをドロップ → 「要約を開始」

それだけです。Pythonも、Node.jsも、Dockerも要りません。1ファイル完結なので、研究室のメンバーや学生に渡すのも簡単です。
詳しい使い方や対応モデル、Vision拡張の設定はGitHubのREADMEに書いてあります。

🔗 https://github.com/wildriver/paper-viewer-local-llm

ライセンスはMITで、自由に使えます。


今後

実会場で使い込んだら、また改善点が見えてくると思います。
すでに考えている拡張は、

  • お気に入り・メモのエクスポート/インポート(PC間で引き継げるように)

  • キーボードショートカット(次の論文へ、★トグルなど)

  • 図表領域をハイライトしながら質問できるアノテーション機能

など。

研究会・学会で使ってみて「ここをこうしてほしい」というのがあれば、ぜひ教えてください。ご自身の研究室でも、ぜひ使ってみてください。
学生さんが論文を読むときの伴走者としても、結構いい働きをしてくれるはずです。

いいなと思ったら応援しよう!

荒川 豊 (Yutaka Arakawa) よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!