# ローカルでのOCRおよび文字起こし

Canonical page: https://phishdestroy.github.io/TgWitness/ja/docs/reference/media-analysis/

ローカルワーカーを使用してキャプチャされた画像や音声を認識し、抽出されたテキストを元のファイルと関連付けます。

**現在のメインバージョン：**ソースコードをチェックアウトして使用してください。0.7.0のポータブルプレビュー版には、この機能が実装されていません。

[ワークフローガイド](https://phishdestroy.github.io/TgWitness/docs/archive/) · [Wiki](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md)

`media.saved`ジャーナルレコードを開き、「**添付ファイルを認識」**を選択してから、 「**アーカイブに問い合わせ」**の下にある「OCR」または「文字起こし」を選択します。処理は手動で、ローカルで行われます。 クラウドメディアモードや自動アップロード機能はありません。元の添付ファイルのバイトデータおよび `media_sha256`は変更されず、認識されたテキストは明示的に「機械 認識」としてマークされ、ソースのハッシュ値、エンジン／モデルのバージョン、 言語、パラメータ、完了時刻とともに別途保存されます。文字起こしデータには、返されたタイムスタンプが保持されます。

**「認識されたテキストの検索」**および「OCR/文字起こし」 フィルターを使用して、これらの検索結果を検索してください。これは独立した派生データ検索であり、機械 認識結果を黙って元のTelegramテキストに変換したり、署名付きイベントに追加したりすることはありません。

## オプションのワーカーを設定する

バージョン 1 では、ローカルの Docker デーモンを備えた Linux ホストが必要です。Windows 環境では、 独自のローカルデーモンを備えた Linux VM/WSL 環境内で TgWitness を実行できます。 本パネルは、信頼できない添付ファイルを自らデコードすることは決してありません。

```
docker build -f deploy/media-worker/Dockerfile -t tgwitness-media:local .
export TGWITNESS_MEDIA_IMAGE=tgwitness-media:local
```

TgWitnessのサービス環境でこれらの変数を設定し、サービスを再起動してください。 デーモンソケットのデフォルトは`/var/run/docker.sock`です。root権限なしのデプロイでは `TGWITNESS_DOCKER_SOCKET`を設定できます。ワーカーは、リモートのDockerコンテキストではなく、 そのUnixソケットを明示的に使用します。パネルユーザーに対してDocker APIを公開したり、 認識コンテナ内にそのソケットをマウントしたりしないでください。

文字起こしを行うには、CTranslate2 互換の Whisper モデルを別途インストールし、 `TGWITNESS_WHISPER_MODEL_DIR` をそのディレクトリに設定してください。ワーカーは `local_files_only=True` を使用してモデルを読み込み、選択されたモデルと入力データは読み取り専用でマウントされます。 エンジンの[モデル読み込みに関するドキュメント](https://github.com/SYSTRAN/faster-whisper)を参照してください。 提供されるOCRイメージには、英語とロシア語の学習データが含まれています。必要に応じて、 イメージに別の言語を組み込んでください。言語コードは [TesseractのCLI](https://tesseract-ocr.github.io/tessdoc/Command-Line-Usage.html)に準拠しています。

処理中はモデルは読み込まれません。ビルドおよびセットアップのダウンロードにはネットワーク通信が必要となる場合がありますが、 各認識コンテナではネットワーク通信が無効化されています。ネットワーク通信を有効にする前にイメージをインストールしてください。 実行時には`--pull=never`が使用されます。

## 制限事項と復旧

コンテナは、読み取り専用のルート、機能制限（dropped capabilities）、`no-new-privileges` 、CPU 1 コア、メモリ 2 GiB、PID 制限、および容量制限のある 一時ファイルシステムを備えた、特権のないユーザーとして実行されます。マウントされるのは、選択されたファイルの検証済みコピーと、オプションの モデルディレクトリのみです。 コレクターのデータベース、保管庫、およびセッションは マウントされません。[Dockerランタイムのフラグ](https://docs.docker.com/reference/cli/docker/container/run/) によりこれらの制限が強制されます。これはコンテナの境界であり、ハードウェアエンクレーブではありません。

ファイルサイズは50 MiB、画像は2,000万ピクセル、音声は再生時間が既知の場合に限り30分、 処理時間は5分までと制限されています。一度に実行できるワーカーは1つで、 ワークスペースごとにキューに登録済みまたは実行中のジョブは最大20件、保持中のジョブは最大100件までです。 「Cancel」はコンテナを停止させ、「retry」は前回の試行にリンクされた新しいジョブを作成します。 中断されたジョブは、再起動後にマークされます。モデルが 設定された制限に適合できない場合、処理は失敗する可能性があります。隔離なしでは、処理は黙って実行されることはありません。
