Внимание! В yagf есть опция "импортировать pdf". Я сдуру выбрал ее (у меня 27-страничный pdf, не думал я, что он может так раздуться), и yagf начал при помощи pdf2ppm импортировать файл. Похоже, выбрал он довольно "крутое" разрешение, т.к. после 20-й страницы yagf отожрал уже 1.6ГБ оперативки и система начала жалобно отваливаться. Т.к. у меня уже вторую неделю Octave пыхтит-считает, я решил не испытывать произвола судьбы от oom-killer'а и при помощи всяких разных клавиатурных комбинаций и top'а убил-таки эту штуку.
Позже оказалось, что yagf вполне адекватен, если картинки "попроще". Но его использовать неудобно - зачем нам лишняя сущность?
Так был рожден скриптик:
#!/bin/sh
# this script has been written by Eddy
#
# recognize_pdf - распознает pdf-файлы при помощи cuneiform
# зависит от cuneiform и pdftoppm
#
# Создан 25-го Апрель 2012 года в 18:12
#
if [ $# == 0 ]; then
echo -e "\nUsage: $(basename $0) filename.pdf,\n\tneeds some space for temporary ppm-files,\n\tsaves results to file filename.txt\n"
exit -1
fi
NAME=$(bsnm $1)
# 1. Преобразуем pdf в ppm'ы
echo -e "\nConvert pdf to a lot of ppms"
pdftoppm $1 $NAME
# 2. Распознаем каждый рисунок
echo -e "\nRecognize every file\n"
for PPM in $(ls -1 ${NAME}-*ppm)
do
echo -n "$PPM .. "
cuneiform -l ruseng -f smarttext ${PPM} -o ${PPM}.txt
echo "done!"
done
# 3. Собираем все вместе
rm -f ${NAME}.txt
cat $(ls -1 ${NAME}-*txt) > ${NAME}.txt
# 4. Подчищаем мусор
echo -n "Ready, cleaning ..."
rm -f ${NAME}-*.txt ${NAME}-*.ppm
echo "Done!"
Все отлично заработало. Правда, есть одно "но": cuneiform сохраняет данные в UTF-8, а iconv и enconv отказались конвертировать мне эти файлы в нормальную кодировку. Ничего, из этого я тоже найду выход.
UPD: Ключик -c для iconv спас меня.
Journal information