From cf921b251d8664900bc7c5b3068bcd7b0ce2b2b7 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Sat, 17 Nov 2018 12:55:27 +0000 Subject: [PATCH] Added no SID robustness --- Ocr.py | 24 +++++++++++++++++++----- 1 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Ocr.py b/Ocr.py index f680669..33d9457 100644 --- a/Ocr.py +++ b/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]), -- Gitblit v1.9.3