Продвинутое кодирование текста в djvu

yulya

Требуется перекодировать сканы для распечатки, поэтому хотелось бы выделить текст. Я поигрался с настройками c44, попробовал другие утилиты из DjVuLibre, но не нашёл такой опции. При этом DjVuSolo (она запускается под wine) кодирует хорошо, текст становится равномерного цвета.
Как решить проблему через командную строку?

Lenchans

Т.е. ты хочешь увеличить контрастность и яркость, чтобы все было ближе к чб графике? Тогда дежавю не причем, разве что хочешь оставить себе и еще дежавюшник.
Я бы на твоем месте сделал так: в графическом редакторе сделать все операции с картинками, а потом собрал бы в дежавю и распечатал. Еще можешь попробовать запустить под линуксом SkanKromsator -вроде все дллки с ним идут - он позволяет много чего со сканами делать. Но вот с коммандной строкой не факт, что дружит.
ЗЫ Есть еще надстройка для Соло, увеличивающая количество параметров комадной строки - SoloX_Tasker, но хз, подойдет ли в данном конкретном случае.

yulya

Я не хочу увеличить контрастность. После обработки соло текст (ну и вообще всё, что написано ручкой) становится однотонным и как будто обведённым - изображение качественно меняется, т.к. текст отделяется от фона. Когда кодируешь c44, картинка просто жмётся, будто после жпега, но с лучшим качеством.
Операции в редакторе мне не нужны: я пишу скрипт для многостраничного сканирования, который даёт на выходе джвю-файл, поэтому мышкой делать ничего не хочется. Хочу получить тот же результат, что выходит после DjVuSolo, но из командной строки.

Lenchans

Тогда SoloX_Tasker, только хз, как он с линуксом дружит.

yulya

Всё. Написал. Работает почти так же, как джвюсоло, надо только подкрутить немного, чтоб совсем хорошо работало. Можно в фак занести - авось кому пригодится.
Многостраничное сканирование с параллельным кодированием в DjVu.

multiscan (запускать с 1 параметром - кол-вом сканируемых страниц):
----
#!/bin/sh
I=1
s=""
SCAN="./scan"
while [ $I -le $1 ]
do
echo "Processing page "$I
if [ $I -lt 10 ]
then
$SCAN 00$I
elif [ $I -lt 100 ]
then
$SCAN 0$I
else
$SCAN $I
fi
echo "Press ENTER if OK, any other key for rescan"
read s
if [ -n "$s" ]
then
echo "One more time"
else
I++
fi


scan (параметр - имя выходного файла без расширения):
------
#!/bin/bash
DPI=150
sudo scanimage -p -x210mm -y297mm --mode gray --resolution $DPI --depth 8 --format=pnm > $1.pnm
# мне понадобилось поднять контраст, т. к. у сканера какие-то проблемы с экспозицией
# желательно убрать, если есть возможность, т.к. занимает много времени
mogrify -contrast -contrast -contrast $1.pnm
convert -contrast $1.pnm $1.ppm
rm $1.pnm
ppmtopgm $1.ppm > tmp.pgm
pgmtopbm -threshold tmp.pgm > tmp.pbm
#Делаем маску, чтобы сказать djvumake, где фон, а где нет
#От этой операции зависит качество результата
cjb2 -clean -dpi $DPI tmp.pbm tmp.djvu
# Совмещаем маску и исходный файл
djvumake $1.djvu Sjbz=tmp.djvu PPM=$1.ppm
rm tmp.*
rm $1.ppm
Оставить комментарий
Имя или ник:
Комментарий: