Skip to content

指定した矩形のみをテキスト認識する機能の検討 #286

Description

@Freeesia

要求

  • OCR設定で特定範囲の矩形を登録し、矩形が1件以上ある場合は指定範囲だけをOCRする
    • 全体画像のOCRは追加しない
    • 指定範囲で文字を認識できなくても全体OCRへフォールバックしない
  • 矩形が未登録の場合は、従来どおり画像全体をOCRする
  • 矩形を複数登録できるようにし、リストの順序で優先度を制御する
    • リスト前方ほど優先度を高くする
    • 矩形リストをドラッグ&ドロップで並べ替えられるようにする
    • 設定矩形ではなく実際の認識結果を比較し、低優先度側の認識結果の面積に対する重なりが50%以上の場合だけ、低優先度側の結果を破棄する
  • 矩形にキーワードを付け、翻訳時のコンテキストへ紐づける
  • 矩形登録時は対象ウィンドウの前面に矩形選択ウィンドウを表示し、ドラッグで選択できるようにする

受け入れ条件

  • 矩形登録時に、指定範囲外のOCR結果がオーバーレイ表示されない
  • 矩形未登録時の全体OCRの挙動が変わらない
  • 複数矩形の認識結果がリスト順の優先度で整理される
  • 低優先度側の認識結果の面積に対する重なりが50%未満なら両方を保持し、50%以上なら低優先度側を破棄する
  • 設定矩形同士が重なっていても、実際の認識結果が重ならないテキストは保持される
  • 複数矩形をドラッグ&ドロップで並べ替えられる
  • 矩形の相対座標がウィンドウサイズの変更に追従する
  • 矩形選択UIの小数DIPを切り捨てずに相対座標へ変換する
  • Windows Media OCR / Tesseract / OneOCR / ChatGPT API / Gemini で同じ指定範囲処理が適用される
  • 矩形選択UIでは、対象ウィンドウに対して幅または高さが0.5%未満の選択は受け付けず、再選択できる
  • 画像外または1ピクセル未満の矩形は無視し、全体OCRへフォールバックしない
  • スケール・回転・切り出し後も認識結果が元画像の正しい座標へ戻る
  • 未翻訳のUI文字列は英語へフォールバックする

実装状況

PR #481 で実装・レビュー指摘対応中です。

  • 指定範囲だけを認識する共通処理を5種類のOCRモジュールへ適用
  • 重複判定を設定矩形ではなく実際の認識結果同士に限定し、50%の境界を回帰テスト化
  • 範囲選択UIとドラッグ&ドロップ並べ替えを実装
  • 矩形選択UIの小数DIPを切り捨てず相対座標へ変換
  • 縮尺復元処理を共通化し、スケール・回転・切り出し位置の組み合わせを回帰テスト化
  • 小数の相対座標から実際に切り出す整数ピクセル範囲を確定し、同じ左上座標で元画像座標へ復元
  • 未使用の PriorityRectDescription リソースを全言語から削除
  • 未承認の内部ガード、認識結果の二重保持、不要な公開補助APIと無関係差分を削除
  • 既存の英語フォールバックを実行時テストで確認し、不足していた英語リソースを追加
  • 全テスト106件成功
  • Tesseract OCR / OneOCR / ChatGPT API / Gemini の各プラグイン単体ビルド成功(エラー0件)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions