#pragma once #include #include //Examination paper image recognition result typedef struct { std::string stu_name; std::string stu_code1; std::string stu_code2; std::string stu_class; std::string stu_grade; std::string stu_state; }coverStu; typedef struct { std::string stu_no; std::string stu_type; int option_cout; }questionAi; enum EPIR_RESULT { EPIR_SUCCESS, }; struct img_param{ int paper_id; int phy_number; int schema_index; int x_s[3]; int y_s[3]; int x_m[3]; int y_m[3]; char img_path[512];//画板修改之后的图像 char img_path_src[512];//原始图像 }; struct Cross { int x; int y; int signal; double angle; }; //学生信息 struct STUDENT_INFO{ int _index; long student_id; std::string student_name; std::string class_name; std::string student_code; //-1表示没有分数 float score; long class_id; //试卷ID 值为-1时表示试卷还没有扫描 int paper_id; int location_id;//督学卡定位编号 }; //扫描仪信息 struct SCANNER_INFO{ //扫描仪ID unsigned int Id; //制造商 char Manufacturer[34]; //产品家族(系列) char ProductFamily[34]; //产品名称 char ProductName[34]; //协议主版本号 unsigned short ProtocolMajor; //协议次版本号 unsigned short ProtocolMinor; }; //异常位移 enum EXCEPTION_SHIFT{ //定位点异常 SHIFT_DINGWEIDIAN =0, //试卷删除 SHIFT_SHIJUANSHANCHU, //非法试卷 SHIFT_FEIFASHIJUAN, //AB卷未识别 SHIFT_ABJUANWEISHIBIE, //考号待匹配 SHIFT_KAOHAODAIPIPEI, //考号未识别 SHIFT_KAOHAOWEISHIBIE, //考号不存在 SHIFT_KAOHAOBUCUNZAI, //考号冲突 SHIFT_KAOHAOCHONGTU, //漏涂 SHIFT_LOUTU, //漏批 SHIFT_LOUPI, //教师误判(判分超过满分) SHIFT_WUPAN, //无法识别主观题 SHIFT_WUFASHIBIE_ZHUGUANTI, //试卷缺页 SHIFT_SHIJUANQUEYE, //试卷识别中 SHIFT_SHIJUANCHONGXINSHIBIEZHONG, //试卷缺考 SHIFT_SHIJUANQUEKAO, //客观题异常 SHIFT_KEGUANTIYICHANG, // 被覆盖 SHIFT_COVERD, //异常状态数 EX_TYPE_COUNT, }; //异常类型定义 enum EXCEPTION_TYPE{ //正常 EX_NOMARL =0, //试卷删除 EX_SHIJUANSHANCHU =1< exceptions; }; //矩形区 struct AI_RET_RECT { int x1; int x2; int y1; int y2; }; enum AI_RECT_TYPEP { AI_TIANTUKAOHAO,AI_DINGWEIDIAN,AI_DINGWEIQU,AI_JIAOCHADIAN, AI_TIAOXINGMA, AI_QUEKAOBIAOJI, AI_XUANZETI, AI_TIANKONGTI, AI_ZHUGUANTI, AI_XUANZUOTI, AI_XUANZUOTUDIAN, AI_ZHUGUANTI2, AI_QUEKAO }; struct AI_RET_RECT2 { AI_RECT_TYPEP rect_type; int x; int y; int width; int height; int directoin; //方向 180-- 水平 90--垂直 //填涂考号参数 int nCols;//列数 float widthH; //涂点宽度 float gapH; int nRows; //行数 float widthV; //涂点高度 float gapV; std::string outputChar; std::vector tihao; std::string tihao_aiExamper; std::vector default_points; std::vector half_points; int showMarkTypeIndex; int postMarkTypeID; bool isSplit;//分页 int unitID;//分页ID bool duoxuanti; }; struct PAPER_DETAIL{ int paper_id; char examnumber[64]; char student_id[64]; char student_name[64]; char class_name[64]; long exceptionsFlag; bool has_covered; float score; float fullScore; float fullScoreObjective; std::vector exceptions; int location_id;//督学卡定位编号 int paper_upload_state; char sz_upload_error_msg[512]; }; //题型枚举 enum QUESTION_TYPE{ xuanze, panduan, tiankong, zhuguanti1 }; enum QUESTION_STATE_FLAG{ QSF_LOUTU=1, QSF_LOUPI=2, QSF_WUPAN=3, QSF_WUFASHIBIE=4, QSF_UNSELECT =16, }; //题目状态 enum QUESTION_STATE{ //正常 QUESTION_STATE_NORMAL =0, //漏涂,该异常现在不会抛出(保留) QUESTION_STATE_LOUTU =QSF_LOUTU, //漏批 QUESTION_STATE_LOUPI =QSF_LOUPI, //误判 QUESTION_STATE_WUPAN =QSF_WUPAN, //无法识别,该异常现在不会抛出(保留) QUESTION_STATE_WUFASHIBIE =QSF_WUFASHIBIE, //未选该题 QUESTION_STATE_UNSELECT =QSF_UNSELECT, //未选该题并且没涂 QUESTION_STATE_UNSELECT_LOUTU =QSF_UNSELECT|QSF_LOUTU, //未选该题并且没有识别该题 QUESTION_STATE_UNSELECT_WUFASHIBIE =QSF_UNSELECT|QSF_WUFASHIBIE, }; //小题详情 struct QUESTION_INFO{ int _index; //int question_id; std::string question_code;//题号(只有数字) std::string answer_std;//标准答案 std::string answer_stu;//学生答案 QUESTION_TYPE question_type; //选择,判断,填空,主管题 0 选择题;1判断题;2填空题;3主观题 int is_mutil;//是否多选 int option_count;//选项数 float score_full;//满分 float score_half;//半对得分 float score_stu; QUESTION_STATE question_state;//题目状态 }; //题目分组 struct GROUP_QUESTION{ int _index; int question_type;//题型 std::string question_type_name;//题型名称 std::vector questionList;//该类型题目的小题详情 }; struct IDENTIFY_MSG{ //学生ID(为-1时表示学生证号未识别) long student_id; //是否已识别 bool identified; //学生姓名 char student_name[30]; //考号 char examnumber[30]; //班级信息 char class_info[30]; //试卷异常 long exceptions ; //班级Id long class_id; //分数 float score; //试卷ID int paper_id; //班级学生总数(大于0时有效,只在第一次识别该班级考生时有值) int class_total; int locationID;//督学卡定位编号 }; struct SCAN_ANALYSIS_MSG{ //考试名称 char exam_name[256]; //科目代码 char course_code[10]; //考试ID(不一定是数字) char paper_id[20]; }; //识别器错误事件 struct IDENTIFOR_ERROR_MSG{ //类型,目前无需处理 int type ;//2:缺页 3:文件命名长度不一致 //错误消息,目前仅需要弹出消息即可,不涉及后续处理 char msg[256]; }; //图像上传任务状态枚举 enum IMG_UPLOAD_TASK_STATE{ //新任务 UPLOAD_TASK_STATE_NOTSTART, //上传中 UPLOAD_TASK_STATE_UPLOADING, //已暂停 UPLOAD_TASK_STATE_PAUSED, //已完成 UPLOAD_TASK_STATE_COMPLETED }; struct IMG_UPLOAD_TASK{ //任务ID int upload_task_id; //任务名称 char task_name[128]; //扫描时间 char time[32]; //任务状态 IMG_UPLOAD_TASK_STATE upload_task_state; //已上传数量 int upload_count; //任务总量 int total_count; __int64 exam_id; __int64 exam_course_id; int scan_type; __int64 exam_course_id_from; std::string batch_code_from; std::string examinne_id_from; }; /************************************************************************/ /* 试卷送入器类型 */ /* 2014年12月9日16:04:06 */ /* 作者:唐林 */ /************************************************************************/ enum FEEDER_TYPE{ Folder = 1, Scanner =2, //Restart =3, AdjustBatch =4, AdjustExaminne=5, ManualMatch =6, AutoSchemaFlag = 0x100, FEEDER_TYPE_MASK = AutoSchemaFlag - 1, AutoSchemaFolder = AutoSchemaFlag | Folder, AutoSchemaScanner = AutoSchemaFlag | Scanner, //AutoSchemaRestart = AutoSchemaFlag | Restart, AutoSchemaAdjustBatch = AutoSchemaFlag | AdjustBatch, AutoSchemaAdjustExaminne = AutoSchemaFlag | AdjustExaminne, AutoSchemaManualMatch = AutoSchemaFlag | ManualMatch, }; struct ScanParam{ __int64 examId; __int64 examCourseId; std::string examName; std::string courseName; int scanner_id; std::string img_dir; __int64 examCourseIdOld; std::string batch; std::string examinneid; }; enum { IDF_LOAD_SUCCESS =0, IDF_LOAD_FAILURE =1, IDF_LOAD_SUB_LEN =16, IDF_LOAD_SUBMASK =(1<