[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/scanner fdfdb62 33/56: add tesseract outputs selection
From: |
Stefan Monnier |
Subject: |
[elpa] externals/scanner fdfdb62 33/56: add tesseract outputs selection command |
Date: |
Fri, 10 Apr 2020 13:56:04 -0400 (EDT) |
branch: externals/scanner
commit fdfdb621833d5ef891c9b4e4081996d571324e0c
Author: Raffael Stocker <address@hidden>
Commit: Raffael Stocker <address@hidden>
add tesseract outputs selection command
---
scanner-test.el | 10 ++++++++++
scanner.el | 38 +++++++++++++++++++++++++++++++++++---
2 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/scanner-test.el b/scanner-test.el
index 2b478a0..28093d5 100644
--- a/scanner-test.el
+++ b/scanner-test.el
@@ -213,6 +213,16 @@
(ignore-errors
(should (equal '("eng") (scanner-select-languages 42))))))
+(ert-deftest scanner-test-select-outputs ()
+ "Test the output selection command."
+ (let ((scanner-tesseract-outputs '("pdf")))
+ (should (equal '("txt") (scanner-select-outputs '("txt"))))
+ (should (equal '("pdf" "txt") (scanner-select-outputs '("pdf" "txt"))))
+ (should-error (scanner-select-outputs 42)
+ :type 'wrong-type-argument)
+ (ignore-errors
+ (should (equal '("pdf") (scanner-select-outputs 42))))))
+
(provide 'scanner-test)
diff --git a/scanner.el b/scanner.el
index c8e4eec..590e2d0 100644
--- a/scanner.el
+++ b/scanner.el
@@ -137,13 +137,32 @@ The value must be one of the keys in the paper sizes
list."
"List of languages passed to tesseract(1) for OCR."
:type '(repeat :validate scanner--validate-languages string))
+(defcustom scanner-tesseract-configdir
+ "/usr/share/tessdata/configs/"
+ "Config file directory for tesseract."
+ :type '(string))
+
+(defun scanner--validate-outputs (widget)
+ "Validate the output selection in customization WIDGET."
+ (let ((val (widget-value widget))
+ (configs (directory-files scanner-tesseract-configdir nil "[^.]")))
+ (if (cl-subsetp val configs :test #'string=)
+ nil
+ (widget-put widget
+ :error
+ (format "Unknown output(s): %s; available are: %s"
+ (mapconcat #'identity val ", ")
+ (mapconcat #'identity configs ", ")))
+ widget)))
+
+
(defcustom scanner-tesseract-outputs
'("pdf" "txt")
"List of output formats to produce.
The output formats correspond to the names of config files that
-come with tesseract(1).
-The config files may reside in ‘/usr/share/tessdata/configs’."
- :type '(repeat string))
+come with tesseract(1). The config files are assumed to reside
+in ‘scanner-tesseract-configdir’."
+ :type '(repeat :validate scanner--validate-outputs string))
(defcustom scanner-tesseract-switches
'()
@@ -182,6 +201,10 @@ If nil, attempt auto-detection."
'(menu-item "Select languages" scanner-select-languages
:key-sequence nil
:help "Select languages for OCR."))
+ (define-key map [outputs]
+ '(menu-item "Select document outputs" scanner-select-outputs
+ :key-sequence nil
+ :help "Select document output formats."))
(define-key map [papersize]
'(menu-item "Select paper size" scanner-select-papersize
:key-sequence nil
@@ -380,6 +403,15 @@ availability of required options."
(signal 'wrong-type-argument `(consp ,languages)))
(setq scanner-tesseract-languages languages))
+(defun scanner-select-outputs (outputs)
+ "Select OUTPUTS for tesseract."
+ (interactive
+ (let ((configs (directory-files scanner-tesseract-configdir nil "[^.]")))
+ (list (completing-read-multiple "Outputs: " configs nil t))))
+ (unless (consp outputs)
+ (signal 'wrong-type-argument `(consp ,outputs)))
+ (setq scanner-tesseract-outputs outputs))
+
(defun scanner-set-image-resolution (resolution)
"Set the RESOLUTION for scanning images."
(interactive "NImage scan resolution: ")
- [elpa] externals/scanner 6594fcb 17/56: put image scan sentinel back into scanner-scan-image, (continued)
- [elpa] externals/scanner 6594fcb 17/56: put image scan sentinel back into scanner-scan-image, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner cce46fd 01/56: initial commit, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 64f5514 37/56: update commentary and Readme.org, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner eab3aea 40/56: cleanup scanner--ensure-init, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 1229f38 46/56: add ‘check’ to phony targets, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 72ecf43 56/56: minor clean-ups, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner c439a01 07/56: add scanner--ensure-init, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 9779064 13/56: remove an old FIXME, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 0b0fecf 19/56: make a basic Readme from the commentary, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 00ab593 23/56: rephrase commentary in active voice, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner fdfdb62 33/56: add tesseract outputs selection command,
Stefan Monnier <=
- [elpa] externals/scanner d011e65 36/56: implement multi-image scan, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner e17e2fa 41/56: add section headings, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner 6537d71 47/56: add image size customization and update tests, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner bfaae5a 20/56: ignore PDF and text files, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner b058e2f 26/56: autoload the menu, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner d634903 44/56: improve docstring to scanner--determine-image-format, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner a8cdff3 48/56: clean up device switches and docstrings, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner d6af0ae 43/56: clean up tests a bit, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner eee1a77 54/56: remove useless type checks, Stefan Monnier, 2020/04/10
- [elpa] externals/scanner c815ae0 42/56: make Makefile a bit more general, Stefan Monnier, 2020/04/10