DCT
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Если это уже обсуждалось - не судите строго. Много работал в Кромсаторе, хочу поделится своим опытом и соображениями по обработки серых сканов. Часто сталкиваюсь с тем, что в нем местами сильно затруднен "контроль качества" за результатом. Если для kromsate есть "контроль" - расстановкой резаков через draftkromsate, то для отделения фона аналогичного по функциональности инструмента нету. Поэтому отделить селективно текст от фона в кромсаторе сложно - часто теряется слишком серый текст и другие малоконтрастные детали (графики итд) - проконтролировать этот процесс для отдельных "проблемных" страниц крайне сложно. Поэтому я пользуюсь следующей методикой отделения текста от фона. Кромсатором сначала только режу сканы (и подправляю контраст малоконтрастных картинок). Результат скармливаю documenttodjvu, затем смотрю получившийся djvu в режиме отображения foreground-слоя - наглядно вижу, не попало ли что то нужное в фон (если попало - обрабатываю эти страницы отдельно, если таких страниц слишком много - поднимаю пакетно контраст и/или меняю настройки сепаратора documenttodjvu). Далее: djvudecode --layer=foreground (у проблемных страниц отделяю фон вручную). После такой процедуры читабельность сканов увеличивается на порядок (djvu довольно часто "облагораживает" вид букв), далее после отделения фона уже можно прогонять сканы через фильтры, делать descew, переводить в BW. Только так можно быть уверенным, что не потеряется что то нужное (в режиме сравнения в кромсаторе контролировать аналогичный процесс затруднительно). Конечно, этот процесс не интерактивный (приходится возиться вручную с проблематичными сканами) - но это пожалуй лучший известный мне способ надежно наглядно и быстро отделить фон от текста (вэйвлеты для этого подходят лучше многих графических фильтров) Пожелания из сказанного очевидны: draft background kromsate (разделение картинки на 2 слоя), с возможной последующей интерактивной подстройкой параметров аля-резаков для "проблемных" сканов. Соответственно draft-процесс при этом может выглядеть так: на каждую страницу создается 2 временных файла с разрешением и размером равным исходному (или 2 слоя в одном файле). В ходе draft-процесса 1) автоматически расставляются резаки - всё, что за их пределами уходит на background-слой 2) из оставшегося отделяется фон в background-слой. После draft-процесса смотреть и переключаться между 1) режимом наложения foreground на background (=исходный скан) 2) foreground-текст слой 3) background-слой (фон из текста+обрезки от страницы). При этом ОДИН РАЗ пройдясь по всем страницам можно будет раставить резаки и подкорректировать отделение фона (после корректирования параметров тут же применить к странице - поменяется распределение между foreground и background временного файла) На финальной стадии в соответствии с резаками режется полученный foreground-слой, с которым производятся "стандартные" кромсаторские фичи (descew, resize, rotate итд) При чернобелых сканах такой подход тоже должен быть полезным: можно легко интерактивно контролировать удаление черных полос, удаление больших пятен и despcle. Подводя итог - мое ИМХО - для отделения текста от мусора разделение картинки на 2 слоя - наиболее рациональный полуинтерактивный алгоритм для качественной первоначальной полуавтоматической обработки сканов. |