Утилита является первым этапом конвейера офлайн-обработки документов.
Назначение утилиты — разрезание отсканированного изображения, содержащего несколько страниц документа, напечатанных на одном листе A4 с использованием функции Microsoft Word «Несколько страниц на листе».
На данном этапе OCR не выполняется.
Предполагается, что:
Разрезание выполняется исключительно по геометрической сетке.
Использование OpenCV для поиска страниц, контуров или линий не требуется.
Главный приоритет проекта — максимально сохранить качество исходного изображения для последующего OCR. Любые преобразования, способные ухудшить распознавание, должны выполняться только при наличии явного параметра командной строки или быть реализованы на последующих этапах конвейера.
Входные изображения:
Формат выходных файлов должен совпадать с форматом входного файла.
Цветовое пространство сохраняется без изменений.
Не выполнять:
--input <путь_к_файлу>
Путь к входному изображению.
--slice <строки:столбцы>
Размер сетки.
Поддерживаются любые положительные значения.
Примеры:
1:2
2:2
2:4
3:3
4:4
Практический максимум — 4×4.
--output-dir <каталог>
Каталог сохранения результатов.
По умолчанию — текущий каталог.
--pre-rotate 90|180|270
Повернуть изображение перед разрезанием.
--border <пикселей>
Добавить белую рамку вокруг каждой страницы.
По умолчанию:
20
Изображение делится на равномерную прямоугольную сетку.
Не использовать:
Координаты вычисляются исключительно на основании размеров изображения и параметра:
--slice
Порядок должен полностью соответствовать порядку печати Microsoft Word.
Пример для 2×2:
01 02
03 04
Пример для 2×4:
01 02
03 04
05 06
07 08
Используется порядок row-major (слева направо, сверху вниз).
Если размеры изображения не делятся без остатка на количество строк или столбцов, остаток пикселей должен быть добавлен к последней строке и/или последнему столбцу.
Потеря пикселей недопустима.
Входной файл:
scan001.jpg
Результат:
scan001_01.jpg
scan001_02.jpg
scan001_03.jpg
...
Использовать двузначную нумерацию.
После разрезания для каждой страницы выполнить:
--border).Белая рамка необходима для повышения качества последующего OCR.
Обработка должна состоять из независимых этапов:
Загрузка изображения
↓
Опциональный поворот
↓
Разрезание на страницы
↓
Добавление белой рамки
↓
Сохранение результата
Каждый этап должен быть реализован отдельной функцией.
Это необходимо для последующего расширения конвейера.
На данном этапе НЕ реализовывать:
Все перечисленные возможности будут реализованы на следующих этапах проекта.
Использовать:
Для разрезания изображения использовать срезы массива NumPy.
OpenCV использовать только для:
Не использовать OpenCV для вычисления координат разрезания.
Код должен стать основой для последующих этапов конвейера подготовки документов к OCR.