Вернуться к разделу "Материалы по сканированию и оцифровке бумажных книг".
Это мои рекомендации (botolph гораздо подробнее написал, а я постараюсь концепции разъяснить).
Сразу же оговорюсь: я почти никогда не работаю в системе MS Windows, за исключением случаев крайней необходимости. (Мой девиз: GNU/Linux is the answer; what was your question?) Поэтому мой выбор программного обеспечения будет, возможно, далёк от вашего. Но, впрочем, почти все свободные программы из-под GNU (djvulibre, libtiff, pbmtools, ...) написаны так, что они прекрасно компилируются и работают в MS Windows.
Моя цель: получить отсканированный файл научной книги, с формулами, рисунками и так далее, который подходит как для просмотра на экране, так и для печати. В громадном большинстве случаев меня вполне удовлетворят чёрно-белые изображения страниц в разрешении 300 точек (300 dpi). О переводе изображений в электронный текстовый формат типа MS Word, TeX, ..., основанный на распознавании текста (OCR), речь обычно не идёт, т.к. книги содержат много формул, которые нельзя надёжно распознавать без очень долгого ручного труда. Тем более что современные форматы (PDF версии 1.6, т.е. начиная с Акробата 6, и Djvu 3.х) позволяют хранить частично распознанный текст вместе с очень сильно сжатым изображением и при этом предоставляют поиск по распознанному тексту. Графические форматы предыдущих поколений (gif, tiff, pdf версии до 1.5) не позволяли сжимать изображение до приемлемого размера, требуя примерно по 100 КБ на страницу, в то время как формат DjVu требует обычно от 5 до 15 КБ на страницу. Такое радикальное сокращение размеров напоминает революцию в музыкальной индустрии, произошедшую с разработкой формата mp3. Теперь можно позволить себе хранить на локальном диске компьютера буквально тысячи отсканированных книг.
На мой взгляд, формат DjVu вполне достаточен для хранения книг. Однако DjVu иногда искажает форму букв, стараясь получше сжать изображение. Поэтому книги, распечатанные на бумагу из дежавю-файлов, выглядят хуже (буквы слегка неровные, например). Меня лично это не раздражает, лишь бы можно было прочесть. Но другие люди придерживаются мнения, что надо хранить неискажённое изображение в формате PDF (последние версии этого формата дают хорошее сжатие, приближаясь к эффективности формата дежавю). Так что вам решать.
Для справки: в моей домашней библиотеке сейчас около 3500 научных книг (830 тыс. страниц) общим объёмом в 9.2 ГБ, что в среднем даёт около 11 КБ на страницу. Подавляющее большинство этих файлов хранится в формате дежавю. Обычно я храню книгу в не-дежавю формате (pdf, ps, html, ...) только если этот другой формат даёт выигрыш в размере файла, или если качество дежавю-файла гораздо хуже, или если книга супер-ценная и хочется застраховаться.
Потому что сосканированные изображения страниц содержат гораздо больше информации, чем электронный текст. Так что всегда следует предпочитать графическим текстовые форматы (txt, html, TeX, и Postscript/PDF сделанные из отформатированного текста). Но здесь речь идёт именно о сосканированных книгах.
Если сканировать в низком разрешении, то качество изображения будет плохим, а если в высоком разрешении, то размер файла будет большим. Однако для таких форматов сжатия, как JBIG2 (используется в Djvu и PDF1.6), важно, чтобы текст был "чистым", т.е. чтобы буквы были чёткие и отделены друг от друга, и чтобы не было "шума" из чёрных точек или полос. Особенно это важно для формата DjVu, который пытается оптимизировать размер файла распознаванием похожих букв. Если бумага грязная, жёлтая или просвечивает на обратную страницу, а печать блеклая, то размер сосканированного файла будет существенно больше, чем для текста, отпечатанного ярко-чёрным шрифтом на чистой белой бумаге.
Итак, процесс оцифровки книг разбивается на этапы:
1) Постраничное сканирование физической книги, промежуточный результат - обычно набор tiff-файлов с изображениями страниц.
2) Обработка изображений страниц (подчистка, разрезание разворотов на отдельные страницы, поворот, преобразование цвета).
3) Подготовка конечного продукта - компактных файлов в формате PDF и/или Djvu. Это включает возможность OCR.
4) Лечение проблем с конечными файлами (неверная ориентация страниц, пропущенные или переставленные страницы, склеивание кусков книги, слишком большой размер файла из-за неоптимального сжатия). Это весьма актуально в том случае, если у вас нет исходных сканов, и вы уже не можете повторить этапы 1 и 2.
Для работы вам понадобятся: сканер, программа для сканирования, программы для работы с изображениями страниц, и программы для перевода сосканированных изображений в нужный формат.
Замечу, что даже без подчистки, разрезания и т.д. часто можно получить вполне приемлемое качество и размер конечного файла.
Я пользуюсь сканером Canon LiDE 50, потому что для него есть поддержка в программе VueScan под Linux. Сканер дешёвый, лёгкий и компактный, но не быстрый (около минуты на лист), так что я кладу книгу на сканер, сверху придавливаю парой тяжёлых томов, и могу заниматься другими делами, пока сканируется лист. После гудка я переворачиваю лист и нажимаю кнопку прямо на сканере - это удобнее, чем нажимать на компьютере, где мне пришлось бы каждый раз переходить в окно программы сканирования и значит прерывать основную работу. (Сейчас, когда я это пишу, сканируется Боголюбов и Ширков.)
Сканировать можно либо по одной странице, либо разворотами. Сканировать разворотами вдвое быстрее, но жизненно важно, чтобы книга хорошо (почти полностью) раскрывалась и плотно по всей ширине прилегала к сканеру. Иначе получатся чёрные полосы, закрывающие часть текста, или текст будет сильно размыт. Иногда книга плохо раскрывается в начале или в конце, а в середине хорошо. Это надо контролировать, вы сэкономите кучу труда потом! Когда книга слишком большого формата и не влезает в сканер, приходится сканировать по одной странице. Это обычно приводит к существенно меньшим проблемам с чёрными полосами, но, естественно, занимает почти вдвое больше времени.
Перед сканированием проверьте с помощью Preview, что выбранная вами рамка прямоугольного региона сканирования надёжно покрывает текст как в начале книги, так и в середине и в конце. А то при раскрытии книги в разных местах текст может съезжать вбок. Лучше оставить поля, чем потом отлавливать обрезанные края листов. Я предпочитаю настроить всё с запасом, чтобы потом не надо было контролировать каждую страницу.
Я рекомендую сканирование производить в разрешении 300 dpi, за исключением книг с мелким шрифтом и плохой печатью, когда такое разрешение приводит к плохо читаемому тексту. Придётся попробовать пару страниц отсканировать, перевести для верности в DjVu и посмотреть результат. Сканирование в greyscale я не рекомендую - обычно это приводит только к потере времени (однако см. рассказ botolph).
Промежуточные файлы получаются в формате TIFF с хорошей компрессией (метод CCITT), этот формат автоматически выбран моей программой сканирования (Vuescan). Пакетное сканирование под Windows можно делать из FineReader и ACDSee.
Программы DjvuSolo / DocumentEditor позволяют сканировать прямо с сохранением в дежавю, но это очень неоптимально, т.к. дежавю-файл трудно редактировать, чистить, поворачивать и т.д. Лучше всего сканировать с помощью чисто графической программы, которая позволяет записывать результат в файлы постранично.
Настройте такой режим сканирования, когда каждая страница после сканирования автоматически записывается в файл под названием page0001.tif, page0002.tif, ...
Правда, имейте в виду, что иногда некоторые файлы формата TIFF не читаются некоторыми программами из-за сбоев в формате или ошибок в программах. Поэтому проверяйте, что вы в самом деле можете просматривать только что сосканированные файлы страниц, и будьте готовы к необходимости перегнать все эти файлы в другой формат (разумеется, автоматически, а не каждый файл вручную). Под GNU/Linux все такие операции тривиально автоматизируются на основе shell scripts. Под MS Windows можно пользоваться PaintShopPro, ACDSee, ... Я иногда пользуюсь коммерческой программой Image Alchemy, которая умеет читать вообще все виды TIFF, даже такие, на которых виснет PaintShopPro. Эта программа есть для Linux и для MS DOS.
Сырые сосканированные файлы TIFF лучше всего архивировать куда-нибудь, а не стирать сразу после получения конечного результата. Мало ли что потом случится, а сканирование всё-таки самый трудоёмкий этап.
После сканирования проверьте, что не пропустили страниц. Я обычно просматриваю номера страниц в файлах page0010.tif, page0110.tif, page0210.tif - они должны образовывать арифметическую прогрессию. Также я вычисляю количество сосканированных страниц и сравниваю с правильным. Пропуск страниц залечивается так: я сканирую пропущенную страницу и называю её например page0110a.tif. Тогда при сортировке она будет следовать за page0110.tif.
Обработка нужна для исправления дефектов скана. Например, если сканировать разворотами, то почти всегда остаются чёрные полосы между страницами, и страницы почти всегда чуть-чуть перекошены.
Для исправления этих дефектов есть несколько способов: самый клёвый - программа ScanKromsator от bolega. К сожалению, эта программа не является свободно распространяемой и нет исходников, поэтому работает только под текущими версиями MS Windows. Я пока что не смог воспользоваться этой программой, потому что эмулятор MS Windows, который у меня есть, в чём-то с ней пока несовместим.
Результат этого этапа - опять-таки постраничные файлы TIFF, но уже исправленные (повёрнутые, почищенные и т.д.) Рекомендую их также архивировать на CD-R.
Создание конечного файла
Итак, у вас есть постраничные изображения и вы хотите сделать конечный продукт.
Для создания DjVu оптимально иметь чёрно-белые (не greyscale!) изображения страниц в разрешении 300 dpi. (Если возьмёте 600 dpi, то скорее всего будет существенно больше размер дежавю-файла.)
Способ 1: Сделать один ZIP файл (не RAR!!) со всеми тифами и загрузить этот файл в дежавюку. См. readme.djvu.txt - там все детали по поводу дежавюки.
Преимущества: Работает быстро и качественно, для англоязычных текстов даёт сразу OCR.
Недостатки: Иногда дежавюка отказывается читать tiff-файлы без объяснений причин ("a problem was encountered", но не говорит, что за проблема). Из моего опыта я могу заключить, что причины скорее всего такие:
1) Cбои в tiff-формате, или такие варианты этого формата, которые не поддерживаются сервером any2djvu.
2) Даётся слишком много страниц сразу. Кроме того, на русском тексте OCR даёт чушь типа PAOCPAOPIIC.
Лечение недостатков: пакетно перевести все тифы в .gif, запаковать в ZIP файл и загрузить на any2djvu снова. Если не помогает, то разбить на несколько ZIP файлов по 200 или 300 страниц в каждом и потом склеить полученные дежавю файлы. (Дежавюка работает оптимально, если число страниц в одном куске делится на 20).
Для OCR теперь есть программа DjvuOCR от gencho, она берёт файлы FineReader'а и присоединяет их к готовым файлам djvu. Вот это класс!
Способ 2: Воспользоваться DjvuSolo 3.1.
Преимущества: Не надо никуда загружать много десятков мегабайт, всё работает дома.
Недостатки: Нет OCR, иногда не читает файлы тиф (то же самое, что и дежавюка). При сбоях в файлах тиф программа иногда виснет. Лечение: переводить из тиф в bmp.
Способ 3: Воспользоваться Document Editor.
Преимущества: OCR для англоязычных текстов, мощные возможности редактирования дежавю-файлов.
Недостатки: Дежавю-файлы получаются версии 4.5, которую не читают некоторые старые плагины. Качество получается иногда хуже, чем от сервера any2djvu.
Ну, вообще-то я не спец по пдф-файлам, но скажу, что знаю:
Способ 1: Взять Acrobat 6 (не Acrobat Reader, а полную программу, она дорого стоит!) и сделать PDF с классным сжатием и OCR.
Преимущества: Размер PDF приближается к размеру дежавю-файла.
Недостатки: Такой PDF иногда плохо читается более старыми программами, работает медленнее.
Способ 2: Использовать tiff2ps, ps2pdf, tiff2pdf.
Недостатки: Пдф получается очень большого размера по сравнению с дежавю.
Вы получили от кого-то конечный файл (djvu, pdf), а он вас не устраивает. Исходных сканов нет. Что делать?
Почти все проблемы решаются тем, что из конечных файлов извлекаются изображения отдельных страниц, и потом проходят по этапам 1 - 3. Иногда есть и более короткие пути решения.
Как извлечь изображения страниц из файла djvu?
Ответ: с помощью утилиты ddjvu, или djvudecode.exe, можно извлечь из djvu файла изображения всех страниц, скажем в формате PBM. При этом можно указать требуемое разрешение и размер картинки в пикселях.
Как извлечь изображения страниц из файла pdf?
Ответ: Это делает Acrobat, ещё есть программа pdfExtractTiff для MS Windows. Под GNU/Linux эта операция не всегда осуществима! (из-за козней формата пдф последних версий и из-за отсутствия Acrobat). Можно с помощью AcrobatReader распечатать в Postscript и далее действовать с помощью ghostscript, но это работает не всегда. Или можно попробовать сразу через ghostscript, но он не понимает некоторых последних версий формата пдф. В тех случаях, когда это не работает через ghostscript, дежавюка тоже не сможет сконвертировать этот пдф-файл в дежавю! Так что это серьёзная проблема.
Теперь некоторые часто мне встречающиеся ситуации:
Проблема 1: Дежавю-файл жутко большого размера.
Типичный дежавю-файл от нормально сосканированной книги должен быть от 5 до 15 КБ на страницу (не на разворот!). Если в файле 30 или 50 КБ на страницу, то тут что-то не так. Чаще всего -- сканировали в greyscale вместо black/white. Или файл сосканирован в плохом разрешении и грязный - но это уже почти не лечится.
Лечение проблемы с greyscale:
Способ 1: С помощью djvups (это утилита из djvulibre, для MS Windows тоже есть) распечатать в формат Postscript (.ps) и при этом задать чёрно-белый режим печати. Сжать gzipом (получится файл .ps.gz) и залить в дежавюку. Надеяться на лучшее.
Способ 2: Извлечь все страницы в greyscale PBM, затем сконвертировать в чёрно-белые TIFF, далее как выше.
Проблема 2: Дежавю-файл неправильно повёрнут, или белым по чёрному вместо чёрного по белому, или в нём слишком большие белые поля по бокам текста.
Лечение:
Способ 1: Извлечь изображения страниц и лечить их.
Способ 2: В DjVu-редакторе Document Editor можно поворачивать страницы, однако полученный дежавю-файл будет правильно читаться только новыми версиями плагина DjVu. При просмотре в старых версиях плагина текст не будет повёрнут.
Проблема 3: Пропущены страницы в дежавю- или в пдф-файле, или есть несколько кусков файла, которые надо склеить.
Лечение: Недостающие страницы надо отсканировать, преобразовать в дежавю или соответственно в пдф, и вставить в конечный файл в нужные места. Для работы с дежавю-файлами (вставка страниц, склеивание файлов) можно использовать утилиту djvm из библиотеки djvulibre. Читайте руководство к ней. Для склеивания и разрезания пдф файлов можно использовать бесплатные утилиты из комплекта PDF-TOOLS (скачивать с www.pdf-tools.com). Там есть утилиты pdcat (склеить несколько пдф файлов, а также повернуть пдф файл на 90 или 180 градусов), pdsel (вырезать блок страниц), и т.д.
Проблема 4: Пдф-файл жутко большого размера.
Лечение: Либо его надо оптимизировать с помощью Acrobat, либо перевести в дежавю.
Проблема 5: Перевод пдф-файлов в дежавю.
Решение 1: Залить пдф файл в дежавюку. Надеяться на лучшее.
Недостатки: Работает очень долго, иногда несколько часов. Иногда получается очень плохой дежавю-файл из-за того, что в пдф-файле неверно указано разрешение или размер страниц. Иногда просто не работает из-за проблем с пдф-файлом (хотя Acrobat Reader может показывать вроде бы нормально) или из-за пдф формата 1.5, который не поддерживается сервером any2djvu. Файлы пдф, сделанные в совместимом с AcrobatReader 4 режиме, почти всегда проходят через дежавюку нормально. Преимущества: залил файл - отдыхай и жди. Если пдф-файл содержит гиперлинки (на тот же файл), то они воспроизводятся в дежавю-файле. Гиперлинки на другие файлы сохраняются как гиперлинки на что-то, но работать не будут. Их можно потом вручную вылечить в DjvuSolo 3.1, например, или с помощью утилиты djvused.
Решение 2: Извлечь изображения страниц из пдф-файла и далее действовать как выше.
Преимущества: Полный контроль над разрешением и качеством изображений.
Недостатки: Много мороки, и под GNU/Linux не всегда можно правильно извлечь изображения из пдф-файла.
Проблема 6: Пдф-файл, отсканированный в greyscale, был пропущен через дежавюку и дал дежавю-файл жутко большого размера. Это происходит из-за того, что дежавю формат очень неоптимален для greyscale изображений.
Лечение: Исходник - пдф-файл - надо нарезать на порции по 60, максимум 80 страниц (лучше блоки делать кратными 20) и пропустить через дежавюку, задав режим "black/white image". Затем надо склеить полученные дежавю-файлы.
Проблема 7: Перевод дежавю-файлов в пдф (исходных сканов нет).
Решение 1: Извлечь изображения страниц из дежавю-файла и перевести их в пдф, как указано выше.
Решение 2: Распечатать в пдф с помощью MS Windows драйвера типа PDFPrint. Или распечатать в Postscript и затем перевести в пдф дистиллером. Обычно результаты получаются хуже, чем в Решении 1 (т.е. пдф-файлы большие), но мороки меньше. Успехов!!
1) Если книга в приличном состоянии, я её сканирую в 600 dpi чёрно/белый TIFF. Причины, почему не 300 такие:
а) При разрешении 300 мелкие символы читаются плохо, и тонкии линии на некоторых глифах рвутся.
б) При последующем повороте строк дополнительный алиасинг гораздо менее заметен при 600 dpi.
2) Пользуюсь сканером Canoscan 3000F. Он позволяет сосканировать лист А4 в 600 dpi за 25 секунд, еще 15 секунд уходит на откат головки, перекладываение книги и т.д. Наверное, есть и более быстрые сканеры. При сканировании пользуюсь интерфейсом сканера, он сам автоматически нумерует файлы (если ему указать имя файла foo.tif, и такой файл уже есть в директории, то он даст имя foo0001.tif, foo0002.tif и т.д.). При появлении первой страницы с номером, запоминаю разницу между номером файла и номером страницы, после чего время от времени проверяю, что разница не изменилась (чтобы не пропустить страницу).
Ещё о выборе сканера - стоит проверить ахроматизм его линзы. Многие дешёвые сканеры имеют неахроматическую оптику, что проявляется в цветном ореоле вокруг букв (если сканировать в цвете). При чёрно-белом сканировании это эквивалентно потере фокусировки (эффективное разрешение падает до 100 dpi, и многие тонкие элементы становятся не видны).
3) Держу наготове специальные салфетки для протирки стекла. Годятся салфетки из нетканого материала, слегка смоченные средством для мойки стекол. Кроме борьбы с трухой, помогает увеличить срок жизни сканера (порой в книгах попадается и песок, царапающий стекло).
4) Перед сканированием раскрываю книгу посерёдке, и определяю область сканирования. Тут возможны два варианта:
а) Книга не умещается в разворот на стекле. Тогда она сканируется по одной странице, каждый раз с поворотом на 180 градусов. Нижним обрезом упираю книгу в край стекла, боковой обрез укладывается с небольшим (0.5-1 мм) отступом от края. Зона сканирования выбирается так, чтобы в вертикальном направленнии оба её края совпадали бы как можно точнее с обрезами книги (таким образом удаётся уменьшить разницу в вертикальном положении чётных и нечётных страниц после разворота). В горизонтальном направлении зона выбирается с запасом в пару сантиметров.
б) Книга умещается в разворот. В таком случае зона сканирования выбирается точно по верхнему и нижнему обрезу, а по горизонтали оставляется запас. Книга упирается верхним обрезом в край стекла.
5) Для большинства книжек нужен груз, позволяющий прижать бумагу к стеклу ровно. Я иногда прикрепляю груз к книге скотчем; при этом крышка сканера остается всё время открытой. С грузом важно не переборщить (иначе прогибается стекло, и нарушается фокусировка - особенно этим страдают сканеры с высоким разрешением, у них меньше глубина резкости). Стоит провести несколько опытов, сканируя мелкие узоры (например, микротекст на банкнотах ;) на середине стекла в grayscale - это позволяет оценить расфокусировку.
6) Обработку сканов я делаю в несколько этапов, с сохранением промежуточных версий. Прежде всего, если сканировалось по одной странице, то в Кромсаторе выделяю все нечётные файлы и разворачиваю их, с сохранением. Потом в Кромсаторе обрезаю края (и разрезаю страницы пополам, если это разворот). Затем выравниваю строки (в последнее время пользуюсь не Кромсатором, а своей программой, скоро она будет доступна всем). После этого в Кромсаторе выставляю поля (иногда автомат сбивается на нестандартных страницах, и их приходится обрабатывать специально). На последнем этапе дочищаю книгу вручную (в частности, убираю библиотечные штампы).
7) Наконец, создаю Zip-архив из директории с полученными файлами и отправляю его на дежавюку.
Подготовил: monday2000
7 апреля 2006 г.