1diff --git a/src/ocrmypdf/_exec/ghostscript.py b/src/ocrmypdf/_exec/ghostscript.py 2index 9e21c33c..21f134b3 100644 3--- a/src/ocrmypdf/_exec/ghostscript.py 4+++ b/src/ocrmypdf/_exec/ghostscript.py 5@@ -32,15 +32,7 @@ log = logging.getLogger(__name__) 6 # Most reliable what to get the bitness of Python interpreter, according to Python docs 7 _IS_64BIT = sys.maxsize > 2**32 8 9-_GSWIN = None 10-if os.name == 'nt': 11- if _IS_64BIT: 12- _GSWIN = 'gswin64c' 13- else: 14- _GSWIN = 'gswin32c' 15- 16-GS = _GSWIN if _GSWIN else 'gs' 17-del _GSWIN 18+GS = '@gs@' 19 20 21 def version(): 22diff --git a/src/ocrmypdf/_exec/jbig2enc.py b/src/ocrmypdf/_exec/jbig2enc.py 23index 0f8f7392..db792b10 100644 24--- a/src/ocrmypdf/_exec/jbig2enc.py 25+++ b/src/ocrmypdf/_exec/jbig2enc.py 26@@ -12,7 +12,7 @@ from ocrmypdf.subprocess import get_version, run 27 28 29 def version(): 30- return get_version('jbig2', regex=r'jbig2enc (\d+(\.\d+)*).*') 31+ return get_version('@jbig2@', regex=r'jbig2enc (\d+(\.\d+)*).*') 32 33 34 def available(): 35@@ -25,7 +25,7 @@ def available(): 36 37 def convert_group(*, cwd, infiles, out_prefix): 38 args = [ 39- 'jbig2', 40+ '@jbig2@', 41 '-b', 42 out_prefix, 43 '-s', # symbol mode (lossy) 44@@ -44,7 +44,7 @@ def convert_group_mp(args): 45 46 47 def convert_single(*, cwd, infile, outfile): 48- args = ['jbig2', '-p', infile] 49+ args = ['@jbig2@', '-p', infile] 50 with open(outfile, 'wb') as fstdout: 51 proc = run(args, cwd=cwd, stdout=fstdout, stderr=PIPE) 52 proc.check_returncode() 53diff --git a/src/ocrmypdf/_exec/pngquant.py b/src/ocrmypdf/_exec/pngquant.py 54index 64e91139..ab5b9c49 100644 55--- a/src/ocrmypdf/_exec/pngquant.py 56+++ b/src/ocrmypdf/_exec/pngquant.py 57@@ -17,7 +17,7 @@ from ocrmypdf.subprocess import get_version, run 58 59 60 def version(): 61- return get_version('pngquant', regex=r'(\d+(\.\d+)*).*') 62+ return get_version('@pngquant@', regex=r'(\d+(\.\d+)*).*') 63 64 65 def available(): 66@@ -44,7 +44,7 @@ def input_as_png(input_file: Path): 67 def quantize(input_file: Path, output_file: Path, quality_min: int, quality_max: int): 68 with input_as_png(input_file) as input_stream: 69 args = [ 70- 'pngquant', 71+ '@pngquant@', 72 '--force', 73 '--skip-if-larger', 74 '--quality', 75diff --git a/src/ocrmypdf/_exec/tesseract.py b/src/ocrmypdf/_exec/tesseract.py 76index ad98836a..a12d3002 100644 77--- a/src/ocrmypdf/_exec/tesseract.py 78+++ b/src/ocrmypdf/_exec/tesseract.py 79@@ -111,7 +111,7 @@ class TesseractVersion(Version): 80 81 82 def version() -> str: 83- return get_version('tesseract', regex=r'tesseract\s(.+)') 84+ return get_version('@tesseract@', regex=r'tesseract\s(.+)') 85 86 87 def has_user_words() -> bool: 88@@ -138,7 +138,7 @@ def get_languages() -> set[str]: 89 msg += output 90 return msg 91 92- args_tess = ['tesseract', '--list-langs'] 93+ args_tess = ['@tesseract@', '--list-langs'] 94 try: 95 proc = run( 96 args_tess, 97@@ -160,7 +160,7 @@ def get_languages() -> set[str]: 98 99 100 def tess_base_args(langs: list[str], engine_mode: int | None) -> list[str]: 101- args = ['tesseract'] 102+ args = ['@tesseract@'] 103 if langs: 104 args.extend(['-l', '+'.join(langs)]) 105 if engine_mode is not None: 106diff --git a/src/ocrmypdf/_exec/unpaper.py b/src/ocrmypdf/_exec/unpaper.py 107index d7f24265..d14f85de 100644 108--- a/src/ocrmypdf/_exec/unpaper.py 109+++ b/src/ocrmypdf/_exec/unpaper.py 110@@ -66,7 +66,7 @@ class UnpaperImageTooLargeError(Exception): 111 112 113 def version() -> str: 114- return get_version('unpaper') 115+ return get_version('@unpaper@') 116 117 118 SUPPORTED_MODES = {'1', 'L', 'RGB'} 119@@ -120,7 +120,7 @@ def _setup_unpaper_io(input_file: Path) -> Iterator[tuple[Path, Path, Path]]: 120 def run_unpaper( 121 input_file: Path, output_file: Path, *, dpi: DecFloat, mode_args: list[str] 122 ) -> None: 123- args_unpaper = ['unpaper', '-v', '--dpi', str(round(dpi, 6))] + mode_args 124+ args_unpaper = ['@unpaper@', '-v', '--dpi', str(round(dpi, 6))] + mode_args 125 126 with _setup_unpaper_io(input_file) as (input_png, output_pnm, tmpdir): 127 # To prevent any shenanigans from accepting arbitrary parameters in