diff --git a/scan b/scan index 3d6fd2c..b539283 100755 --- a/scan +++ b/scan @@ -31,6 +31,8 @@ DESKEW=0 DRIVER_OPTION= VERBOSE=0 SKIP_EMPTY_PAGES=0 +WHITE_THRESHOLD=99.8 +BRIGHTNESS_CONTRAST= SOURCE="" TMP_DIR=$(mktemp -d -p "" scan.XXXXXXXXXX) @@ -86,6 +88,8 @@ while [[ $# > 0 ]]; do --skip-empty-pages) SKIP_EMPTY_PAGES=1 ;; + --white-threshold) shift; WHITE_THRESHOLD=$1 ;; + -o|--output) shift; USEOUTPUT=1; OUTPUT="$1" ;; -l|--outputlist) shift; USEARRAY=1; OUTPUTARR=(); OUTPUTARR+=("$1") ;; @@ -94,6 +98,8 @@ while [[ $# > 0 ]]; do -xo|--driver-options) shift; DRIVER_OPTION=$1;; + --brightness-contrast-sw) shift; BRIGHTNESS_CONTRAST=$1 ;; + *) if [[ $USEARRAY == 1 ]]; then OUTPUTARR+=("$1"); else echo >&2 "Unknown argument: $1"; exit 1; fi ;; esac @@ -145,6 +151,11 @@ if [[ $HELP == 1 ]]; then echo " which language to use for OCR" echo " --skip-empty-pages" echo " remove empty pages from resulting PDF document (e.g. one sided doc in duplex mode)" + echo " --white-threshold" + echo " threshold to identify an empty page is a percentage value between 0 and 100. The default is 99.8" + echo " --brightness-contrast-sw" + echo " Alter brightness and contrast via post-processing - prefer specifying brightness and/or" + echo " contrast via --driver-options if supported by your hardware." echo "" echo "OUTPUT" echo " -o, --output " @@ -267,6 +278,8 @@ export PGWIDTHIN export PGHEIGHTIN export PS2PDF_OPTS export SKIP_EMPTY_PAGES +export WHITE_THRESHOLD +export BRIGHTNESS_CONTRAST if [[ $VERBOSE == 1 ]]; then LOCKFILE=$(mktemp) diff --git a/scan_perpage b/scan_perpage index eb0dc80..d3a2a74 100755 --- a/scan_perpage +++ b/scan_perpage @@ -14,6 +14,7 @@ usage() echo " PGWIDTHIN" echo " PGHEIGHTIN" echo " SKIP_EMPTY_PAGES" + echo " BRIGHTNESS_CONTRAST" echo " PS2PDF_OPTS (optional)" echo " VERBOSE (optional)" echo " LOCKFILE (required if VERBOSE=1)" @@ -67,9 +68,14 @@ fi process_page() { log "" log "-------------------------------------------------------------------------------" - log "Post-processing scanned page ${IMAGE_PATH}, deskew=$UNPAPER, searchable=$SEARCHABLE, skip-empty-pages=$SKIP_EMPTY_PAGES..." + log "Post-processing scanned page ${IMAGE_PATH}, deskew=$UNPAPER, searchable=$SEARCHABLE, skip-empty-pages=$SKIP_EMPTY_PAGES, white-threshold=$WHITE_THRESHOLD, brightness-contrast-sw=$BRIGHTNESS_CONTRAST..." log "-------------------------------------------------------------------------------" + if [[ "$BRIGHTNESS_CONTRAST" != "" ]]; then + log "Adjust brightness and contrast in ImageMagick by $BRIGHTNESS_CONTRAST" + convert "$IMAGE_PATH" -brightness-contrast $BRIGHTNESS_CONTRAST "$IMAGE_PATH" + fi + if [[ $SKIP_EMPTY_PAGES == 1 ]]; then PERCENTAGE_WHITE=$(convert "$IMAGE_PATH" -fuzz 0% -negate -threshold 0 -negate -format "%[fx:100*mean]" info:) || PERCENTAGE_WHITE=0 log "$IMAGE_PATH has $PERCENTAGE_WHITE % white" @@ -78,7 +84,7 @@ process_page() { fi PP_PREFIX= - if [[ $SKIP_EMPTY_PAGES == 1 && $(echo "$PERCENTAGE_WHITE > 99.8" | bc -l) == 1 ]]; then + if [[ $SKIP_EMPTY_PAGES == 1 && $(echo "$PERCENTAGE_WHITE > $WHITE_THRESHOLD" | bc -l) == 1 ]]; then log "Skipping empty page $IMAGE_FILE with white percentage $PERCENTAGE_WHITE" else if [[ $UNPAPER == 1 ]]; then