Development of the ocr part of AOI
Samo Penic
2018-11-17 cf921b251d8664900bc7c5b3068bcd7b0ce2b2b7
Ocr.py
@@ -62,17 +62,20 @@
        xpos = d[0].rect.left
        ypos = d[0].rect.top
        # check if image is rotated wrongly
        if xpos > self.imgHeight / 2.0 and ypost > self.imgWidth / 2.0:
        if xpos > self.imgHeight / 2.0 and ypos > self.imgWidth / 2.0:
            self.rotateAngle(180)
    def rotateAngle(self, angle=0):
        #rot_mat = cv2.getRotationMatrix2D(
        #    (self.imgHeight / 2, self.imgWidth / 2), angle, 1.0
        #)
        rot_mat = cv2.getRotationMatrix2D(
            (self.imgHeight / 2, self.imgWidth / 2), angle, 1.0
            (self.imgWidth/2, self.imgHeight/2), angle, 1.0
        )
        result = cv2.warpAffine(
            self.img,
            rot_mat,
            (self.imgHeight, self.imgWidth),
            (self.imgWidth, self.imgHeight),
            flags=cv2.INTER_CUBIC,
            borderMode=cv2.BORDER_CONSTANT,
            borderValue=(255, 255, 255),
@@ -220,18 +223,29 @@
            return "x"
        if self.settings is not None:
            sid_mask=self.settings.get("sid_mask", None)
        es = getSID(
        es,err,warn = getSID(
            self.img[
                int(0.045 * self.imgHeight) : int(0.085 * self.imgHeight),
                int(0.04 * self.imgHeight) : int(0.095 * self.imgHeight),
                int(0.7 * self.imgWidth) : int(0.99 * self.imgWidth),
            ],
            self.sid_classifier,
            sid_mask
        )
        [self.errors.append(e) for e in err]
        [self.warnings.append(w) for w in warn]
        return es
    def get_code_data(self):
        if self.QRData is None:
            self.errors.append("Could not read QR or EAN code! Not an exam?")
            retval = {'exam_id': None,
                      'page_no': None,
                      'paper_id': None,
                      'faculty_id': None,
                      'sid':None
                      }
            return retval
        qrdata = bytes.decode(self.QRData, 'utf8')
        if self.QRDecode[0].type=='EAN13':
            return {'exam_id': int(qrdata[0:7]),