Если вы знаете, что отсканированная страница будет заполнять изображение целиком, то вычисление стандартного отклонения может быть хорошим способом сделать это.
Я бы предложил немного размыть страницу, чтобы уменьшить шум. Затем вычислите SD для страницы, теоретически для страницы более или менее все цвета будут иметь низкое значение SD, а для страницы с большим количеством текста - более высокое значение SD. Тогда это «тренировка» системы для работы, когда страница проста, а когда - текст. Вы можете обнаружить, что некоторые страницы трудно сказать.
Вы могли бы обучить его, обработав огромное количество страниц, и оно проходит их все, и вы говорите, ясно это или нет.
EDIT
хорошо, белая страница с черным текстом, если у нас есть только страница и нет окружающих материалов, будет иметь средний цвет серого, вероятно, довольно светло-серый. Получение среднего - это цикл for для всех пикселей, добавление их значений и деление на количество пикселей. Я не очень хорошо разбираюсь в этих вещах, но достаточно сказать, что это не так долго. Если у вас нет огромных изображений.
SD - секунда для цикла, на этот раз мы подсчитываем, насколько каждый пиксель отличается от среднего, а затем делим на среднее. Это займет немного больше времени, чем среднее значение, так как мы должны сделать что-то вроде
diff = thispixel - mean;
if(diff < 0) {
diff = -diff;
}
runningTotal += diff;
Для однотонной страницы каждый пиксель будет близок к среднему значению, поэтому наш SD будет низким. Если SD ниже определенного значения, мы можем предположить, что это означает, что все страницы одного цвета.
Это может иметь проблемы, если их текст очень минимален, так как он не окажет большого влияния на SD, поэтому, возможно, как вы предложили в вопросе, разбейте страницу на разделы. Я предлагаю полосы горизонтально, поскольку текст имеет тенденцию идти этим путем. Если мы делаем одну из этих полосок по одной, как только одна полоска предполагает, что у нее есть текст, мы можем остановиться, поскольку нам все равно, пусто ли остальное или нет.
Размытие страницы поможет уменьшить шум, так как нечетный пиксель шума будет уменьшен в своем воздействии, таким образом, вы получите «более жесткий» SD. Вы также можете использовать его, чтобы уменьшить разрешение вашего изображения.
Допустим, изображение соуса имеет ширину 300 на 900, вы можете сэмплировать пиксели в блоках по девять, 3 * 3 и, таким образом, получить изображение шириной 100 на 300, чтобы его можно было использовать для уменьшения количество вычислений, которое вам нужно сделать, в данном случае на девятое!
Основная проблема заключается в том, чтобы определить, насколько высоким может быть SD с простой страницей. Может быть, он найдет SD загрузки пустых страниц.
Судя по звукам, вы, вероятно, захотите занять золотую середину, которая позволит ему быть неуверенным и потребовать вмешательства человека, возможно, позволив человеческой ценности обучить систему совершенствоваться?