From b213efb030783689744520419ce4530a02fd7c8b Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Thu, 16 Oct 2025 09:50:03 +0200 Subject: [PATCH] Account for new deskew output error message from recent Tesseract Fixes #1576 --- src/ocrmypdf/_exec/tesseract.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/ocrmypdf/_exec/tesseract.py b/src/ocrmypdf/_exec/tesseract.py index 102bdab8..c27a677c 100644 --- a/src/ocrmypdf/_exec/tesseract.py +++ b/src/ocrmypdf/_exec/tesseract.py @@ -186,6 +186,18 @@ def get_orientation( return orient_conf +def _is_empty_page_error(exc): + if b'Empty page!!' in exc.output: # Tesseract 4.x + return True + + return exc.returncode == 1 and ( + # Tesseract 5.0-5.4 or so + exc.output == b'' + # Tesseract 5.5+ + or exc.output.startswith(b"Error in boxClipToRectangle: box outside rectangle") + ) + + def get_deskew( input_file: Path, languages: list[str], engine_mode: int | None, timeout: float ) -> float: @@ -204,11 +216,9 @@ def get_deskew( except CalledProcessError as e: tesseract_log_output(e.stdout) tesseract_log_output(e.stderr) - if b'Empty page!!' in e.output or ( - e.output == b'' and e.returncode == 1 - ): # Not enough info for a skew angle - Tess 4 and 5 return different errors + if _is_empty_page_error(e): + # Not enough info for a skew angle return 0.0 - raise SubprocessOutputError() from e parsed = _parse_tesseract_output(p.stdout)