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