Проект QuestionnaireMaker


Screenshot программы QuestionnaireMaker (66.82 KB)
Рис. 1: Screenshot программы QuestionnaireMaker

Данный проект (QM) создан для формирования конфигурационных файлов анкет. Т.е. открывается шаблон анкеты, и, пользователь указывает поля и ячейки этого шаблона а также тип этих полей и ячеек (чтобы потом можно было определить какую нейросеть использовать для распознавания того или иного поля). После чего информация сохраняется в виде конфигурационного файла, оригинального изображения анкеты (*_orign.png) и изображения анкеты с наложенными ячейками полей - эта инфа сохраняется в папку Configs.cfg.

Конфигурационный файл (INI-файл) имеет следующую структуру:

[Questionnaire]
OriginalImage_Path=Configs\qsample_orign.png
Name=qsample
MainImage_Path=Configs\qsample.png
CountFields=10
OriginalImage_Mean=235,697
 
[Field_1]
Language=Rus
Name=Фамилия
ID=0
CountCells=21
 
[Cell_1_1]
Y2_val=589
Y1=23,8392857142857
Y1_val=534
FieldID=0
X2_val=317
X1=16,8488745980707
X1_val=262
IsBorder=True
X2=20,3858520900322
Y2=26,2946428571429
 
[Cell_1_2]
Y2_val=589
Y1=23,8392857142857
Y1_val=534
FieldID=0
X2_val=377
X1=20,7073954983923
X1_val=322
IsBorder=True
X2=24,2443729903537
Y2=26,2946428571429

Надо сказать, что проект QM реализован с использованием языка C# на платформе .NET. А теперь, как известно, компания MicroSoft решила использовать XML-формат вместо INI. И, поэтому, пришлось использовать компонент сторонних разработчиков (System.IO.IniFile.dll), который реализует работу с INI-файлами. Однако, проблема в том, что этот компонент dump'ит секции в INI-файл не по-порядку, а как попало. Ну да ладно ...

Что касается структуры. Есть три класса секции: [Questionnaire] (анкета), [Field_*] (поле), [Cell_*_*] (ячейка). Отношения между этими секциями 1 ко многим, соответственно. Теперь по-порядку:

  • [Questionnaire]
    CountFields - определяет кол-во полей в анкете;
    OriginalImage_Mean - определяет силу белого цвета в изображении (от 0x00 до 0xFF). Используется для выравнивания brightness'тности при распознавании отсканированных изображений анкет;
  • [Field_*]
    CountCells - определяет кол-во ячеек, которое относится к данному полю;
    Language - тип поля;
  • [Cell_*_*]
    X?, Y? - относительные координаты ячейки;
    X?_val, Y?_val - абсолютные координаты ячейки;
    FieldID - ID'шник поля, к которому относится данная ячейка;
    IsBorder - флаг наличия рамки вокруг ячейки;

    Возможности cледующие:

  • Собственно, создание конфигурационного файла анкеты с возможностью редактирования ячеек, удаления созданных полей;
  • Загрузка конфигурационного файла анкеты с возможностью дальнейшей модификации;
    (c) Brain-LAB; by Alexander Panin in 2008