Tulon Цитата: Так что можно сказать, что я уже реализовал все, что вы предлагали (с поправкой на мое слабое понимание вашего предложения).
согласен, что ИП у Вас уже реализовано и прекрасно работает.
уже говорил, что пишу это больше для себя, так как другой возможности помочь Вам не имею.
Посмотрите, пожалуйста, можно ли использовать правила подобия фигур для получения однотипного размера страниц на выходе.
исходим из того, что все изображения страниц имеют различный масштаб
1. Подготавливаем шаблон "читабельной" страницы с жестко заложенными размерами. Вычисляем внутренние зависимости и соотношения.
2. по каким - либо признакам накладываем (масштабируем) шаблон на скан. Подставляем в свойства обрабатываемой страницы признаки из шаблона в вычисленной пропорции. Привязываем координаты. Запоминаем коэф. соответствия шаблону. Формируем общую таблицу свойств.
3. При выводе в файл увеличиваем (уменьшаем) картинку в соответствии с коэффициентом соответствия шаблону.
4. На выходе получаем "читабельные" страницы, в которых и поля и символы (размеры букв) приведены к единым размерам.
(пока не используем линии текстовых строк для выполнения искривления - все что вышло за грань ИП отмечается признаком (брак)).
Более подробно: Информационную площадь (ИП) страницы условной книги легко представить в сопоставлении с матрицей книгопечатной машины - размеры этой матрицы прямоугольны и статичны. Грани матрицы - грани ИП - прямоугольник. Пусть применительно к А4 он будет 24*16 (5 см на поля)
Разделив прямоугольник ИП диагональю, получим 2 смежных прямоугольных треугольника с общей гипотенузой. Далее, С2 = А2 + В2, ну и дальше, cos, sin
пусть (в шаблоне) А - высота, В - ширина
ширина В равна размеру длины полной текстовой строки = 16 см. Под прямым углом линия из конца В очерчивает грань А.
А = ?
Чтобы найти А нужно разобраться с технологической структурой страницы.
основная часть (пусть, текстовое пространство), ниже - площадь редактора (используется для ссылок, примечаний). Еще ниже - поле номера страницы (пусть номер страницы внизу). Нижняя линия этого поля является гранью ИП. Ниже номера страницы есть технологическое поле, но его можно и нужно игнорировать (номер матрицы, название книги, ...).
пропускаю поиск текстового блока, так как не знаю какими алгоритмами Вы определяете его грани...
Допустим, нашли грани, далее
Ищем поле номера страницы (максимум 4 знака), находим расстояние в этом поле от последнего знака до грани А, записываем соотношение найденного отрезка к ширине строки В (если номер страницы посредине) и очерчиваем нижнюю грань ИП в виде отрезка В1 = 16 см (перпендикулярного к грани А).
Точка пересечения В1 с гранью А (прямой угол из конца отрезка В) является правым углом ИП.
Проведем гипотенузу от конца отрезка В1 к началу отрезка В. Рассчитали угол, длину С, А
Заполнили в шаблоне значения. Далее, масштабировать значения и пропорции на обрабатываемую страницу будем исходя из правил подобия фигур шаблона и проецируемых фигур на обрабатываемой страницы.
Анализируя страницы, достаточно найти одну четкую с полной текстовой строкой и номером страницы, чтобы вычислить все остальные значения и перенести их в память на описание свойств каждой страницы. Существуют конечно и другие способы, различные мелкие детали.
При привязке шаблона к изображению страницы, вернее после, измеряем правую оставшуюся часть: если размер больше принятого в масштабе В, повторяем операцию и привязываем вторую страницу, если меньше переходим на следующую.
При выводе изображения в файл увеличиваем (уменьшаем) размер картинки по значению полученного коэффициента соответствия (отношение значения В обрабатываемой страницы к В шаблона).