瀏覽代碼

fix name bug

Zhang Li 2 年之前
父節點
當前提交
dc91ddffeb
共有 5 個文件被更改,包括 20 次插入12 次删除
  1. 6 4
      core/ocr.py
  2. 7 7
      core/parser.py
  3. 1 1
      docker-compose.yml
  4. 二進制
      images/front-0.png
  5. 6 0
      testing/ocr_test.py

+ 6 - 4
core/ocr.py

@@ -43,16 +43,16 @@ class IdCardOcr:
 
         # 将检测到的文字放到一个列表中
         txts = [line[1][0] for line in result]
-        print("......................................")
-        print(txts)
-        print("......................................")
+        # print("......................................")
+        # print(txts)
+        # print("......................................")
         return txts, confs
 
     def _post_process(self, angle: int, parser: Parser, image_type: str):
         content = parser.parse()
         conf = parser.confidence
 
-        return {
+        res = {
             "confidence": conf,
             "card_type": image_type,
             "orientation": (4 - angle // 90) % 4,  # 原angle是逆时针,转成顺时针
@@ -67,4 +67,6 @@ class IdCardOcr:
             "address_detail": content["address_detail"].to_dict(),
             "expire_date": content["expire_date"].to_dict()
         }
+        print(res)
+        return res
 

+ 7 - 7
core/parser.py

@@ -12,7 +12,7 @@ class RecItem:
     confidence: float = 0.
 
     def to_dict(self):
-        return {"text": self.text, "confidence": self.confidence}
+        return {"text": self.text, "confidence": np.nan_to_num(self.confidence)}
 
 
 class Parser(object):
@@ -86,10 +86,10 @@ class FrontParser(Parser):
         """
         for i in range(len(self.result)):
             txt = self.result[i]
-            if ("姓名" or "名" in txt) and len(txt) > 2:
-                res = re.findall("名[\u4e00-\u9fa5]{1,4}", txt)
+            if ("姓名" in txt) and len(txt) > 2:
+                res = re.findall("名[\u4e00-\u9fa5]{1,4}", txt)
                 if len(res) > 0:
-                    self.res["Name"].text = res[0].split("名")[-1]
+                    self.res["Name"].text = res[0].split("名")[-1]
                     self.res["Name"].confidence = self.confs[i]
                     self.result[i] = "temp"  # 避免身份证姓名对地址造成干扰
                     break
@@ -157,19 +157,19 @@ class FrontParser(Parser):
         if len(addString) > 0:
             self.res["Address"].text = "".join(addString)
             self.res["Address"].confidence = np.mean(conf)
-        print(f'addr: {self.res["Address"]}')
+        # print(f'addr: {self.res["Address"]}')
 
     def split_addr(self):
         if self.res["Address"].text:
             conf = self.res["Address"].confidence
             df = cpca.transform([self.res["Address"].text])
-            print(df)
+            # print(df)
 
             province = df.iloc[0, 0]
             city = df.iloc[0, 1]
             region = df.iloc[0, 2]
             detail = df.iloc[0, 3]
-            print(f'pronvince: {province}, city: {city}, region: {region}, detail: {detail}')
+            # print(f'pronvince: {province}, city: {city}, region: {region}, detail: {detail}')
             self.res["address_province"] = RecItem(province, conf)
             self.res["address_city"] = RecItem(city, conf)
             self.res["address_region"] = RecItem(region, conf)

+ 1 - 1
docker-compose.yml

@@ -4,7 +4,7 @@ services:
     hostname: idcard
     container_name: idcard
     restart: always
-    image: registry.cn-hangzhou.aliyuncs.com/sxtest/idcard:gpu
+    image: registry.cn-hangzhou.aliyuncs.com/sxtest/idcard:cpu
     privileged: true
     ipc: host
     tty: true

二進制
images/front-0.png


+ 6 - 0
testing/ocr_test.py

@@ -17,6 +17,11 @@ class TestIdCardOcr(unittest.TestCase):
     def test_it_works(self):
         self.assertEqual(1, 1, 'it not works')
 
+    def test_front_0(self):
+        image_path = './images/front-0.png'
+        r = send_request(image_path, '0')
+        self.assertEqual(r['status'], '000', 'status case error')
+
     def test_front_180(self):
         image_path = './images/front-180.png'
         r = send_request(image_path, '0')
@@ -37,3 +42,4 @@ class TestIdCardOcr(unittest.TestCase):
 
 
 
+#