Files
genshin-assistant/docs/scanner-rework-status.md
T

3.3 KiB

Scanner rework status

Progress on the approved scanner/OCR rework. See ADR-007/008/009/010 in DECISIONS.md for the decisions behind these. For the current live automation runbook, see AUTOMATION_LIVE_SCAN.md.

Done (implemented, unit-tested, build green)

  • OCR eval harnesssrc/eval/, npm run eval, gate in npm test. See ocr-eval.md.
  • C# input/capture sidecarnative/input-helper/, npm run helper:build. Replaces the PowerShell helper on the same JSON protocol; PowerShell remains a fallback. Verified end-to-end (spawn, runtime, base64 capture).
  • Layout profiles + OCR preprocessingsrc/lib/layoutProfile.ts (pure geometry, 16:9 detection), src/lib/ocrPreprocess.ts (grayscale + Otsu binarize). main.ts now uses calibrated 16:9 detail/count/grid coordinates first and OCRs an upscaled + binarized copy.
  • Card-ready gatingsrc/lib/cardReadyGate.ts replaces the fixed 280 ms settle with change+stability polling; robust to animation.
  • GOOD interopsrc/lib/goodInterop.ts (export + best-effort import for scanned records), Electron file-picker import/export, and store merge.
  • Rescan-mergesrc/lib/artifactMerge.ts collapses leveled re-scan duplicates by a level-independent identity.
  • Data staleness warningsrc/lib/dataPackageStatus.ts, surfaced in the Scanner Diagnose data-package line.
  • Lock detection (experimental)src/lib/lockDetection.ts, wired into live capture as a read-only locked flag and persisted with scanned records.
  • Elevated live automation pathnpm run dev:admin now starts through scripts/dev-admin.ps1 and logs to outputs/admin-start/admin-dev.log. Live status confirmed isElevated: true, genshinFound: true, and targetProcess: "GenshinImpact".
  • Read-only click probe/automation/probe-click?index=1 verified that the app can focus Genshin, move to a visible inventory tile, click it, and observe a changed detail panel fingerprint (clicked: true, inputBlocked: false, changed: true).
  • Bounded auto-scan validation/scanner/start?limit=2 completed live with 2 clicks, 2 verified detail views, 2 parsed artifacts, 2 stored records, 2 review samples, and 0 misses.

Remaining — needs the live environment or a UI pass

These cannot be finished/validated without Genshin running at the user's resolution or without UI work best tested live:

  1. Validate/tune OCR preprocessing on more real captures — confirm invert + threshold + upscale factor help (not hurt) actual Tesseract reads. The text-level eval harness cannot measure image preprocessing.

  2. Validate locked=true against a known locked artifact — unlocked/grey lock was live-checked; a gold locked icon still needs a positive sample.

  3. Broader scan soak test — after the bounded two-item live scan passed, the next automation validation should increase the limit gradually and watch for repeated pages, scroll behavior, duplicate handling, and OCR review rate.

Grow the eval corpus

Every low-confidence review sample already stores its crops + OCR. Confirm/correct those via reviewSampleToEvalCase and commit them into src/eval/corpus/ so the harness keeps measuring real-world accuracy across patches. See ocr-eval.md.