うわさのOpenRecallを日本語対応させてみた

こんにちはデータアナリティクス部のフバチ(Robert Hubacz)です。このブログは、日本語ユーザーにOpenRecallを提供することです。

※OpenRecallについては「NPU不要で「ReCall」機能をWindows・Mac・Linuxで再現するツール「OpenRecall」が登場」などをご覧ください。

はじめに

OpenRecallは、MicrosoftのWindows RecallやLimitlessのRewind.aiのような有料サービスの無料でプライバシー重視の代替品です。デジタル活動を見直すことで、記憶を助け、生産性を向上させながら、情報をプライベートに保ちます。

OpenRecallはコンピュータの活動のスクリーンショットを定期的にキャプチャします。これらのスクリーンショットを分析することで、テキストや画像を検索することができます。キーワードを入力するか、履歴を手動でスクロールすることで、必要なスクリーンショットを素早く見つけることができます。

OpenRecallは光学文字認識(OCR)ツールを使用してスクリーンショットからテキストを抽出します。抽出されたテキストは自然言語処理ツール(NLP)を使用して処理されます。この処理されたテキストは、ユーザーが入力したキーワードと比較するために保存されますが、そのキーワードも同じNLPツールで処理する必要があります。

現在の問題は、OpenRecallがOCRにDoctrライブラリを使用し、NLPに’all-MiniLM-L6-v2’モデルを使用していることです。これらは英語やラテン文字向けに設計されています。

OpenRecallを日本語に適応させるために、DoctrライブラリをEasyOCRライブラリに、’all-MiniLM-L6-v2’モデルを’colorfulscoop/sbert-base-ja’モデルに置き換えることを提案します。EasyOCRは、日本語を含む80以上の言語をサポートするオープンソースのOCRライブラリです。’colorfulscoop/sbert-base-ja’モデルは、日本語の自然言語推論データを含むJapanese SNLI(JSNLI)データセットを使用してファインチューニングされた日本語BERTベースモデルです。

Ryeを使用したインストール (Windows)

インストールの順序は重要です。

Pytorchはすでにeasyocrと一緒にインストールされているため、OpenRecallが正常に動作するにはステップ9は必要ありません。しかし、Cudaを使用するには必要です。

orc_easyocr.py

使用上の注意ポイント

OCRまたはNPLに関連するコードの変更は、基本的に蓄積されたスクリーンショットを削除する必要があります。つまり、screenshotsディレクトリとrecall.dbファイルを削除することを意味します。私の場合、これらはC:\Users\ {ユーザ名} \AppData\Roaming\openrecallディレクトリにあります。これは、単語の検出と埋め込みの違いによるものです。

テスト

キーワードを使用したスクリーンショットの検索結果。検索されたスクリーンショットは赤い枠で囲まれています。キーワード「統計」の場合、目的のスクリーンショットが最初に選択されなかったことが分かります。しかし、他のケースではプログラムは間違いを犯しませんでした。ただし、保存されたスクリーンショットの数が増えると、キーワードの作成がより難しくなる可能性があります。これは、類似した言葉が異なるスクリーンショットに表示される可能性があるためです。

https://github.com/openrecall/openrecall
https://github.com/JaidedAI/EasyOCR
https://huggingface.co/colorfulscoop/sbert-base-ja