diff --git a/PythonProj/ScanOCR/build/build_package.py b/PythonProj/ScanOCR/build/build_package.py index 6e9db456..00e026c5 100644 --- a/PythonProj/ScanOCR/build/build_package.py +++ b/PythonProj/ScanOCR/build/build_package.py @@ -105,6 +105,24 @@ def setup_python(script_dst: Path, tmp_dir: Path) -> None: ) +SEVEN_ZIP_FALLBACK_PATHS = ( + r"C:\Program Files\7-Zip\7z.exe", + r"C:\Program Files (x86)\7-Zip\7z.exe", +) + + +def find_7zip_exe() -> str: + found = shutil.which("7z") + if found: + return found + for candidate in SEVEN_ZIP_FALLBACK_PATHS: + if Path(candidate).exists(): + return candidate + raise RuntimeError( + "7-Zip(7z.exe)が見つかりません。PATHに通すか、標準的な場所にインストールしてください。" + ) + + def setup_tesseract(script_dst: Path, tmp_dir: Path) -> None: tools_dst = script_dst / "tools" / "tesseract" tools_dst.mkdir(parents=True) @@ -112,10 +130,11 @@ def setup_tesseract(script_dst: Path, tmp_dir: Path) -> None: installer_path = tmp_dir / "tesseract-setup.exe" download(TESSERACT_INSTALLER_URL, installer_path) + seven_zip_exe = find_7zip_exe() extract_dir = tmp_dir / "tesseract-extract" extract_dir.mkdir() subprocess.run( - ["7z", "x", str(installer_path), f"-o{extract_dir}", "-y"], + [seven_zip_exe, "x", str(installer_path), f"-o{extract_dir}", "-y"], check=True, ) for item in extract_dir.iterdir():