branch: externals/scanner
commit bbfbdae070a8981ee3c9422ecbd3339f6f919993
Author: Raffael Stocker <[email protected]>
Commit: Raffael Stocker <[email protected]>
change to tmp directory instead of files, force pnm
Unpaper requires input and output files to be specified with a number
format (e.g. input%d.pnm) so separation of pages in double-page scans will
work. Therefore, we change from individual temporary files to a temporary
directory to have more control over the file names. Also, unpaper requires
the input files to be in the PNM format, so we force this.
* scanner.el (scanner-scan-document): force PNM, use tmp directories
---
scanner.el | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/scanner.el b/scanner.el
index d1cdb5cec9..89729dc65b 100644
--- a/scanner.el
+++ b/scanner.el
@@ -654,19 +654,31 @@ argument, e.g. ‘\\[universal-argument] 3
If ‘scanner-device-name’ is nil or this device is unavailable,
attempt auto-detection. If more than one scanning device is
-available, ask for a selection interactively."
+available, ask for a selection interactively.
+
+If ‘scanner-use-unpaper’ is non-nil, silenty force the image
+format to \"pnm\" and post-process the scans using unpaper before
+performing OCR."
(interactive "P\nFDocument file name: ")
(cl-assert scanner-scanimage-program)
(cl-assert scanner-tesseract-program)
(let ((doc-file (file-name-sans-extension filename))
(num-pages (prefix-numeric-value npages))
- (fmt (plist-get scanner-image-format :doc))
+ (fmt (if scanner-use-unpaper
+ "pnm"
+ (plist-get scanner-image-format :doc)))
(switches (scanner--ensure-init))
(file-list '())
- (fl-file nil))
+ (fl-file nil)
+ (tmp-dir (make-temp-file "scanner" t))
+ (page-num 0))
(cl-labels ((scanimage
()
- (let* ((img-file (make-temp-file "scanner" nil
(concat "." fmt)))
+ (let* ((img-file (concat
(file-name-as-directory tmp-dir)
+
"input"
+
(number-to-string (cl-incf page-num))
+
"."
+
fmt))
(scanimage-args
(scanner--scanimage-args :doc
switches
fmt))
@@ -699,7 +711,10 @@ available, ask for a selection interactively."
()
(unless scanner-reverse-pages
(setq file-list (nreverse file-list)))
- (setq fl-file (make-temp-file "scanlist" nil
".txt"
+ (setq fl-file (make-temp-file (concat
(file-name-as-directory
+
tmp-dir)
+
"scanlist")
+
nil ".txt"
(mapconcat #'identity
file-list
"\n")))
@@ -721,9 +736,7 @@ available, ask for a selection interactively."
(cleanup)))
(cleanup
()
- (and file-list (dolist (file file-list)
- (delete-file
file)))
- (and fl-file (delete-file fl-file))))
+ (and tmp-dir (delete-directory tmp-dir t))))
(when (scanner--confirm-filenames doc-file scanner-tesseract-outputs)
(scanner--log "Scanning document to file(s) \"%s.*\"" doc-file)
(scanimage)))))