ocr_test.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. import unittest
  2. import base64
  3. import requests
  4. '''
  5. 测试未通过的问题:
  6. 1.名字会识别错误(字形相近的字,例如:阎 and 阁)
  7. 2.上传90、270度正面图片,有时方向会识别错误(90度(1)识别为3; 270度(3)识别为2)
  8. 3.上传倾斜角度的图片(非0、90、180、360度):名字和生日识别错误
  9. 4.模糊的图片
  10. 1.太模糊的识别不出(101)
  11. 2.较模糊的能识别出一部分(较清楚的一部分),剩下模糊的部分字段为空
  12. 5.身份证地址无省的,会根据市自动识别出对应的省
  13. '''
  14. url = 'http://localhost:8080'
  15. def send_request(image_path, image_type):
  16. with open(image_path, 'rb') as f:
  17. img_str: str = base64.encodebytes(f.read()).decode('utf-8')
  18. r = requests.post(f'{url}/ocr_system/idcard', json={'image': img_str, 'image_type': image_type})
  19. print(r.json())
  20. return r.json()
  21. class TestIdCardOcr(unittest.TestCase):
  22. def test_it_works(self):
  23. self.assertEqual(1, 1, 'it not works')
  24. # def test_test(self):
  25. # image_path = './images/test.jpeg'
  26. # r = send_request(image_path, '0')
  27. # self.assertEqual(r['status'], '000', 'status case error')
  28. # self.assertEqual(r['result']['orientation'], 0, 'orientation case error')
  29. # self.assertEqual(r['result']['name']['text'], '阎妍', 'name case error')
  30. # self.assertEqual(r['result']['id']['text'], '410802198701190046', 'id case error')
  31. #
  32. # def test_front_90(self):
  33. # image_path = './images/front-90.jpg'
  34. # r = send_request(image_path, '0')
  35. # self.assertEqual(r['status'], '000', 'status case error')
  36. # self.assertEqual(r['result']['orientation'], 1, 'orientation case error')
  37. # self.assertEqual(r['result']['name']['text'], '刘新建', 'name case error')
  38. # self.assertEqual(r['result']['id']['text'], '412902197906291716', 'id case error')
  39. # self.assertEqual(r['result']['birthday']['text'], '1979年6月29日', 'birthday case error')
  40. # self.assertEqual(r['result']['address_province']['text'], '河南省', 'address_province case error')
  41. # self.assertEqual(r['result']['address_city']['text'], '邓州市', 'address_city case error')
  42. # self.assertEqual(r['result']['address_region']['text'], '白牛乡', 'address_region case error')
  43. # self.assertEqual(r['result']['address_detail']['text'], '故事村故事桥111号', 'address_detail case error')
  44. #
  45. # def test_front_0(self):
  46. # image_path = './images/front-0.png'
  47. # r = send_request(image_path, '0')
  48. # self.assertEqual(r['status'], '000', 'status case error')
  49. def test_front_180(self):
  50. image_path = './images/front-180.png'
  51. r = send_request(image_path, '0')
  52. self.assertEqual(r['status'], '000', 'status case error')
  53. self.assertEqual(r['result']['orientation'], 2, 'orientation case error')
  54. # self.assertEqual(r['result']['name']['text'], '阎妍', 'name case error')
  55. self.assertEqual(r['result']['id']['text'], '410802198701190046', 'id case error')
  56. def test_front_270(self):
  57. image_path = './images/front-270.png'
  58. r = send_request(image_path, '0')
  59. self.assertEqual(r['status'], '000', 'status case error')
  60. self.assertEqual(r['result']['orientation'], 3, 'orientation case error')
  61. # self.assertEqual(r['result']['name']['text'], '阎妍', 'name case error')
  62. self.assertEqual(r['result']['id']['text'], '410802198701190046', 'id case error')
  63. # def test_long_exp(self):
  64. # image_path = './images/long-exp.png'
  65. # r = send_request(image_path, '1')
  66. # self.assertEqual(r['status'], '000', 'status case error')
  67. # self.assertEqual(r['result']['expire_date']['text'], '20180227-长期', 'expire date case error')
  68. #
  69. # def test_tilt1(self):
  70. # image_path = './images/tilt.jpg'
  71. # r = send_request(image_path, '0')
  72. # self.assertEqual(r['status'], '000', 'status case error')
  73. # self.assertEqual(r['result']['orientation'], 0 or 1, 'orientation case error')
  74. #
  75. # def test_tilt2(self):
  76. # image_path = './images/tilt.jpg'
  77. # r = send_request(image_path, '0')
  78. # self.assertEqual(r['result']['name']['text'], '奥巴马', 'name case error')
  79. # self.assertEqual(r['result']['birthday']['text'], '1961年8月4日', 'birthday case error')
  80. #
  81. # def test_tilt3(self):
  82. # image_path = './images/tilt.jpg'
  83. # r = send_request(image_path, '0')
  84. # self.assertEqual(r['result']['birthday']['text'], '1961年8月4日', 'birthday case error')
  85. #
  86. # def test_vague(self):
  87. # image_path = './images/vague.jpg'
  88. # r = send_request(image_path, '0')
  89. # self.assertEqual(r['status'], '101', 'status case error')
  90. #
  91. # def test_bank(self):
  92. # image_path = './images/bank.jpg'
  93. # r = send_request(image_path, '0')
  94. # self.assertEqual(r['status'], '101', 'status case error')
  95. #
  96. # def test_back(self):
  97. # image_path = './images/back.jpeg'
  98. # r = send_request(image_path, '1')
  99. # self.assertEqual(r['status'], '000', 'status case error')
  100. # self.assertEqual(r['result']['orientation'], 0, 'orientation case error')
  101. # self.assertEqual(r['result']['expire_date']['text'], '20220114-20420114', 'expire_date case error')
  102. #
  103. # def test_back_270(self):
  104. # image_path = './images/back-270.jpg'
  105. # r = send_request(image_path, '1')
  106. # self.assertEqual(r['status'], '000', 'status case error')
  107. # self.assertEqual(r['result']['orientation'], 3, 'orientation case error')
  108. # self.assertEqual(r['result']['expire_date']['text'], '20220114-20420114', 'expire_date case error')
  109. #
  110. # def test_back_180(self):
  111. # image_path = './images/back-180.jpg'
  112. # r = send_request(image_path, '1')
  113. # self.assertEqual(r['status'], '000', 'status case error')
  114. # self.assertEqual(r['result']['orientation'], 2, 'orientation case error')
  115. # self.assertEqual(r['result']['expire_date']['text'], '20220114-20420114', 'expire_date case error')
  116. #
  117. # def test_back_90(self):
  118. # image_path = './images/back-90.jpg'
  119. # r = send_request(image_path, '1')
  120. # self.assertEqual(r['status'], '000', 'status case error')
  121. # self.assertEqual(r['result']['orientation'], 1, 'orientation case error')
  122. # self.assertEqual(r['result']['expire_date']['text'], '20220114-20420114', 'expire_date case error')
  123. #
  124. # def test_back_vague(self):
  125. # image_path = './images/back-vague.jpeg'
  126. # r = send_request(image_path, '1')
  127. # self.assertEqual(r['status'], '000', 'status case error')
  128. # self.assertEqual(r['result']['orientation'], 0, 'orientation case error')
  129. # self.assertEqual(r['result']['expire_date']['text'], '20120724-20220724', 'expire_date case error')
  130. #
  131. # def test_front_00(self):
  132. # image_path = './images/front-00.png'
  133. # r = send_request(image_path, '0')
  134. # self.assertEqual(r['status'], '000', 'status case error')
  135. # self.assertEqual(r['result']['orientation'], 0, 'orientation case error')
  136. # self.assertEqual(r['result']['name']['text'], '张志学', 'name case error')
  137. # self.assertEqual(r['result']['gender']['text'], '男', 'gender case error')
  138. # self.assertEqual(r['result']['ethnicity']['text'], '汉', 'ethnicity case error')
  139. # self.assertEqual(r['result']['id']['text'], '230103198602230916', 'id case error')
  140. # self.assertEqual(r['result']['birthday']['text'], '1986年2月23日', 'birthday case error')
  141. # self.assertEqual(r['result']['address_province']['text'], '', 'address_province case error')
  142. # self.assertEqual(r['result']['address_city']['text'], '哈尔滨市', 'address_city case error')
  143. # self.assertEqual(r['result']['address_region']['text'], '南岗区', 'address_region case error')
  144. # self.assertEqual(r['result']['address_detail']['text'], '人和街75号5单元601户', 'address_detail case error')
  145. #
  146. # def test_front_900(self):
  147. # image_path = './images/front-900.jpeg'
  148. # r = send_request(image_path, '0')
  149. # self.assertEqual(r['status'], '000', 'status case error')
  150. # self.assertEqual(r['result']['orientation'], 1, 'orientation case error')
  151. #
  152. # def test_front_1800(self):
  153. # image_path = './images/front-1800.jpeg'
  154. # r = send_request(image_path, '0')
  155. # self.assertEqual(r['status'], '000', 'status case error')
  156. # self.assertEqual(r['result']['orientation'], 2, 'orientation case error')
  157. # self.assertEqual(r['result']['name']['text'], '张志学', 'name case error')
  158. # self.assertEqual(r['result']['gender']['text'], '男', 'gender case error')
  159. # self.assertEqual(r['result']['ethnicity']['text'], '汉', 'ethnicity case error')
  160. # self.assertEqual(r['result']['id']['text'], '230103198602230916', 'id case error')
  161. # self.assertEqual(r['result']['birthday']['text'], '1986年2月23日', 'birthday case error')
  162. # self.assertEqual(r['result']['address_province']['text'], '', 'address_province case error')
  163. # self.assertEqual(r['result']['address_city']['text'], '哈尔滨市', 'address_city case error')
  164. # self.assertEqual(r['result']['address_region']['text'], '南岗区', 'address_region case error')
  165. # self.assertEqual(r['result']['address_detail']['text'], '人和街75号5单元601户', 'address_detail case error')
  166. #
  167. # def test_front_2700(self):
  168. # image_path = './images/front-1800.jpeg'
  169. # r = send_request(image_path, '0')
  170. # self.assertEqual(r['status'], '000', 'status case error')
  171. # self.assertEqual(r['result']['orientation'], 3, 'orientation case error')
  172. # self.assertEqual(r['result']['name']['text'], '张志学', 'name case error')
  173. # self.assertEqual(r['result']['gender']['text'], '男', 'gender case error')
  174. # self.assertEqual(r['result']['ethnicity']['text'], '汉', 'ethnicity case error')
  175. # self.assertEqual(r['result']['id']['text'], '230103198602230916', 'id case error')
  176. # self.assertEqual(r['result']['birthday']['text'], '1986年2月23日', 'birthday case error')
  177. # self.assertEqual(r['result']['address_province']['text'], '', 'address_province case error')
  178. # self.assertEqual(r['result']['address_city']['text'], '哈尔滨市', 'address_city case error')
  179. # self.assertEqual(r['result']['address_region']['text'], '南岗区', 'address_region case error')
  180. # self.assertEqual(r['result']['address_detail']['text'], '人和街75号5单元601户', 'address_detail case error')
  181. #
  182. def test_front_901(self):
  183. image_path = './images/front-901.jpeg'
  184. r = send_request(image_path, '0')
  185. self.assertEqual(r['status'], '000', 'status case error')
  186. self.assertEqual(r['result']['name']['text'], '李萌', 'name case error')
  187. self.assertEqual(r['result']['gender']['text'], '女', 'gender case error')
  188. self.assertEqual(r['result']['ethnicity']['text'], '汉', 'ethnicity case error')
  189. self.assertEqual(r['result']['id']['text'], '230623200210090646', 'id case error')
  190. self.assertEqual(r['result']['birthday']['text'], '2002年10月9日', 'birthday case error')
  191. self.assertEqual(r['result']['address_province']['text'], '黑龙江省', 'address_province case error')
  192. self.assertEqual(r['result']['address_city']['text'], '大庆市', 'address_city case error')
  193. self.assertEqual(r['result']['address_region']['text'], '萨尔图区', 'address_region case error')
  194. self.assertEqual(r['result']['address_detail']['text'], '刚军大街3-10号5门302室', 'address_detail case error')
  195. def test_long_name(self):
  196. image_path = './images/long_name.png'
  197. r = send_request(image_path, '0')
  198. self.assertEqual(r['status'], '000', 'status case error')
  199. self.assertEqual(r['result']['name']['text'], '叶干别尔地·坎吉巴依', 'name case error')
  200. self.assertEqual(r['result']['gender']['text'], '男', 'gender case error')
  201. self.assertEqual(r['result']['ethnicity']['text'], '柯尔克孜', 'ethnicity case error')
  202. self.assertEqual(r['result']['id']['text'], '653024199812031239', 'id case error')
  203. self.assertEqual(r['result']['birthday']['text'], '1998年12月3日', 'birthday case error')
  204. self.assertEqual(r['result']['address_province']['text'], '江苏省', 'address_province case error')
  205. self.assertEqual(r['result']['address_city']['text'], '南京市', 'address_city case error')
  206. self.assertEqual(r['result']['address_region']['text'], '栖霞区', 'address_region case error')
  207. self.assertEqual(r['result']['address_detail']['text'], '刚军大街3-文苑路1号', 'address_detail case error')