Автовыравнивание криво отсканированных и многостраничных PDF в Linux.
Пригодится для фрилансеров на обработке сканов, студентам, инженерам, юристам и т.п. - всем, кто массово работает с документами в формате PDF.
Всплывающее окно выбора между двумя способами основано на скрипте (все скрипты у меня в ~./local/bin). Скрипт correct_screw_PDF_2_methods.sh такого содержания:
#!/bin/bash
IFS=$'\#'
OPTION1=$(zenity --list --radiolist --width 700 --height 300\
--title="Исправляем поворот страниц PDF" \
--text="Выберите способ" \
--column="Отметка выбора" --column="способ" \
TRUE "Python" FALSE "Unpaper")
if [ "$OPTION1" = "Python" ] ; then OPTION=correct_skew_pdf.sh ;
else OPTION=rovny_pdf2.sh ; fi
myArray=( "$@" )
for i in "$@"; do
"$OPTION" "$i" ; done
exit
fi)
Автовыравнивание на базе утилиты Unpaper основано на скрипте rovny_pdf2.sh такого содержания:
#!/bin/bash
IFS=$'\#'
for a in "$@" ; do
cp "$a" /tmp/"$a"
cd /tmp
pdftoppm -jpeg "$a" 1 | zenity --progress --width=400 --height=100 --title="Выравниваю PDF" --text "работаю." --auto-close --pulsate;
done
convert 1-*.jpg %02d.pnm
rm 1-*.jpg
for i in *.pnm ; do unpaper -v --deskew-scan-deviation 3.0 -dd 1.0 --dpi 600 "$i" "$i".pnm; mv -v "$i".pnm "$i"
done
img2pdf -o $OLDPWD/rovny.pdf -S A4 --auto-orient *.pnm
mv $OLDPWD/rovny.pdf "$a"
rm /tmp/*.pnm
Для работы этого скрипта надо установить утилиту pdftoppm и zenity, которые есть в репозитории xUbuntu 18.04. Утилита Imagemagick (команда convert) в xUbuntu 18.04 предустановлена.
Чтобы сделать автоповорот на Python (OpenCV) надо два скрипта.
Сводный correct_skew_pdf.sh имеет содержание:
#!/bin/bash
IFS=$'\#'
for f in $@; do pdftoppm -png "$f" /tmp/1 ;
done
for i in /tmp/1*.png ; do python /home/user/.local/bin/correct_skew.py -i "$i" ; mv rotated.png "$i"
done
convert /tmp/1*.png "$f"
rm /tmp/1*.png
Скрипт correct_skew.py в описании не поместился, его можно скачать или посмотреть по ссылке https://cloud.mail.ru/public/Hqrs/57K... или посмотреть на форуме xubuntu ru net, в теме от el guahiro.