akitaonrails/FrankSherlock

Intelligent File Searcher that can search for descriptions in media files like photos, for example "receipt from market of $42.00" using AI based classification

何を解決するか

Frank Sherlock は、NAS(ネットワーク接続ストレージ)ユーザー向けに設計された、クラウドにデータを送信せずに、ローカルのみで動作するAI駆動の画像アーカイブおよび検索ツールです。大規模な画像、PDF、動画のライブラリを整理・検索する問題を解決し、ファイル名ではなくコンテンツに基づいてメディアファイルを分類・インデックス・検索するプライベートな方法を提供します。

動作方法

アプリケーションは、メディアを処理するためのマルチステージパイプラインを使用しています。

  1. 発見とインデックス作成: ディレクトリの読み取り専用スキャンを行い、新規または変更されたファイルのフィンガープリントとサムネイルを生成します。
  2. AI分類: Ollamaを介してローカルのビジョンLLMを使用して、画像の説明と分類、アニメ・マンガキャラクターの識別、ドキュメントの検出を行います。
  3. テキスト抽出: Surya OCR(ビジョンLLMのフォールバック付き)を使用して、ドキュメント、領収書、スクリーンショットからテキストを抽出します。
  4. 顔認識: オンボードのONNXモデル(SCRFDおよびArcFace)を使用して、顔を検出し、エンベッディングを作成し、識別可能な人物にクラスタリングします。
  5. 検索: 抽出されたメタデータ、OCRテキスト、顔クラスタをSQLiteデータベース(FTS5)にインデックス化し、高速なフルテキスト検索を実現します。

対象ユーザー

NASなどに大規模なローカルメディアコレクションを持つユーザーで、プライバシーを重視し、自然言語検索や顔認識を活用して写真、ドキュメント、動画をAI駆動で整理・検索したい方。

特徴

  • 完全ローカル処理: すべてのAIモデルはOllamaおよびONNXを介してユーザーのマシン上で実行され、データがデバイス外に送信されることはありません。
  • インクリメンタルスキャン: 10万ファイル以上に対応する最適化により、中断されたスキャンの再開や、変更のないファイルのスキップが可能。
  • 重複検出: SHA-256による正確な重複検出と、パーセプチュアルハッシュ(dHash)およびLLM説明類似性の組み合わせによる類似重複検出。
  • 顔クラスタリング: 顔を自動的に人物ごとにグループ化し、名前を付けてマージ可能。face:nameで検索が可能。
  • 広範なフォーマット対応: JPEG、PNG、GIF、BMP、WebP、TIFF、PDF、およびMP4、MKV、AVIなどさまざまな動画形式に対応。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト