branch: externals/scanner commit a09407e101996a0c92e7bb4feabacc8605d350aa Author: Raffael Stocker <r.stoc...@mnet-mail.de> Commit: Raffael Stocker <r.stoc...@mnet-mail.de>
query tesseract version and use new switches conditionally * scanner.el: (scanner--tesseract-version): new function (scanner--tesseract-args): make --dpi switch depend on tesseract version * scanner-test.el (scanner-test-tesseract-args): add tests for tesseract-version dependency --- scanner-test.el | 8 ++++++-- scanner.el | 11 ++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/scanner-test.el b/scanner-test.el index 8500af4..a88d67c 100644 --- a/scanner-test.el +++ b/scanner-test.el @@ -144,8 +144,12 @@ (-compare-fn #'string=)) (should (-is-infix-p '("-l" "eng+deu") (scanner--tesseract-args "infile" "outfile"))) - (should (-is-infix-p '("--dpi" "300") (scanner--tesseract-args "infile" - "outfile"))) + (let ((scanner--tesseract-v4 "0")) + (should (-is-infix-p '("--dpi" "300") (scanner--tesseract-args "infile" + "outfile")))) + (let ((scanner--tesseract-v4 "1000")) + (should-not (-is-infix-p '("--dpi" "300") (scanner--tesseract-args "infile" + "outfile")))) (should (-contains-p (scanner--tesseract-args "infile" "outfile") "--opt1")) (should (-contains-p (scanner--tesseract-args "infile" "outfile") "--opt2")) (should (-contains-p (scanner--tesseract-args "infile" "outfile") "infile")) diff --git a/scanner.el b/scanner.el index a36f320..b4cad60 100644 --- a/scanner.el +++ b/scanner.el @@ -338,6 +338,12 @@ simply dropped." switches) scanner-scanimage-switches)))) +(defconst scanner--tesseract-v4 "4") + +(defun scanner--tesseract-version () + "Determine the version of tesseract." + (cadr (split-string (car (process-lines scanner-tesseract-program "--version"))))) + (defun scanner--tesseract-args (input output-base) "Construct the argument list for ‘tesseract(1)’. INPUT is the input file name, OUTPUT-BASE is the basename for the @@ -346,7 +352,10 @@ extensions depending on the selected output options, see ‘scanner-tesseract-outputs’." (-flatten (list input output-base "-l" (mapconcat #'identity scanner-tesseract-languages "+") - "--dpi" (number-to-string (plist-get scanner-resolution :doc)) + (unless (version< (scanner--tesseract-version) + scanner--tesseract-v4) + (list "--dpi" (number-to-string + (plist-get scanner-resolution :doc)))) scanner-tesseract-switches "--tessdata-dir" scanner-tessdata-dir