Follow-up to the conda scope fix: the same admin/winget assumptions broke the OCR backend, which is what actually carries item text reading since tesserocr's MSVC DLL chain commonly fails to load. - install.bat installed Tesseract via `winget install` with no --scope, i.e. machine-wide into "C:\Program Files", which requires admin. On a clean non-admin box this failed and left NO working OCR backend at all (tesserocr already fails), so OCR_READY=0 and item reading was dead. Now: winget machine scope -> winget --scope user -> direct download of the official NSIS installer with a per-user /D= target. Also stops trusting winget's exit code (non-zero when already installed) and re-resolves tesseract.exe after each attempt. - The downloaded installer is size-checked (~50 MB; <20 MB = failed download) before being executed, matching the Miniforge handling. - Added a :find_tesseract subroutine that resolves tesseract.exe from Program Files, Program Files (x86), %LOCALAPPDATA%\Programs, %ProgramData% and PATH. Verification now uses the resolved path instead of the hardcoded "C:\Program Files" one. - ocr.py: added Program Files (x86) and the per-user %LOCALAPPDATA%\Programs\Tesseract-OCR location to the runtime search order, since per-user installs are not on PATH. - run_botty.bat: only export PYTESSERACT_TESSERACT_CMD when the file exists, falling back to the per-user path, so a stale machine-wide value cannot shadow a valid per-user install. Verified on this machine: all install.bat dependency imports OK (cv2/mss/numpy/transitions/rapidfuzz/pydantic/pytesseract/yaml/discord), pytesseract resolves tesseract 5.5.0, osdetect reports the win11 profile, config loads, 140 tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
34 lines
1.3 KiB
Batchfile
34 lines
1.3 KiB
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
set "BOTTY_DIR=%~dp0"
|
|
cd /d "%BOTTY_DIR%"
|
|
|
|
call "%BOTTY_DIR%find_python.bat"
|
|
|
|
:: Derive the conda env root from python.exe:
|
|
:: envs\botty\python.exe -> envs\botty
|
|
for %%F in ("%PYTHON%") do set "_ENV=%%~dpF"
|
|
set "_ENV=%_ENV:~0,-1%"
|
|
|
|
:: Match an activated conda environment closely enough for native DLL loading.
|
|
set "PATH=%_ENV%;%_ENV%\Scripts;%_ENV%\Library\bin;%_ENV%\Library\mingw-w64\bin;%_ENV%\Library\usr\bin;%_ENV%\DLLs;%PATH%"
|
|
set "CONDA_PREFIX=%_ENV%"
|
|
set "PYTHONUTF8=1"
|
|
set "PYTHONIOENCODING=utf-8"
|
|
set "SSL_CERT_DIR="
|
|
:: Use winget tesseract 5.5.0 (conda tesseract crashes with access violation).
|
|
:: Only export the path if it actually exists -- on machines where Tesseract was
|
|
:: installed per-user (no admin), it lives under %LOCALAPPDATA%\Programs instead,
|
|
:: and src\d2r_image\ocr.py resolves that itself.
|
|
set "TESSDATA_PREFIX=%_ENV%\Library\share"
|
|
if exist "C:\Program Files\Tesseract-OCR\tesseract.exe" (
|
|
set "PYTESSERACT_TESSERACT_CMD=C:\Program Files\Tesseract-OCR\tesseract.exe"
|
|
) else if exist "%LOCALAPPDATA%\Programs\Tesseract-OCR\tesseract.exe" (
|
|
set "PYTESSERACT_TESSERACT_CMD=%LOCALAPPDATA%\Programs\Tesseract-OCR\tesseract.exe"
|
|
)
|
|
|
|
echo Launching Botty ...
|
|
"%PYTHON%" "%BOTTY_DIR%src\main.py"
|
|
pause
|