Вернуться к разделу "Реализация проекта BookScanLib ".
Cоздание электронных версий бумажных книг в форматах DjVu и Pdf - это технология, включающая в себя несколько простых этапов:
1). Сканирование (оцифровка) бумажных книг.
2). Обработка (облагораживание) полученных
"сырых" сканов.
3). Кодирование обработанных сканов в формат DjVu
(Pdf).
Проект BookScanLib будет заниматься исключительно вопросами этапа №2 - сканобработка.
В первую очередь найдите и установите на свой компьютер следующие программы:
- ABBYY FineReader v7.0 Professional Edition
- ABBYY FineReader v8.0 Professional Edition
- СканКромсатор v5.6
- Adobe Photoshop v5.0 или выше.
Эти программы потребуются нам в качестве "образца для подражания" - нам нужно будет суметь программно реализовать отдельные возможности каждой из этих программ.
Кроме того, каждому из нас потребуется уметь работать с этими программами (хотя бы в минимальной степени) - для опытного изучения работы некоторых алгоритмов этих программ.
С точки зрения программиста, сканобработка - это:
1. По форме: Программная работа с растровой графикой. Точнее сказать - это некий набор довольно специфических алгоритмов по работе с растровой графикой.
2. По содержанию: Программная работа с методами искусственного интеллекта (Artificial Intelligence, или AI) и распознавания образов (Pattern recognition). Именно в этом и заключается основная сложность реализации алгоритмов сканобработки.
В качестве основного рабочего формата при сканобработке обычно используется графический формат TIF - на всех её этапах. Использование формата JPG крайне не рекомендуется ни на одном из этапов. Форматы DjVu или Pdf абсолютно непричастны к сканобработке - они применяются лишь после неё - для сохранения её результатов.
Рассмотрим примерный список алгоритмов сканобработки, которые нам предстоит реализовать в данном проекте.
1. Deskew - (от англ. "skew" - наклон, склон, скос, уклон). Это алгоритм автоматического устранения перекоса страницы.
Когда мы сканируем лист бумаги с текстом, то, как правило, мы кладём этот лист на стекло сканера не строго параллельно сторонам сканера - а под небольшим углом. Поэтому на полученном скане строки текста выглядят не горизонтально. Алгоритм deskew автоматически вычисляет угол перекоса и поворачивает скан целиком на этот найденный угол так, чтобы строки текста стали горизонтальными.
2. Despeckle - (от англ. "speckle" - крапинка, пятнышко). Это алгоритм автоматического удаления мелких "соринок" на скане.
При сканировании текста на полученном скане часто оказываются многочисленные мелкие и мельчайшие тёмные "крапинки" (спеклы) - из-за высокой чувствительности сканирующей головки сканера. Алгоритм despeckle автоматически удаляет такой "мусор" со скана.
3. Segmentation. Это алгоритм автоматической сегментации страницы. Он является ключевым алгоритмом проекта - его задача - автоматически находить на скане область, занимаемую текстом. Алгоритм работает по принципу распознавания образов (pattern recognition). Он потребуется нам для решения 2 основных задач проекта:
А. Автоматическое определение воображаемого контура, очерчивающего изображение строк текста на скане - для последующей обрезки по этому контуру.
Б. Автоматическое определение положения т.н. "ошмётка" - вертикальной полосы - части соседней страницы, попавшей на скан - для случая "1 скан - 1 страница" (см. далее).
4. Splitpage (придуманное мною название). Это алгоритм автоматического разбиения сдвоенных разворотов на 2 отдельные страницы. Он может быть основан на алгоритме Segmentation.
5. Dewarping - (от англ. "warp" - коробление, деформация, искривление, перекос). Это алгоритм автоматического исправления искривленности строк текста в районе линии сопряжения 2 соседних страниц на одном скане. Кстати, этот алгоритм - основа основ работы любого книжного сканера - который фотографирует книгу, просто лежащую страницами кверху на его предметном столе.
6. Binarization - Это алгоритм бинаризации - т.е. преобразования Grey -> BW. Вообще он бывает разных типов: пороговая бинаризация, адаптивная и пр. Работу алгоритма бинаризации лучше посмотреть в Adobe Photoshop, нежели чем в ABBYY FineReader - там это видно более наглядно.
Кроме того, нам нужно будет реализовать такие общие растровые алгоритмы, как изменение яркости, контрастности, гаммы и т.п.
В дальнейшем этот список может измениться/уточниться.
При сканировании бумажной книги на обычном бытовом А4-сканере возможны 2 общих случая:
1. Случай "1 скан - 2 страницы". (Сдвоенный разворот). Бумажная книга имеет малый формат и помещается на предметном стекле сканера целиком.
2. Случай "1 скан - 1 страница". (Одиночный разворот). Бумажная книга имеет большой формат и не помещается на предметном стекле сканера целиком - помещается только 1 страница. При этом на скане практически всегда присутствует кусочек соседней страницы - я условно называю его "ошмёток".
Рассмотрим схематическую последовательность сканобработки:
На входе - сырые сканы в формате TIF LZW в режиме цветности Grey.
На выходе - полностью обработанные сканы в формате TIF CCIT FAX G4 в режиме цветности BW.
Разрешение сканов (DPI) принимаем неизменным в процессе обработки.
1. Разрезаем сдвоенные развороты по Splitpage (или отрезаем ошмёток для 2 случая - другим особым алгоритмом).
2. Удаляем наползающие на текст "серые" тени (путём подстройки либо яркости, либо контрастности области с тенью).
3. Бинаризуем Grey -> BW.
4. Применяем Deskew.
5. Применяем Despeckle.
6. Применяем Dewarping (опционально по необходимости).
7. Применяем Segmentation и обрезаем по полученному контуру. Получаем т.н. "голые тексты".
8. Навешиваем к голым текстам поля определённого размера (размер полей вычисляется в зависимости от средних размеров голых текстов).
Я сделал небольшой пример, иллюстрирующий подобную сканобработку. Это архив, в котором находятся 2 DjVu-файла:
- Сырые сканы, задежавюченные напрямую.
- Те же сканы, но прошедшие полную обработку в СканКромсаторе перед дежавючением.
Для просмотра файлов в формате DjVu используйте программу WinDjView.
Скачать пример сканобработки (304 КБ)
Рекомендую всем, кто хотел бы понять, что такое "сканобработка", обязательно посмотреть этот пример.
(Возможно, список статей и литературы в будущем пополнится).
1. Айриг С., Айриг Э. «Сканирование: профессиональный подход».
Книга немного устаревшая (в плане описания сканеров) и написана не самым лучшим языком. Полезна тем, что раскрывает новичкам всякие общие моменты и понятия относительно процесса сканирования книг. Эта книга представляет интерес лишь для полных новичков в деле сканирования книг. Содержит также описание некоторых базовых понятий растровой графики.
Скачать
(2,48 МБ) Формат - CHM (RUS)2. Айриг С., Айриг Э. «Подготовка цифровых изображений для печати».
В отличие от предыдущей книги, эта книга будет полезна не только новичкам, но также и тем, кто давно сканирует книги, но хотел бы знать больше о базовых понятиях из области обработки получаемых сканов - таких, как.коррекция изображения, улучшение чёткости, муар, треппинг, фильтры и т.д.
Скачать
(2,29 МБ) Формат - CHM (RUS)3. Дэн Маргулис. Photoshop 6 для профессионалов. Руководство по цветокоррекции.
Это очень серьёзная книга, в чём-то напоминает предыдущую. Вряд ли есть смысл её читать всем подряд, скорее, лишь единичным суперпрофессионалам. Эта книга - более для цветных полиграфистов, чем для книгосканировщиков. Содержит множество цветных картинок, подробно иллюстрирующих разные сложные случаи обработки изображений.
Описание (Это ИМЕННО оно).
Вариант 1
(42,9 МБ) Формат - PDF-векторный (RUS) Зеркала: 1 2 3 4Вариант 2 (10,3 МБ) Формат - DjVu 300 dpi OCR (RUS) (получен мною путём прямой конвертации Pdf -> DjVu варианта 1. Имеет оглавление с работающими гиперссылками).
4. Компьютерная
графика. Полигональные модели (Шикин А. В.,
Боресков Л. В.) (707 КБ) Формат - DOC (RUS) - M.:
ДИАЛОГ-МИФИ, 2001. - 464с. ISBN 5-86404-139-4
В основу книжки положен базовый вводный курс
по компьютерной графике и сопровождающие его
специальные курсы, читаемые авторами последние
несколько лет на факультете вычислительной
математики и кибернетики Московского
университета им. M. В. Ломоносова. Электронная
версия этой книги сделана мною несколько лет
назад.
Исходники к книге (к сожалению, не полный набор) (804 КБ)
5. Курс
лекций по "Компьютерной графике" -
П.В.Вельтмандер (Учебное пособие в 3-х частях +
лекции)
Исключительно полезный курс, рекомендую
обязательно ознакомиться.
6. Компьютерная
графика. Алгоритмы. Курс лекций. - ГТУ р. Марий-ЭЛ
Несерьёзный вводный курс.
1. Что такое DPI и ресемплинг (Моя статья - очень простое описание с примерами для чайников - прочитать всем обязательно!).
2. Как почистить сканы книг? Формат - CHM (177 КБ) (© Иван Сторожев ).
4. Google станет крупнейшей интернет-библиотекой (Статья от 14.12.2004)
См. также список ссылок на главной странице проекта