修正两个涂抹内容靠太近时容易在提升精度时将另一个忽略的问题
This commit is contained in:
@@ -13,7 +13,7 @@ from ucloud import BUCKET, ucloud
|
|||||||
from util import image_util, util
|
from util import image_util, util
|
||||||
|
|
||||||
|
|
||||||
def find_box(content, layout, offset=0, length=None, improve=False, image_path=None):
|
def find_boxes(content, layout, offset=0, length=None, improve=False, image_path=None):
|
||||||
full_box = layout[0]
|
full_box = layout[0]
|
||||||
x_len = full_box[2] - full_box[0]
|
x_len = full_box[2] - full_box[0]
|
||||||
y_len = full_box[3] - full_box[1]
|
y_len = full_box[3] - full_box[1]
|
||||||
@@ -49,6 +49,7 @@ def find_box(content, layout, offset=0, length=None, improve=False, image_path=N
|
|||||||
full_box[1] + (index + offset + length) * char_len,
|
full_box[1] + (index + offset + length) * char_len,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
boxes = []
|
||||||
if improve:
|
if improve:
|
||||||
# 再次识别,提高精度
|
# 再次识别,提高精度
|
||||||
image = cv2.imread(image_path)
|
image = cv2.imread(image_path)
|
||||||
@@ -68,17 +69,19 @@ def find_box(content, layout, offset=0, length=None, improve=False, image_path=N
|
|||||||
raise e
|
raise e
|
||||||
for layout in layouts:
|
for layout in layouts:
|
||||||
if content in layout[1]:
|
if content in layout[1]:
|
||||||
temp_box = find_box(content, layout)
|
temp_box = find_boxes(content, layout)[0]
|
||||||
if temp_box:
|
if temp_box:
|
||||||
box = [
|
boxes.append([
|
||||||
temp_box[0] + capture_box[0] - offset_x,
|
temp_box[0] + capture_box[0] - offset_x,
|
||||||
temp_box[1] + capture_box[1] - offset_y,
|
temp_box[1] + capture_box[1] - offset_y,
|
||||||
temp_box[2] + capture_box[0] - offset_x,
|
temp_box[2] + capture_box[0] - offset_x,
|
||||||
temp_box[3] + capture_box[1] - offset_y,
|
temp_box[3] + capture_box[1] - offset_y,
|
||||||
]
|
])
|
||||||
break
|
|
||||||
util.delete_temp_file(temp_file.name)
|
util.delete_temp_file(temp_file.name)
|
||||||
return box
|
|
||||||
|
if not boxes:
|
||||||
|
boxes.append(box)
|
||||||
|
return boxes
|
||||||
|
|
||||||
|
|
||||||
def get_mask_layout(image, name, id_card_num):
|
def get_mask_layout(image, name, id_card_num):
|
||||||
@@ -106,10 +109,10 @@ def get_mask_layout(image, name, id_card_num):
|
|||||||
find_name_by_key = True
|
find_name_by_key = True
|
||||||
find_id_card_num_by_key = True
|
find_id_card_num_by_key = True
|
||||||
if name in layout[1]:
|
if name in layout[1]:
|
||||||
result.append(find_box(name, layout, improve=True, image_path=temp_file.name))
|
result += find_boxes(name, layout, improve=True, image_path=temp_file.name)
|
||||||
find_name_by_key = False
|
find_name_by_key = False
|
||||||
if id_card_num in layout[1]:
|
if id_card_num in layout[1]:
|
||||||
result.append(find_box(id_card_num, layout, improve=True, image_path=temp_file.name))
|
result += find_boxes(id_card_num, layout, improve=True, image_path=temp_file.name)
|
||||||
find_id_card_num_by_key = False
|
find_id_card_num_by_key = False
|
||||||
|
|
||||||
keys = []
|
keys = []
|
||||||
@@ -119,10 +122,11 @@ def get_mask_layout(image, name, id_card_num):
|
|||||||
keys += ID_CARD_NUM_KEYS
|
keys += ID_CARD_NUM_KEYS
|
||||||
for key in keys:
|
for key in keys:
|
||||||
if key["key"] in layout[1]:
|
if key["key"] in layout[1]:
|
||||||
result.append(find_box(key["key"], layout, offset=len(key["key"]), length=key["length"]))
|
result += find_boxes(key["key"], layout, offset=len(key["key"]), length=key["length"])
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error("涂抹时出错!", exc_info=e)
|
logging.error("涂抹时出错!", exc_info=e)
|
||||||
|
return result
|
||||||
finally:
|
finally:
|
||||||
util.delete_temp_file(temp_file.name)
|
util.delete_temp_file(temp_file.name)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user