Skip to content

Windows OCR の CJK 文字枠の過剰補正を修正 - #604

Merged
Freeesia merged 4 commits into
masterfrom
copilot/fix-translation-font-size
Sep 23, 2026
Merged

Freeesia merged 4 commits into
masterfrom
copilot/fix-translation-font-size

Conversation

Copilot AI commented Mar 28, 2026 •

Copy link
Copy Markdown
Contributor

背景

Windows OCR の CorrectWord には、ラテン文字の字形を前提に単語の位置と高さを補正する処理があります。CJK 文字にも適用されると、高さが過大になります。この高さは CalcRect で表示用の FontSize に使われます。

最新コードへの適用範囲

  • 最新 master を取り込みました。追加された変更は依存パッケージの更新で、Windows OCR の補正経路は変わっていません。
  • CJK 文字を含む Windows OCR の単語だけ、回転補正後の矩形にラテン文字向けの位置・高さ補正を加えないようにしました。判定には仮名・漢字・ハングル(字母を含む)と補助平面の漢字を含めます。
  • 元 PR の「文字種フラグがすべて無い場合も補正を省く」条件は、r などのラテン文字まで変えてしまうため採用しません。
  • 旧 OcrBufferFilter は現行コードに存在せず、OcrTextTracker が観測結果の小さな揺れを時系列で安定化しています。旧フィルターの2値平均と同一の処理ではありませんが、それを共通トラッカーへ移すと他の OCR にも影響します。今回の過大補正は Windows OCR の入力側で解消します。

検証

  • アプリ本体のビルド成功。
  • CJK 判定 10 件と既存の OCR 追跡テスト 3 件、計 13 件成功。
  • テストプロジェクト全体は、今回触れていない PluginValidationSettingsTests.cs:108 が存在しない非ジェネリック ConfigurePluginParam を参照しておりコンパイルできません。上記 13 件は、このファイルだけをビルド引数で除外して実行しました。
  • 実画面での OCR 表示確認は未実施です。

Copilot AI changed the title [WIP] Fix translation text font size to match original Fix over-inflated font size for CJK source text and font size averaging in OCR buffer Mar 28, 2026
Copilot AI requested a review from Freeesia March 28, 2026 08:37
@Freeesia

Copy link
Copy Markdown
Owner

@copilot
PRのタイトル、説明を日本語で記載して

Copilot AI commented Mar 28, 2026

Copy link
Copy Markdown
Contributor Author

@copilot
PRのタイトル、説明を日本語で記載して

PRのタイトルと説明を日本語に更新しました。

タイトル案: CJK文字のフォントサイズ過剰拡大およびOCRバッファのフォントサイズ平均化を修正

説明:
OCR認識時にCJK文字(日本語・中国語・韓国語)のフォントサイズが約1.2倍に膨らむバグと、IsSuppressVibe機能でフォントサイズが正しく平均化されていなかったバグを修正しました。

WindowsMediaOcr.cs — CJK文字の高さ補正をスキップ

CorrectWord 関数はラテン文字のバウンディングボックスをemサイズに正規化(アセンダー・デセンダーの欠落分を補正)する処理ですが、CJK文字はすでにemセルを満たしているため、この補正を適用すると誤って1.2倍に膨らんでいました。

ContainsCjk() ヘルパーを追加し、CJK文字またはラテン文字フラグがすべて無効な場合は補正なしで早期リターンするよう修正しました。

OcrBufferFilter.cs — フォントサイズの平均化を正しく実装

コメントに「フォントサイズを平均化」と記載されていましたが、実際には直前フレームの値をそのまま使用していたため、一度大きなフォントサイズが検出されると以降も持続するバグがありました。(text.FontSize + pastText.FontSize) / 2 による平均化に修正しました。

Copilot AI changed the title Fix over-inflated font size for CJK source text and font size averaging in OCR buffer CJKソーステキストのフォントサイズ過剰拡大およびOCRバッファのフォントサイズ平均化を修正 Mar 28, 2026
削除済みの OCR バッファとの競合を解消し、CJK を含む単語だけで
ラテン文字向けの位置・高さ補正を省く。
@Freeesia Freeesia changed the title CJKソーステキストのフォントサイズ過剰拡大およびOCRバッファのフォントサイズ平均化を修正 Windows OCR の CJK 文字枠の過剰補正を修正 Sep 22, 2026
@Freeesia
Freeesia marked this pull request as ready for review September 23, 2026 06:12
@Freeesia
Freeesia merged commit 8dbfacf into master Sep 23, 2026
8 checks passed
@Freeesia
Freeesia deleted the copilot/fix-translation-font-size branch September 23, 2026 07:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

認識元と同じフォントサイズで翻訳テキストを表示できるようにする。

2 participants