diff --git a/css/style.css b/css/style.css index 21d8af3..776e71e 100644 --- a/css/style.css +++ b/css/style.css @@ -3461,9 +3461,8 @@ a.ms1-trad-link.btn-aide-trad{ left:50%; top:50%; transform:translate(-50%,-50%); - /* Guide un peu large : aligne sur la zone OCR (~70% x 40% du flux). */ - width:70%; - height:40%; + width:55%; + height:30%; border:2px solid rgba(255,255,255,.95); border-radius:8px; box-shadow:0 0 0 100vmax rgba(0,0,0,.5); diff --git a/js/v2/inscr-gestion.js b/js/v2/inscr-gestion.js index 5b847d0..9e110dc 100644 --- a/js/v2/inscr-gestion.js +++ b/js/v2/inscr-gestion.js @@ -488,46 +488,25 @@ }); } + // MSIN-4401 — Un numero de dossard = tous les chiffres lus dans le cadre + // (ex. OCR "5 2 1" ou "521" → "521"). Un chiffre seul = "5". function extractBibNumber(raw) { - var matches = String(raw || '').match(/\d+/g); - if (!matches || !matches.length) { + var digits = String(raw || '').replace(/\D/g, ''); + if (digits.length < 1 || digits.length > BIB_MAX_LEN) { return ''; } - if (matches.length === 1) { - var one = matches[0]; - return (one.length >= 1 && one.length <= BIB_MAX_LEN) ? one : ''; - } - // OCR decoupe souvent un dossard manuscrit en chiffres isoles ("5" "2" "1"). - var allSingles = true; - var i; - for (i = 0; i < matches.length; i++) { - if (matches[i].length !== 1) { - allSingles = false; - break; - } - } - if (allSingles) { - var joined = matches.join(''); - return (joined.length <= BIB_MAX_LEN) ? joined : ''; - } - // Sinon : le groupe le plus long s'il domine clairement (evite 2 dossards). - var sorted = matches.slice().sort(function (a, b) { return b.length - a.length; }); - if (sorted[0].length <= BIB_MAX_LEN && sorted[0].length > sorted[1].length) { - return sorted[0]; - } - return ''; + return digits; } - // MSIN-4401 — Crop central du flux video (comme avant le polish UI). - // Zone un peu large pour un numero manuscrit entier dans le viseur. + // Crop central du flux video — region du cadre blanc (~55% x 30%). function captureCenterFrame(videoEl) { if (!videoEl || !videoEl.videoWidth) { return null; } var w = videoEl.videoWidth; var h = videoEl.videoHeight; - var cropW = Math.round(w * 0.7); - var cropH = Math.round(h * 0.4); + var cropW = Math.round(w * 0.55); + var cropH = Math.round(h * 0.3); var sx = Math.round((w - cropW) / 2); var sy = Math.round((h - cropH) / 2); var canvas = document.createElement('canvas'); diff --git a/php/inc_fx_inscriptions_gestion.php b/php/inc_fx_inscriptions_gestion.php index acf024f..3e4e81e 100644 --- a/php/inc_fx_inscriptions_gestion.php +++ b/php/inc_fx_inscriptions_gestion.php @@ -1482,7 +1482,7 @@ function fxInscrGestionRenderBibScanBlock($strBibInputId, $strLangue) { echo '
'; echo '
'; // Zone-cible centrale (eclaircie) : aligne le repere visuel sur la region - // reellement lue par l'OCR (captureCenterFrame : ~70% largeur x 40% hauteur). + // reellement lue par l'OCR (captureCenterFrame : ~55% largeur x 30% hauteur). echo ''; // Pastille courte (fallback integre) — evite un long texte info qui masque le viseur. echo '' diff --git a/php/inc_settings.php b/php/inc_settings.php index 6fffd19..49280b4 100644 --- a/php/inc_settings.php +++ b/php/inc_settings.php @@ -7,7 +7,7 @@ * Constantes * * **************/ -define('_VERSION_CODE', '4.72.791'); +define('_VERSION_CODE', '4.72.792'); define('_DATE_CODE', '2026-07-13'); //MSIN-4290 define('QR_SECRET_KEY', 'ms1_qr_2026_cle_secrete_longue_et_fixe');