Сидел я последние несколько часов и занимался тем, что вручную набивал то же самое, что написано в pdf-файле (нераспознанном). Плюнул на это, поставил cuneiform и к нему графическую морду — yagf.
Внимание! В yagf есть опция "импортировать pdf". Я сдуру выбрал ее (у меня 27-страничный pdf, не думал я, что он может так раздуться), и yagf начал при помощи pdf2ppm импортировать файл. Похоже, выбрал он довольно "крутое" разрешение, т.к. после 20-й страницы yagf отожрал уже 1.6ГБ оперативки и система начала жалобно отваливаться. Т.к. у меня уже вторую неделю Octave пыхтит-считает, я решил не испытывать произвола судьбы от oom-killer'а и при помощи всяких разных клавиатурных комбинаций и top'а убил-таки эту штуку.
Позже оказалось, что yagf вполне адекватен, если картинки "попроще". Но его использовать неудобно - зачем нам лишняя сущность?
Так был рожден скриптик:
Все отлично заработало. Правда, есть одно "но": cuneiform сохраняет данные в UTF-8, а iconv и enconv отказались конвертировать мне эти файлы в нормальную кодировку. Ничего, из этого я тоже найду выход.
UPD: Ключик -c для iconv спас меня.
Внимание! В 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 спас меня.
no subject
Date: 2012-04-25 03:29 pm (UTC)Тоже в своё время долго без внимательного чтения манов страдал.
А разрешение yagf реально должен очень большое выбирать.
Опыты показали, что даже идеальный текст, сконвертированный в 150dpi cuneiform распознаёт чрезвычайно плохо. После 600dpi уже всё замечательно. Подозреваю, что оно делало 600dpi у вас. Возможно — в цвете ;)
UPD: когда-ж я приучу себя аналогичным образом свои скрипты комментировать и оформлять ;(
no subject
Date: 2012-04-25 04:35 pm (UTC)У меня 150dpi распозналось отлично. Тем более, что pdf'ки были сканированы не очень качественно (подозреваю, что там вообще ~100dpi было).
> UPD: когда-ж я приучу себя аналогичным образом свои скрипты комментировать и оформлять ;(
Я приучился комментировать после того, как приходилось несколько раз ковыряться в тоннах старого кода, чтобы подправить. Без комментариев было довольно сложно разобраться, что там к чему (особенно когда это сишные функции, разбросанные по нескольким файлам)…
no subject
Date: 2012-04-25 05:32 pm (UTC)Ну, значит что-то подправили. Когда оно появилось под Линукс (точнее, морда появилась), я поэкспериментировал с ним и для себя решил: 600dpi — самое оно.
Я приучился комментировать после того, как приходилось несколько раз ковыряться в тоннах старого кода, чтобы подправить.
Мне такие ковыряния на пользу не идут ;(
no subject
Date: 2012-05-02 07:21 am (UTC)no subject
Date: 2012-05-02 07:27 am (UTC)no subject
Date: 2012-05-02 07:41 am (UTC)