LINUX.ORG.RU

Обработка сканов с «манхэттенской» структурой

 , ,


3

3

Обработка сканов с «манхэттенской» (блочной) структурой.

Scan.png

Инструменты:

«Манхэттенская» структура означает, что скан можно разделить на кардинально отличающиеся друг от друга области: цветные иллюстрации и чёрно-белый (хотя не обязательно чёрный) текст.

Первое. Отделяем иллюстрации от текста:

$ croppertktopdf.py page-062.png
(как выглядит)

Устанавливаем параметры:

  • DPI: 600 - разрешение скана
  • Формат: png - на данном этапе используем Flate кодирование
  • div: 2 - downsample иллюстраций (скан не обладает достаточным качеством, чтобы имело смысл сохранять иллюстрации в 600dpi, поэтому сохранять их будем в 300dpi, что облегчит просмотр во вьючере)
  • []: 3 - clean margin, очистка дополнительно трёх пикселей вокруг иллюстраций на нулевом (текстовом) фрейме. Это чтобы не оставалось контуров от иллюстраций.

Используя моды [Zoom] и [+] можно очень точно выделить иллюстрации (не очень удобно правда, но лучше я уже сделать не смог). После того, как все иллюстрации выделены жмём [Crops]. В результате получаем <page-062.png.pdf> с иллюстрациями (как выглядит) и набор фреймов, из которых для дальнейшей обработки нужен только нулевой <page-062__crop__0.png> (как выглядит)

Иллюстрации имеют пока большой размер (11.2M), но только потому, что на данном этапе используется Flate компрессия.

Второе. Бинаризуем нулевой фрейм используя imagemagick:

convert +dither -colors 2 -units PixelsPerInch -density 600 -compress Group4 page-062__crop__0.png page-062__crop__0.tiff
(как выглядит)

Третье. Конвертируем бинаризованное изображение текста в pdf, используя tiff2pdf:

tiff2pdf -o page-062__crop__0.pdf page-062__crop__0.tiff
(как выглядит)

Размер page-062__crop__0.pdf с текстом вполне себе: 58K.

Четвертое. Объединяем текст и иллюстрации:

pdfwatermark page-062.png.pdf page-062__crop__0.pdf page.pdf
(как выглядит)

Размер page.pdf пока что большой (11.3M), по ещё Flate.

Пятое. Распознаем текст с помощью tesseract:

tesseract page-062__crop__0.tiff page-062__crop__0 -l rus+eng hocr
Преобразуем hocr в pdf с «невидимым» текстом:
hocr-pdf -d 600 -i tiff -o hocr.pdf -n .
И пристегиваем hocr.pdf к изображению страницы page.pdf
pdfwatermark hocr.pdf page.pdf page-062.pdf

Шестое. DCT компрессия иллюстраций с помощью ghostscript:

ps2pdf page-062.pdf page-062.gs.pdf
(как выглядит)

Результирующий документ page-062.gs.pdf имеет размер 800K, быстро просматривается во вьючере, текст чёткий, без муара, иллюстрации на месте, имеет OCR слой. (Можно оптимизировать дополнительно с помощью jpdftweak)

Бинаризация "нечёрного"

Бинаризация «нечёрного» текста.

Небольшое уточнение. Для Бинаризации «нечёрного» текста:

$ convert +dither -colors 2 -normalize -units PixelsPerInch -density 600 -compress Group4 scan_txt.png scan_txt.tiff
Ну а для окрашивания gimp или что-то подобное.

zvezdochiot ()

Я бы для начала выделил всю белую область, сделал N дилатаций и N эрозий (чтобы уничтожить текст), инвертировал маску и нашел бы таким образом все иллюстрации.

Для оставшейся области делаем M дилатаций, затем M эрозий по черному. Получаем маску для текста. Оттуда вытаскиваем текст и отправляем его на вход cuneiform.

Все решается без говнопхытонов на чистой кошерной сишечке.

anonymous ()