HGNN(HiGeNagaNeko)のFile Finder 📁🔍

Word、Excel、PDF、画像などのファイルからテキストを抽出して検索します。画像からのテキスト抽出にはOCRが使用できます。

NDLOCR-Lite(国立国会図書館)、Apache Tika、YomiToku(商用使用不可)を使用してファイル内のテキストを抽出して検索します。プログラムはAIに指示して作ったので、指示ミスによる動作不良があると思います。自動更新はしていないので、抽出したものしか検索できません。このツールは動作の正確性・完全性を保証するものではありません。使用は自己責任でお願いします。

⚠️ YomiToku: 研究・個人利用のみ。業務・商用では使用不可。YomiTokuは商用なので、商用利用を含め、使用の際は必ず開発元の提供するライセンス条件や提供元を確認してください。

使用ライブラリ:

  • NDLOCR-Lite — 国立国会図書館製OCR (CC BY 4.0)
  • Apache Tika — 多形式テキスト抽出 (Apache 2.0)
  • YomiToku — 高精度日本語OCR (CC BY-NC-SA 4.0、非商用のみ)

🎯 主な特徴

⚡ 高速検索

  • 従来: ファイルを開いて中身を確認 → 遅い 💤
  • File Finder: 事前にテキストをDB化 → 瞬時に検索 ⚡

📂 対応形式が豊富

カテゴリ 対応形式
Office .docx, .doc, .xlsx, .xls, .xlsm, .pptx, .ppt
PDF .pdf(テキスト埋め込み+OCR対応)
画像 .jpg, .jpeg, .png, .heic, .bmp(OCR対応)
動画 .mp4, .mov, .avi(ファイル名・パスのみ)
テキスト .txt, .csv, .md など(カスタム拡張子も追加可能)

🌐 ネットワーク&オフライン対応

3つのアクセスモードで、あらゆる環境に対応:

  • 🚀 直接抽出: ネットワーク共有から高速処理
  • 📦 コピー後抽出: コピー完了後はオフラインOK
  • 💾 事前コピー: すでにコピー済みのファイルから処理

🔍 OCR文字認識

  • 画像・スキャンPDF内の文字も検索対象に
  • 2種類のOCRエンジンから選択可能
    • NDLOCR-Lite: 商用利用可能、高速
    • Yomitoku: 高精度(非商用のみ)

🛡️ セキュリティ配慮・堅牢性の向上

  • ローカル完結: すべての処理はローカルPC内で完結し、外部サーバーへのデータ送信は一切行われません。
  • Javaの自動構成とTikaの安全な処理: .doc, .xls, .ppt などの古い形式は Apache Tika を使って安全にテキストを抽出します。ローカルJava環境 (java/bin/java.exe) の有無を自動検出・構成し、Tikaが利用可能な場合は安全な抽出を最優先で処理します。
  • Tika未使用時のフォールバック: Tikaが使えない場合は、 Office アプリ(Word/PowerPoint)経由でテキストを抽出します。
  • タイムアウト保護: 1ファイルあたり最大60秒のタイムアウトを設定しており、 処理が止まった場合は自動的に中断して次のファイルへ移行します。

⚡ 効率的なテキスト抽出・データ管理

  • テキスト抽出・登録データの直接削除: 検索タブの詳細パネルから、実ファイルを削除することなく、検索DBの登録データのみを個別に削除可能です。
  • 検索結果からの除外(非表示リスト): 管理者コンソール(データベース管理)から、特定のファイルやフォルダ配下全体を「検索結果への表示/非表示 (🚫)」設定に指定可能です。
  • 一時ファイル・隠しファイルの自動スキップ: フォルダ走査時に、Officeの一時ロックファイル(~$*)やドットから始まる隠しファイル(.*)を自動的にスキップし、不要なファイル登録を防ぎます。
  • SHA-256ハッシュの採用: ファイル重複・変更検知のハッシュ生成処理に、信頼性の高い SHA-256 を採用しています。
  • 一時ファイルの即時クリーンアップ: ジョブ完了時に、処理用の一時ファイルを即座に自動削除し、ディスク容量を圧迫しないよう配慮しています。
  • 事前コピーモード時の安全警告: GUIで「事前コピーを使う」を有効にした際、対象フォルダに誤ってネットワークパスを指定した場合には、パフォーマンス低下を防ぐための警告ダイアログが表示されます。

🚀 クイックスタート

1️⃣ インストール

次のURLをクリックしてください。

https://github.com/neko-higenonagai/finder

# ベース環境のセットアップ
hgnn_setup.bat

# (オプション)OCR機能を追加
setup_1_ndlocr_lite.bat
setup_2_yomitoku.bat         # 非商用のみ(高精度)

# (オプション)古いOffice形式の安全な処理
setup_3_tika.bat

💡 Tip: OCRを使わない場合は hgnn_setup.bat だけでOKです。

2️⃣ 起動

run_finder.bat

3️⃣ テキスト抽出(初回のみ)

  1. 「テキスト抽出・DB登録」 タブを開く
  2. 対象フォルダを選択(例: C:\Users\YourName\Documents
  3. 「テキスト抽出開始」 ボタンをクリック
  4. 完了を待つ(1000ファイルで約5〜10分、それ以上...)

4️⃣ 検索

  1. 「検索」 タブを開く
  2. キーワードを入力(例: 予算 会議
  3. Enter キーで検索 🔍
  4. 結果をダブルクリックでファイルを開く

📖 使い方ガイド

詳細は マニュアル を参照してください。

🔍 検索のコツ

AND検索(複数キーワード)

予算 会議 2025

→ すべてのキーワードが含まれるファイルに絞り込み

拡張子フィルタ

  • チェックボックスで .pdf.docx など、特定の形式に絞り込み可能

検索結果の操作

操作 方法
テキスト表示 結果を選択すると右下部にパスと内容が表示
ファイルを開く ダブルクリック or 右クリック → 「ファイルを開く」
フォルダを開く 右クリック → 「フォルダを開く」
削除 右クリック → 「削除」

🔧 3つのアクセスモード詳細

環境や用途に応じて、最適なモードを選択できます。

🚀 直接抽出(デフォルト・推奨)

特徴:

  • ✅ 最も高速
  • ✅ ディスク容量不要
  • ⚠️ 対象がネットワーク先の場合はネットワーク接続が必要

推奨シナリオ:

  • 高速LAN環境(1Gbps以上)
  • ローカルディスクのファイル
  • 小〜中サイズのファイル(〜50MB)

設定:

対象フォルダ: C:\Users\YourName\Documents
コピー処理: すべてOFF(デフォルト)
低トラフィック: OFF

📦 コピー後抽出(オフライン推奨)

特徴:

  • ✅ コピー完了後はオフラインOK
  • ✅ ネットワーク切断可能
  • ⚠️ 一時的にディスク容量が必要

推奨シナリオ:

  • 低速回線(Wi-Fi、VPN)
  • オフライン作業が必要
  • 大容量ファイル(50MB以上)

設定:

対象フォルダ: \\server\share\documents
☑ コピーしてからテキスト抽出・DB登録
☑ 低トラフィック(約2.5MB/s制限)

処理の流れ:

1. ネットワークから work/ にコピー(帯域制限あり)
2. コピー完了 → 「ネット切断可」表示
3. ローカルから高速抽出
4. 一時ファイル自動削除

💾 事前コピー(上級者向け)

特徴:

  • ✅ すでにコピー済みのファイルを活用
  • ✅ コピー時間のスキップ
  • ⚠️ 手動コピーが必要

推奨シナリオ:

  • 事前にローカルディスクにコピー済み
  • DBには元のパスを登録したい
  • 再インデックス時の時間短縮

設定:

対象フォルダ: D:\local_copy\documents  ← ローカルコピー先
☑ 事前コピーを使う
ポストパス: \\server\share\documents  ← 元のパス

手順:

# 1. 事前にコピー
\\server\share\documents → D:\local_copy\documents

# 2. File Finder で設定
対象フォルダ: D:\local_copy\documents  # ローカルから読む
ポストパス: \\server\share\documents   # DBには元パスを登録

# 3. 抽出実行
ローカルから高速処理、ネットワークアクセスなし

⚠️ 重要: 対象フォルダにはローカルコピー先を指定してください。
ネットワークパスを指定すると、コピー処理はスキップされますが、読み取り時にネットワークアクセスが発生します。


⚙️ 設定ガイド

🔧 検索設定

テキスト抽出オプション

項目 デフォルト 説明
最大抽出文字数 2000 ファイル1件あたりの抽出文字数上限
Excel最大行数 100 Excel読み込み行数(大きいと遅い)

拡張機能

項目 説明
追加拡張子 .txt,.csv,.md カスタム拡張子をカンマ区切りで追加
メタデータのみ拡張子 .mp4,.avi 中身は読まず、ファイル名・パスのみ検索対象

OCR設定

☑ OCRエンジンを有効にする

【機能】
- 画像・スキャンPDF内の文字を認識
- 自動回転補正(0°, 90°, 180°, 270°)
  ※OCRの回転補正は、画像の向きが違っていても文字として認識することが多いため、向きの自動判別がうまくいかない場合が多くあります。
- 処理時間: 画像1枚あたり約5〜240秒
  `yomitoku` は負荷が高いため、1ファイルあたり最大3分(180秒)のタイムアウト制限が設けられており、時間を超過した場合は自動的に `ndlocr_lite` に切り替わるか、スキップされます)。

【推奨環境】
- CPU: 4コア以上
- RAM: 8GB以上
- ストレージ: SSD推奨

動作要件

推奨構成(CPU)およびGPU動作に関する重要な注意点

  • 推奨環境: 本システムは、最も安定して動作する 「CPU環境」を推奨構成(動作保証) としています。
  • NDLOCR-LiteはCPU固定: 文字認識(NDLOCR-Lite)は、GPUとライブラリの相性問題やメモリ確保の不具合を回避し、かつ極めて軽量で高速なため、GPU構成を選択した場合でも常に安定した CPU 上で実行される設計となっています。GPUによって高速化されるのはYomiTokuのみです。
  • GPU環境の動作性: GPUはPC構成やドライバのバージョンによってビルドエラーが発生したり、正常に動作しなかったりする場合があります。
  • 実機動作確認済みGPU: 本システムにおいて実機で動作確認を行ったGPUは 「NVIDIA GeForce RTX 2060 (6GB)」のみ です。
  • 未検証・サポート外の環境: Intel Iris や AMD Radeon などの環境(DirectML / Vulkanアクセラレーション)については、実機での検証を行っておらず未検証・サポート外となります。

古いOffice形式の扱い

☑ 古いOffice形式を読み込む (.doc, .xls, .ppt)

【安全な処理】
✅ Tikaインストール済み → 安全に抽出(推奨)
⚠️ Tika未インストール → Office起動(マクロリスクあり)

【推奨】
- setup_3_tika.bat でTikaをセットアップ
- 信頼できるファイルのみを対象に

💾 データベース設定

データベースパス

検索DB (finder.db):   db/finder.db
進捗DB (progress.db): db/progress.db

メンテナンス操作

操作 影響 用途
抽出履歴のクリア ジョブ履歴・エラーログのみ削除 管理画面の整理
完全初期化 すべてのインデックスを削除 一から再構築

⚠️ 重要な注意事項

⚖️ 免責事項

  • 現状有姿での提供: 本プログラムは現状有姿で提供され、バグや動作不良が含まれる可能性があります。
  • 使用上の免責: 作者および提供者は、本プログラムの使用または使用不能から生じるいかなる損害(データの損失、業務の中断、PCの不具合などを含む)についても一切の責任を負いません。自己責任においてご利用ください。

🔒 セキュリティ

  1. 古いOffice形式 (.doc, .xls, .ppt)

    • ⚠️ マクロの自動実行リスクあり
    • 推奨: setup_3_tika.bat でTikaをセットアップ
    • 📌 信頼できないファイルは設定で無効化
  2. ネットワーク

    • ローカルPC内で完結、外部送信なし
    • DB内のパス情報は暗号化されていません(ローカル前提)

🔄 インデックスとファイルの同期・アクセス制限

  • 自動更新ではありません: 本システムはファイルの変更をリアルタイムで検知して自動更新する機能はありません。ファイルの追加・変更・削除を反映するには、再度テキスト抽出・DB登録を行う必要があります。
  • 目的のファイルが見つからない場合: データベースの登録内容が古い場合や、ネットワークの一時的な切断、共有フォルダへのアクセス権限がない場合などに、検索結果に表示されても目的のファイルが見つからない(アクセスできない)ことがあります。

📜 ライセンスと商用利用

コンポーネント ライセンス 商用利用
File Finder本体 MIT License ✅ 可能
NDLOCR-Lite Apache 2.0 ✅ 可能
Yomitoku 非商用ライセンス ❌ 不可
Apache Tika Apache 2.0 ✅ 可能

⚠️ Yomitokuの制限: 研究・個人利用のみ。業務・商用では使用不可。yomitokuは商用なので、商用利用を含め、使用の際は必ず開発元の提供するライセンス条件や提供元を確認してください。


🐛 トラブルシューティング

検索結果が出ない

【原因1】テキスト抽出がまだ
→ 「テキスト抽出・DB登録」タブで抽出を実行

【原因2】拡張子フィルタが厳しすぎる
→ 「すべて」にチェック、または対象拡張子を増やす

【原因3】ファイルが追加拡張子に含まれていない
→ 設定 → 「追加拡張子」に追加

テキスト抽出が失敗する

【.doc/.xls/.ppt の場合】
→ setup_3_tika.bat を実行してTikaをインストール

【画像ファイルの場合】
→ setup_1_ndlocr_lite.bat でOCRを追加
→ 設定で「OCRを有効にする」をON

【ネットワークエラーの場合】
→ 「コピーしてからテキスト抽出」+「低トラフィック」を有効化

処理が遅い

【ネットワーク共有の場合】
✅ 「コピーしてからテキスト抽出」+ 「低トラフィック」ON

【大量ファイルの場合】
✅ 「Excel最大行数」を 50 に減らす
✅ 「最大抽出文字数」を 1000 に減らす
✅ 対象拡張子を絞り込む(必要なものだけON)

メモリ不足

【大ファイルの直接抽出】
→ 「コピーしてからテキスト抽出」に変更

【OCR処理中】
→ 同時処理ファイル数を減らす
→ 画像解像度を下げる(設定は自動)

📁 ディレクトリ構成

finder/
├── run_finder.bat          # アプリ起動
├── hgnn_setup.bat          # メインセットアップ
├── setup_*.bat             # オプションセットアップ
├── README.md               # このファイル
├── LICENSE                 # ライセンス
│
├── scripts/                # Pythonスクリプト
│   ├── finder.py           # エントリポイント
│   ├── lib/                # コアロジック
│   └── gui/                # GUI
│
├── python/                 # ローカルPython環境
│   ├── python.exe
│   └── Lib/                # 依存パッケージ
│
├── java/                   # Apache Tika用Java
│   └── bin/
│
├── db/                     # データベース
│   ├── finder.db           # 検索インデックス
│   └── progress.db         # 抽出履歴
│
├── work/                   # 一時ファイル
│   └── (自動削除)
│
└── doc/                    # ドキュメント
    └── manual.md           # 詳細マニュアル

📄 ライセンス

本アプリケーションは MIT License のもとで公開されています。

外部ライブラリのライセンス:

  • NDLOCR-Lite: Apache License 2.0
  • Yomitoku: 非商用ライセンス(研究・個人利用のみ)
  • Apache Tika: Apache License 2.0
  • その他: 各ライブラリの公式ドキュメントを参照

おうちケア 便利な在宅支援ツール

HGNN(HiGeNagaNeko)

Androidタブレットで朝・昼・夕方・夜のタイミングに服薬・食事・水分補給タブレットで朝・昼・夕方・夜のタイミングに服薬・食事・水分補給を促し、実施状況の履歴も確認でき、催促メッセージの編集やカメラの動き検知による催促も行います。

在宅で見守りが必要な家族の「飲み忘れ・食べ忘れ・水分不足」を減らすことができればいいかと思います。

忘れたときも催促を繰り返します。履歴をつかって家族・介助者も確認できるようにしています。

プログラムはAIに指示して作ったので、指示ミスによる動作不良があると思います。このツールは動作の正確性・完全性を保証するものではありません。使用は自己責任でお願いします。

おうちケア

朝・昼・夕方・夜の催促

1日のリズムに沿って、朝・昼・夕方・夜の4回にわけてわかりやすい催促と確認を行います。

各催促は時刻を調整でき、生活リズムや服薬スケジュールに合わせた柔軟な設定が可能です。

服薬の催促と確認

設定時刻に通知で服薬を催促を促し、「はい」で実施を記録、一覧から履歴を確認できます。

服薬の時間に対応し、飲み忘れに役立ちます。

 

食事・水分の催促

食事の催促で食べ忘れを防ぎ、記録によって日々のペース配分を見直せます。

水分も催促と記録に対応し、忙しい日でも催促することで習慣化を支援します。

 

実施の管理と履歴

各催促に対して「はい/いいえ」をタップで登録、日別・週別の履歴を可視化します。

履歴が増えることで、傾向の振り返りや家族・介護者間での情報共有が容易になります。

 

催促メッセージの編集

催促メッセージは本人に伝わりやすい表現へ自由に変更可能です。

時間帯やカテゴリ(服薬・食事・水分)ごとにメッセージを切り替え、理解しやすさを高めます。

 

カメラの動き検知による催促

端末カメラの動体検知で動きが検出されたら催促します。時刻のみの催促では、いないときにもむだな催促が行われます。

見守り用途で一般化している動体検知を利用して、催促のきっかけにします。

 

アプリのリンク先

まだまだバグや改良点はあると思いますので、お試ししてみてください。

タブレットは画面を横にして表示したほうが使いやすいです

f:id:higenonagaineko:20251124215254j:image

おうちケア



NDLOCR-Liteを使ったRAGナレッジベース(ローカルLLM)

HGNN(HiGeNagaNeko)

PDFドキュメントをNDLOCR-Lite(国立国会図書館)でOCRして、テキスト検索およびAIによる対話型検索を行うツールです。

NDLOCR-Lite(国立国会図書館)を使用することでOCRが以前より楽になりました。プログラムはAIに指示して作ったので、指示ミスによる動作不良があると思います。LLMによっては回答が適切でなかったり、回答がエンドレスで終わらなくて停止が必要な時もあります。PDFが頻繁に変更される用途に向いてないと思います。資料などの変更がないものが良いです。このツールは動作の正確性・完全性を保証するものではありません。使用は自己責任でお願いします。

動作確認のためサンプルでkbフォルダにPDFが入ってます。新規に使用するときはフォルダ内をすべて削除して、推奨の構成でフォルダを作成してPDFを置いてください。PDFを取り込むときはデータベース(DB)を新規に作成しなおして下さい。

アプリケーション概要

Sudachiを使用してインデックス化しています。データベースとインデックスはSQLiteで構成しています。LlamaIndexなどはインデックス作成に時間がかかるので使用しませんでした(良い方法があるのかもしれませんが...)。なので、あまり精度のよい検索はできてません。検索前にもllmで検索語を適正にすると良いのかも...

1. HGNN-editor (hgnn-editor.py)

   - PDFのページ構成を編集(並べ替え、削除、回転、結合)するためのツールです。

   - スキャン前の書類整理や、資料の統合に役立ちます。

   - データベースの自動更新はできません。ingestorで再度更新します。

2. HGNN-ingestor (hgnn-ingestor.py)

   - PDFや画像ファイルを読み込み、OCR処理を行ってデータベースを構築します。

   - 新しい資料の追加や、既存データのメンテナンス(OCRテキストの修正)に使用します。

3. HGNN-search (hgnn-search.py)

   - 構築されたデータベースに対して、キーワードによる全文検索を行います。

   - 該当するPDFページをプレビューし、必要に応じてテキストの修正も可能です。

4. HGNN-ragchat (hgnn-ragchat.py)

   - AI(LLM)と対話しながらナレッジベースの内容を検索・要約します。

   - 関連するドキュメントを検索し、それに基づいた回答を生成します。

   - うまく検索しないときは「」または""で囲んでください。囲んだ文字はテキスト一致で検索します

動作要件

  - 本プロジェクトは WinPython の python/python.exe を使用して動作確認しています

  - 通常の Python 3.12 でも動作しますが、パスの設定が必要になる場合があります

  • NDLOCR-Lite | Sudachi | llama-cpp-python | pypdfium2

インストール

次のURLをクリックしてください。

GitHub - neko-higenonagai/knowledge: RAGのナレッジベースツール · GitHub

すべてダウンロードしてセットアップを実行してください。CodeからZIPファイルをダウンロードして解凍した後、下記のBATファイルを実行してください。

動作させるにはLLM(AIモデル)を別途ダウンロードする必要があります(約1.2GB)。

HGNN_setup.bat

LLM(AIモデル)のダウンロード

Hugging FaceからLFM2.5-1.2B-JP-Q8_0.ggufをダウンロードします。また、modelsのフォルダに別のモデルを置けば選びなおせます。

download_model.bat

次のモデルも試しました。LM Studioでダウンロードしてmodelsフォルダに置くと利用できます。

  • Ministral-3-3B-Instruct-2512-GGUF

  • gemma-4-E2B-it-GGUF

  • gemma-4-E4B-it-GGUF

使い方

1. PDFの整理

資料を整理したい場合は HGNN-editor を使用します。

  • run_editor.bat を実行します。

  • ページの入れ替え、画像の向きの補正、いらないページの削除などをして保存します。

2. データの取り込み

整理したPDFをHGNN-ingestor を使って資料を取り込みます。

  • run_ingestor.bat を実行します。

  • 取り込みたいPDFを選択し、「取り込み開始」を押すとOCR処理が始まります。

  • フォルダの階層は後述の構成にするのが望ましいです。

3. 検索と閲覧

取り込まれたデータは HGNN-search で確認できます。

  • run_search.bat を実行します。

  • 検索窓に単語を入力すると、該当ページがリストアップされます。

4. AIとの対話

ナレッジベースに質問したい場合は HGNN-ragchat を使用します。

  • run_ragchat.bat を実行します。

  • 下部の入力欄に質問を入力すると、AIが関連資料を探して回答します。

推奨されるフォルダ構成

本システムはフォルダ階層を「大分類 / 中分類 / 小分類(ファイル名)」として認識します。

検索性を高めるため、以下のような 2階層のフォルダ構成 にした上で、各フォルダ内にPDFファイルを配置することを推奨します。

kb (ベースフォルダ)
├── 01_プロジェクトA (大分類)
│ ├── 01_仕様書 (中分類)
│ │ └── 要件定義書.pdf (小分類/ファイル名)
│ └── 02_議事録 (中分類)
│   └── 2026-05-04_会議.pdf
└── 02_製品マニュアル (大分類)
  └── 01_取扱説明書 (中分類)
    └── ユーザーガイド.pdf

※ フォルダ階層が深すぎると取り込み対象外(範囲外)となります。ベースフォルダから2階層下までにファイルを配置してください。

大変なPDFの整理はNDLOCR-Lite(国立国会図書館)を使って...