@tomyou666 (tomyou)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

自作 PDF解析ツールをTauri 2.0 で書き換えてくれる方を募集します(Windows / Mac ローカルアプリ化)

はじめに:プロジェクトと「やりたいこと」とのギャップ

SmartExtract-PDF は、PDF のレイアウトを解析し、矩形で選んだ範囲を読み順に並べて 1 枚の画像にまとめ、AI に質問できる OCR × AI 対話リーダーです。

qiita紹介記事1: https://qiita.com/tomyou666/items/7409927a60cd73e9444d
qiita紹介記事2: https://qiita.com/tomyou666/items/800ad54a2c28cb2ca338

技術系 PDF の 2 段組みや図・表がまたがる構成を、「読んでほしい範囲」だけ指定して AI に渡せるようにするツールとして開発してきました。現在は Vite + React + FastAPI + Docker の Web アプリとして動作しており、OCR には NDLOCR-Lite(WASM)を利用しています。

今後は アプリの拡張を続け、認知度を上げていける OSS にしていきたいと考えています。その一環として、

  • Tauri 2.0 で書き換え
  • Windows / Mac のネイティブローカルアプリとして再構築
  • 軽量・省メモリで動くデスクトップアプリとして付加価値を出したい

という目標があります。

一方で、時間的リソースが足りず、Tauri 2.0 での書き換えを一人で進めるのが難しい状態です。そこで、Tauri 2.0 で書き換え(Windows / Mac 対応のローカルアプリ化)に協力してくださる方を募集したく、この記事を書いています。


SmartExtract-PDF でできること(現状)

  • 矩形で範囲を選び、読み順に並べて 1 枚の画像にまとめ、AI に送る
  • サムネイルと目次表示(目次がない PDF は AI で自動生成)
  • チャットで使う LLM(OpenAI / Google など)を設定で切り替え
  • OCR で PDF を解析し、見出し・段落・表・図ごとに矩形選択を半自動化
  • 画像 PDF でも文字認識可能

技術スタック(現状)は クライアント: Vite (Rolldown) + React 19 + TypeScript / サーバー: Python 3.13 + FastAPI + LiteLLM / DB: PostgreSQL で、Docker で起動する構成です。


Tauri2.0で書き換えることでの付加価値

  • 軽量・省メモリ: ブラウザベースではなくネイティブアプリにすることで、起動やメモリ使用量を抑えたい
  • OS ネイティブ体験: Windows / Mac のローカルアプリとして配布し、インストールやオフライン利用のしやすさを高めたい
  • OSS としての拡張性: デスクトップアプリとしての価値を足し、利用者・コントリビューターを増やしていきたい

Tauri 2.0 を選ぶ理由としては、Rust ベースでセキュリティやパフォーマンスに強く、既存の Web フロント(React 等)の資産を活かしやすいためです。


募集内容:やっていただきたいこと

  • SmartExtract-PDF を Tauri 2.0 ベースのアプリとして書き換える(またはその中核部分を実装する)
  • Windows および macOS で動作するローカルアプリとしてビルド・動作確認できる形にすること

技術的な詳細(既存 API の扱い、OCR の WASM の組み込み方など)は、リポジトリの Issue やディスカッション、もしくは記事へのコメントなどで相談しながら決められればと思います。


書き換えに協力してくださった方へのお礼

  • CONTRIBUTE.md を新規作成し、その中に コントリビューションしてくださった方のユーザー名(GitHub など)を記載します。
  • README.mdコントリビューターとして永続的に記載します。

金銭的な報酬は現時点ではご用意できませんが、OSS としてのクレジットを明確に残す形でお礼をさせていただきます。


参加・問い合わせの方法

  • GitHub の Issue で「Tauri 2.0 書き換えに協力したい」旨を書いていただく
  • または Qiita のこの記事へのコメントで興味があると伝えていただく

いただいたメッセージを元に、リポジトリの Issue やディスカッションで具体的な進め方を詰めていければと思います。


まとめ

  • SmartExtract-PDF を、Tauri 2.0 で書き換え、Windows / Mac のローカルアプリとして作り直したいと考えています。
  • 時間的余裕がないため、書き換えに協力してくださる方を募集しています。
  • 協力してくださった方には、CONTRIBUTE.md へのお名前の記載README.md へのコントリビューターとしての永続的な記載でお礼をします。

Tauri 2.0 や Rust × フロントエンドに興味がある方、PDF × AI ツールの OSS に携わりたい方、ぜひご連絡いただけると嬉しいです。

1 likes

初めまして。
現在、以下の通りRustの勉強を始めたばかりのDevLinkHubと申します。
https://qiita.com/devlinkhub/items/79b9cd4ee4e0709ab5a1

SmartExtract-PDFというプロジェクトを拝見し、非常に興味を持ちました。
募集内容にある「Tauri 2.0 ベースへの書き換え」の実装範囲について質問させてください。

具体的には、
・Tauri 2.0へ移行するためのサーバーサイド(Rust)の書き直し
・APIのデータを受け取ってUIを描画する機能の実装
のどちらを指しているのでしょうか。

正直なところ、Rustに関してはまだ学習を始めたばかりで実装経験も乏しい状態です。
ですが、自身のプロジェクト( https://devlinkhub.net )と並行してRustの学習を進めており、具体的な実装範囲を伺った上で、自分に貢献できそうな部分があるか検討したいと考えております。

お忙しいところ恐縮ですが、ご回答いただけますと幸いです。

1Like

DevLinkHubさん。初めまして。

興味を持っていただいてありがとうございます。
Rustの学習からアプリ実装への興味を持たれることは非常に素晴らしいことだと思います!

具体的には、
・Tauri 2.0へ移行するためのサーバーサイド(Rust)の書き直し
・APIのデータを受け取ってUIを描画する機能の実装
のどちらを指しているのでしょうか。

Tauri 2.0へ移行するためのサーバーサイド(Rust)の書き直しになります。

主にPythonで書かれているバックエンドをRust + Tauriの構成に刷新したいと考えています。
フロントエンドについては、TauriのWebViewを利用するため、インターフェース部分の微調整は必要ですが、大部分のコードは流用可能と見込んでいます。

このアプリはAPIキーなどの秘密情報を保存しているため、セキュリティ上の理由から、デスクトップアプリケーションとしてローカルで動作させる方向性のほうが、ユーザの総合的な体験はいいだろうと思っています。

バックエンドをPytonからRustに書き換えについては、バックエンド - フロントエンドのインタフェース部分をそれぞれ、tauri用、webアプリ用(Rest API)と変更するだけで、デスクトップアプリケーション、webアプリケーションどちらも動作できるようにしたいと思っています。

将来的には、多言語化、ドキュメント整理、オフィシャルサイトの作成、重い処理のジョブキュー化、OCR処理のフロント + バックエンド処理の切り替え機能の実装…など、ちゃんと使えるツールとして成熟、それを知ってもらう方向性で発展させていきたいと思っています。

正直なところ、本当にお声がけいただけるとは思っておらず(笑)
具体的なタスクの切り出しが追いついていない部分もありますが、大きな主軸は最初に述べた「バックエンドをRust + Tauriで書き換えてほしいになります」

もちろん、もしやっていただけるようであれば、全部の機能ではなくても、DevLinkHubさんの都合や、できる範囲でやっていただければと思っています…<(_ _)>

協力していただければ、このプロジェクトを通じて私の実務経験ベースのアーキテクチャの考え方(今は正直ボロボロですが今後整理します)や運用面などアプリ実装~運用面での視点をお伝えできるのかと思います。

詳細はGitHubのIssueで整理していければと思います。お手数ですが、興味がありましたら是非、こちらのIssueへ一度コメントをいただけますでしょうか。

1Like

Your answer might help someone💌