概要
PR #648 の OcrTextTracker は、文字列、位置、サイズ、MultiLine、分割・統合をそれぞれ追跡・安定化する。
個別の変化については既存テストで確認されているが、文字列変更と矩形または構造の変更が同じタイミングで発生する複合ケースは、明示的な保証が不足している。
通常の画面遷移やレイアウト変更でも発生する複合変化について、同じ論理トラックを維持し、重複表示や古い断片を残さないことを確認する。
方針
PR OCR表示安定化をバッファ方式から追跡方式(OcrTextTracker)へ置き換え #648 の既存の追跡・安定化方針を維持する
文字列変更と矩形変更が同時に発生しても、既存トラックとの対応を維持する
文字列変更と分割・統合が同時に発生しても、古いトラックと新しいトラックを重複させない
複合変化が継続した場合は、既存の確定条件に従って最終状態へ収束する
複合変化が一時的な場合は、既存の安定表示を維持する
現在の実装で条件を満たさない場合は、既存の追跡機能を損なわない範囲で修正する
確認するシナリオ
文字列・X座標・幅の同時変更
中央揃えまたは右揃えのテキストで、内容変更に伴って位置と幅が同時に変化する。
文字列: Menu → Settings Menu
X: 300 → 250
Width: 100 → 200
同じ論理トラックを維持する
古い位置と新しい位置に重複表示を作らない
変更が継続した場合は新しい文字列と矩形へ収束する
文字列・高さ・MultiLineの同時変更
内容変更に伴って改行が発生し、高さと MultiLine が同時に変化する。
文字列: Menu → Open Settings And Configure
Height: 30 → 60
MultiLine: false → true
同じ論理トラックを維持する
変更確認中に別トラックを作らない
変更が継続した場合は新しい文字列とレイアウトへ収束する
文字列変更と分割の同時発生
前フレームでは1領域だったテキストが、内容変更と同時に複数領域として認識される。
既存の論理トラックとの関係を維持する
古い全体領域と新しい断片を重複表示しない
一時的な分割では既存表示を維持する
分割が継続した場合は既存の構造確定方針に従って収束する
文字列変更と統合の同時発生
前フレームでは複数領域だったテキストが、内容変更と同時に1領域として認識される。
既存トラック群との関係を維持する
古い断片と新しい統合領域を重複表示しない
一時的な統合では既存表示を維持する
統合が継続した場合は既存の構造確定方針に従って収束する
維持する動作
投票による文字列安定化
位置、サイズ、フォントサイズ、角度、MultiLineの安定化
1対1対応の全体最適化
分割・統合の継続確認
一時未認識時の表示保持
トラックの移動予測
同一文字列が複数箇所に存在する場合の対応付け
通常のOCR処理時間に対して支配的にならない性能
対象外
文字送り専用の判定
変更途中の文字列を表示すること
Busy表示または翻訳可否の制御
文字列の投票条件や構造確定条件の全面的な変更
ユーザー設定の追加
受け入れ条件
完了条件
文字列と矩形または構造が同時に変化する場合でも、OcrTextTracker が同じ論理領域を継続して追跡し、重複表示や古いトラックを残さず最終状態へ収束すること。
概要
PR #648 の
OcrTextTrackerは、文字列、位置、サイズ、MultiLine、分割・統合をそれぞれ追跡・安定化する。個別の変化については既存テストで確認されているが、文字列変更と矩形または構造の変更が同じタイミングで発生する複合ケースは、明示的な保証が不足している。
通常の画面遷移やレイアウト変更でも発生する複合変化について、同じ論理トラックを維持し、重複表示や古い断片を残さないことを確認する。
方針
確認するシナリオ
文字列・X座標・幅の同時変更
中央揃えまたは右揃えのテキストで、内容変更に伴って位置と幅が同時に変化する。
文字列・高さ・MultiLineの同時変更
内容変更に伴って改行が発生し、高さと
MultiLineが同時に変化する。文字列変更と分割の同時発生
前フレームでは1領域だったテキストが、内容変更と同時に複数領域として認識される。
文字列変更と統合の同時発生
前フレームでは複数領域だったテキストが、内容変更と同時に1領域として認識される。
維持する動作
MultiLineの安定化対象外
受け入れ条件
MultiLineが同時に変化しても同じ論理トラックを維持する完了条件
文字列と矩形または構造が同時に変化する場合でも、
OcrTextTrackerが同じ論理領域を継続して追跡し、重複表示や古いトラックを残さず最終状態へ収束すること。