fix: pro OCR ROI calibration and 24-word mnemonic pipeline fixes#32
Merged
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Device-calibrated OCR scenes for pro (mnemonic 12/18/24 part1/part2 and verify-number ROIs measured from real captures), plus a chain of recognition and merge fixes for the 24-word create-wallet flow: - deviceScenes: per-layout pro ROIs; scene selection is word-count and part-aware (allowPartial picks part1/part2) - CameraPanel: wordlist choice decoupled from requireBip39 (20/33-word shares are SLIP39, everything else BIP39) — part1 words were being snapped onto the SLIP39 wordlist (skull->skunk) - CameraPanel: drop isolated phantom indices before part merge (viewport- clipped scroll rows parsed as e.g. "1. ens" and overwrote correct words) - CameraPanel: calibrated scenes use base + horizontal-only expansion candidates; removed dead 12-word column-row fallback - paddleocr_en_infer: blue-channel input for mnemonic layouts (suppresses warm-light glare), per-column row recognition, cross-row column-anchor glare filtering, clipped-row dropping, script version marker - sequences: 500ms delayBefore PIN entry; ControlPanel executor now honors delayBefore (previously MCP executor only) - ship PP-OCRv6 small onnx models and BIP39/SLIP39 wordlists Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Optional higher-accuracy models selectable via QA_AUTO_HW_OCR_MODEL_DIR / QA_AUTO_HW_OCR_DET_MODEL_DIR; the runtime default remains the small models. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
wabicai
force-pushed
the
fix/pro-ocr-roi-and-mnemonic-pipeline
branch
from
July 17, 2026 04:39
406bd3f to
c1c157c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Device-calibrated OCR scenes for pro plus a chain of recognition/merge fixes for the 24-word create-wallet flow. Root causes were found by calibrating against saved captures and full-pipeline reproduction; final state: 12/18/24-word flows recognize all words correctly and the merged 24-word phrase validates against the BIP39 checksum.
OCR scene calibration (pro)
225,690 665x580), 18 (225,580 665x830), 24 part1 (225,695 665x715, stops above the 继续 button), 24 part2 (225,520 665x890, full list viewport), verify-number (160,530 520x170)allowPartialpicks part1/part2); pro2 behavior unchangedRecognition pipeline (paddleocr_en_infer.py)
scriptVersionin the server ready message, logged by the main process to make stale-server debugging obviousRenderer fixes (CameraPanel)
requireBip39: 24-word part1 (requireBip39: false) was treated as a SLIP39 flow and every valid BIP39 word got snapped onto the SLIP39 wordlist (skull→skunk, young→round…) — the root cause of the recurring wrong words at indices 1/2/13/14Sequences
delayBeforePIN entry (both first entry and re-confirm); ControlPanel executor now honorsdelayBefore(previously only the MCP executor did)Assets
Test plan
@scure/bip39+ english wordlist/health sequenceIdsdrift check) still presenttsc --noEmitclean; pythonpy_compileclean🤖 Generated with Claude Code