Участник:Hinote/Создание pdf для книг с сайта ГПИБ

Материал из Викитеки — свободной библиотеки
Перейти к навигации Перейти к поиску

Создание pdf для книг с сайта ГПИБ[править]

На сайте ГПИБ (shpl.ru) выложено много замечательных изданий, который находятся в общественном достоянии. Например, есть такая подборка.

К сожалению, они выложены постранично, как картинки-сканы страниц, и поэтому не могут быть загружены на коммонс и использованы в Викитеке.

Их нужно преобразовать -- в djvu или в pdf. А затем распознать. Распознавать вы будете сами -- через сервис archive.org или вашей любимой OCR-программой, установленной у вас, а вот как преобразовать: дело, на самом деле, нескольких минут.

Для этого нам понадобятся обычные утилиты unix (можно использовать Linux на Live-CD -- напр. Ubuntu Live-CD или Knoppix), wget, ImageMagick, ghostscript.

  • В браузере, идем на сайт ГПИБ, на любую страницу нужной книги (каждая из них содержит список всех страниц книги, так что на любую), сохраняем html в отдельном каталоге (например, создаем для этого каталог shpl на рабочем столе). Не важно, только ли .html или же .html и картинки -- нам нужен будет только .html.
  • Открываем терминал с командной строкой, идем в созданный каталог с сохраненным .html файлом:
cd ~/Desktop/shpl
  • Запоминаем имя (только имя, без каталога -- ведь мы работаем в том же каталоге) нашего .html файла:
book=имя_файла_куда_мы_сохранили_страницу.html
  • Создаем список страниц книги волшебной командой:
grep -o -E '<div class="page( current)?" id="page-[0-9]*"' "$book"|grep -o '[0-9]*' > ./pages.lst
  • Здесь полезно проверить, что кол-во страниц в созданном списке совпадает с кол-вом страниц в книге на сайте:
cat ./pages.lst|wc -l
  • Скачиваем все страницы следующей не менее волшебной командой:
mkdir ./img; (i=1; for f in `cat pages.lst`; do wget "http://elib.shpl.ru/pages/$f/zooms/8" \
-O `printf './img/%04d-%s.jpg' $i $f`; i=$((i+1)); sleep 1; done) 2>&1 | tee wget.log

Понеслось ... по трубам! В файле wget.log можно потом посмотреть все, что происходило при скачивании...

(Прервать, если что-то пошло не так, кто не знает, как пользоваться использованной утилитой wget, можно при помощи Ctrl+C...)

  • Здесь полезно посмотреть на скачанные образы страниц (.jpg файлы) -- опять же, все ли на месте, нет ли среди них файлов нулевой длины или подозрительно коротких:
ls -l ./img/
  • Если все ок, осталось собрать из них наш .pdf. Это можно было бы сделать одной командой convert из пакета ImageMagick, но он зверски потребляет память и мне лично так и не удалось его заставить работать на книгах с большим кол-вом страниц. Поэтому сделаем в два приема. Сначала -- сконвертируем каждую из страниц в pdf при помощи convert из пакета ImageMagick, а затем из отдельных pdf соберем общий при помощи ghostscript:
cd ./img
for i in *.jpg; do echo $i; convert $i `basename $i .jpg`.pdf; done
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="../`basename "$book" .html`.pdf" ./*.pdf
cd ..
  • Проверяем получившийся pdf... Вуаля!... Осталось его распознать. Но это уже -- отдельная хохлома...




  • Скрипт all-in-one (передаем ему имя сохраненного .html файла как параметр, запускаем из того же каталога) для тех, кто не хочет писать команды руками: