Вернуться к разделу "Реализация проекта BookScanLib ".


2. Ликбез по теории и алгоритмам обработки сканов книг.

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 КБ)  (© Иван Сторожев ).

3. Графика на Алголисте

4. Google станет крупнейшей интернет-библиотекой  (Статья от 14.12.2004)

См. также список ссылок на главной странице проекта

Hosted by uCoz