sane-scan-pdf/scan_perpage
2015-09-26 13:34:52 -04:00

98 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Usage: scan_perpage <imagefile>
# where imagefile is the data just scanned
# (specify this script to scanadf via -S)
usage()
{
echo "Usage: $0 <imagefile>"
echo "Set the following environment variables:"
echo " DESKEW"
echo " SEARCHABLE"
echo " RESOLUTION"
echo " PGWIDTHIN"
echo " PGHEIGHTIN"
echo " PS2PDF_OPTS (optional)"
echo " VERBOSE (optional)"
echo " LOCKFILE (required if VERBOSE=1)"
}
log()
{
if [ $VERBOSE = 1 ]; then
echo "scan_perpage: $1"
fi
}
logstdout()
{
if [ $VERBOSE = 1 ]; then
cat
else
cat > /dev/null
fi
}
if [ $# -lt 1 ]; then
usage
exit 1
fi
if [ "$DESKEW" == "" -o "$SEARCHABLE" == "" -o "$RESOLUTION" == "" -o "$RESOLUTION" == "" -o "$PGWIDTHIN" == "" -o "$PGHEIGHTIN" == "" ]; then
usage
exit 1
fi
IMAGE_FILE=$1
process_page() {
log ""
log "-------------------------------------------------------------------------------"
log "Post-processing scanned page ${IMAGE_FILE}, deskew=$DESKEW, searchable=$SEARCHABLE..."
PP_PREFIX=
if [ $DESKEW -eq 1 ]; then
log "Applying unpaper post-processing to image data..."
PP_PREFIX="unpaper-"
if [ $VERBOSE = 1 ]; then
UNPAPERVERBOSE="-v"
fi
#unpaper $UNPAPERVERBOSE --no-mask-scan --overwrite --dpi $RESOLUTION --no-blackfilter $IMAGE_FILE $PP_PREFIX$IMAGE_FILE | logstdout
unpaper $UNPAPERVERBOSE --overwrite --dpi $RESOLUTION $IMAGE_FILE $PP_PREFIX$IMAGE_FILE | logstdout
fi
log ""
log "-------------------------------------------------------------------------------"
log "Converting image data to pdf..."
if [ $SEARCHABLE -eq 1 ]; then
log "Converting image data to searchable pdf..."
tesseract $PP_PREFIX$IMAGE_FILE ${IMAGE_FILE%.*} -l eng pdf | logstdout
else
log "Converting image data to pdf..."
PNMVERBOSE=
if [ $VERBOSE = 1 ]; then
PNMVERBOSE="-verbose"
fi
pnmtops $PNMVERBOSE -imagewidth $PGWIDTHIN -imageheight $PGHEIGHTIN $PP_PREFIX$IMAGE_FILE | ps2pdf $PS2PDF_OPTS - > ${IMAGE_FILE%.*}.pdf | logstdout
fi
status=$?
rm $IMAGE_FILE
if [ -f $PP_PREFIX$IMAGE_FILE ]; then
rm $PP_PREFIX$IMAGE_FILE
fi
log ""
log "Scan processing done, status = $status"
}
if [ $VERBOSE = 1 ]; then
(
flock 200
process_page
) 200>$LOCKFILE
else
process_page
fi;
exit $status