Ответ на этот вопрос не слишком прост и включает создание собственного кода для самостоятельного анализа PDF-файла через стороннюю библиотеку.
Поскольку ваши формы имеют известную форму, вы знаете расположение флажков,Вы должны создать словарь «Имя флажка» и «Данные флажка» для каждого флажка на странице. Объектом данных может быть объект, который выглядит следующим образом:
public class CheckboxData {
public int startX { get; set; }
public int startY { get; set; }
public int endX { get; set; }
public int endY { get; set; }
public bool IsChecked { get; set; }
}
Я бы порекомендовал использовать IronOCR до растеризация PDF в изображение.
С вашим изображением итерируйте по словарю флажков и, используя ограничивающие точки, перемещайте пиксель за пикселем и получайте цвет пикселя. Сохраните цвета в списке, а затем получите средний цвет всех пикселей внутри флажка. Если среднее значение выше порогового значения для определения того, проверяется ли оно, установите логическое значение IsChecked.
Для флажков в стиле радио вам, вероятно, потребуется другой объект данных и сохраните центральный пиксель круга. Для кругов вы должны сохранить значения centreX и centreY вместе с радиусом круга и использовать алгоритм круга Брезенхема , чтобы узнать, какие пиксели вокруг него нужно проверить.
Ниже приведен пример получения координат пикселей в GIMP для местоположения курсора.