修正已知错误
This commit is contained in:
@@ -115,11 +115,11 @@ def information_extraction(phrec, identity):
|
|||||||
better_img_path = None # 非结算单暂时不进行替换
|
better_img_path = None # 非结算单暂时不进行替换
|
||||||
if better_img_path is not None:
|
if better_img_path is not None:
|
||||||
if text:
|
if text:
|
||||||
info_extract = model_util.ie_settlement_text(text)[0]
|
info_extract = model_util.ie_settlement_text(text)
|
||||||
else:
|
else:
|
||||||
info_extract = model_util.ie_settlement(better_img_path,
|
info_extract = model_util.ie_settlement(
|
||||||
common_util.ocr_result_to_layout(model_util.ocr(better_img_path)))
|
better_img_path, common_util.ocr_result_to_layout(model_util.ocr(better_img_path))
|
||||||
|
)
|
||||||
return '基本医保结算单', info_extract
|
return '基本医保结算单', info_extract
|
||||||
else:
|
else:
|
||||||
target_image = model_util.det_book(img_path) # 识别文档区域并裁剪
|
target_image = model_util.det_book(img_path) # 识别文档区域并裁剪
|
||||||
@@ -147,33 +147,31 @@ def information_extraction(phrec, identity):
|
|||||||
|
|
||||||
|
|
||||||
# 从keys中获取准确率最高的value
|
# 从keys中获取准确率最高的value
|
||||||
def get_best_value_in_keys(source, keys):
|
def get_best_value_of_key(source, key):
|
||||||
# 最终结果
|
# 最终结果
|
||||||
result = None
|
result = None
|
||||||
# 最大可能性
|
# 最大可能性
|
||||||
best_probability = 0
|
best_probability = 0
|
||||||
for key in keys:
|
values = source.get(key)
|
||||||
values = source.get(key)
|
if values:
|
||||||
if values:
|
for value in values:
|
||||||
for value in values:
|
text = value.get("text")
|
||||||
text = value.get("text")
|
probability = value.get("probability")
|
||||||
probability = value.get("probability")
|
if text and probability > best_probability:
|
||||||
if text and probability > best_probability:
|
result = text
|
||||||
result = text
|
best_probability = probability
|
||||||
best_probability = probability
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
# 从keys中获取所有value组成list
|
# 从keys中获取所有value组成list
|
||||||
def get_values_of_keys(source, keys):
|
def get_values_of_key(source, key):
|
||||||
result = []
|
result = []
|
||||||
for key in keys:
|
value = source.get(key)
|
||||||
value = source.get(key)
|
if value:
|
||||||
if value:
|
for v in value:
|
||||||
for v in value:
|
v = v.get("text")
|
||||||
v = v.get("text")
|
if v:
|
||||||
if v:
|
result.append(v)
|
||||||
result.append(v)
|
|
||||||
# 去重
|
# 去重
|
||||||
return list(set(result))
|
return list(set(result))
|
||||||
|
|
||||||
@@ -261,21 +259,21 @@ def search_department(department):
|
|||||||
def settlement_task(pk_phhd, settlement_list_ie_result):
|
def settlement_task(pk_phhd, settlement_list_ie_result):
|
||||||
settlement_data = {
|
settlement_data = {
|
||||||
"pk_phhd": pk_phhd,
|
"pk_phhd": pk_phhd,
|
||||||
"name": handle_name(get_best_value_in_keys(settlement_list_ie_result, IE_KEY['name'])),
|
"name": handle_name(get_best_value_of_key(settlement_list_ie_result, IE_KEY['name'])),
|
||||||
"admission_date_str": handle_original_data(
|
"admission_date_str": handle_original_data(
|
||||||
get_best_value_in_keys(settlement_list_ie_result, IE_KEY['admission_date'])),
|
get_best_value_of_key(settlement_list_ie_result, IE_KEY['admission_date'])),
|
||||||
"discharge_date_str": handle_original_data(
|
"discharge_date_str": handle_original_data(
|
||||||
get_best_value_in_keys(settlement_list_ie_result, IE_KEY['discharge_date'])),
|
get_best_value_of_key(settlement_list_ie_result, IE_KEY['discharge_date'])),
|
||||||
"personal_cash_payment_str": handle_original_data(
|
"personal_cash_payment_str": handle_original_data(
|
||||||
get_best_value_in_keys(settlement_list_ie_result, IE_KEY['personal_cash_payment'])),
|
get_best_value_of_key(settlement_list_ie_result, IE_KEY['personal_cash_payment'])),
|
||||||
"personal_account_payment_str": handle_original_data(
|
"personal_account_payment_str": handle_original_data(
|
||||||
get_best_value_in_keys(settlement_list_ie_result, IE_KEY['personal_account_payment'])),
|
get_best_value_of_key(settlement_list_ie_result, IE_KEY['personal_account_payment'])),
|
||||||
"personal_funded_amount_str": handle_original_data(
|
"personal_funded_amount_str": handle_original_data(
|
||||||
get_best_value_in_keys(settlement_list_ie_result, IE_KEY['personal_funded_amount'])),
|
get_best_value_of_key(settlement_list_ie_result, IE_KEY['personal_funded_amount'])),
|
||||||
"medical_insurance_type_str": handle_original_data(
|
"medical_insurance_type_str": handle_original_data(
|
||||||
get_best_value_in_keys(settlement_list_ie_result, IE_KEY['medical_insurance_type'])),
|
get_best_value_of_key(settlement_list_ie_result, IE_KEY['medical_insurance_type'])),
|
||||||
"admission_id": handle_id(get_best_value_in_keys(settlement_list_ie_result, IE_KEY['admission_id'])),
|
"admission_id": handle_id(get_best_value_of_key(settlement_list_ie_result, IE_KEY['admission_id'])),
|
||||||
"settlement_id": handle_id(get_best_value_in_keys(settlement_list_ie_result, IE_KEY['settlement_id'])),
|
"settlement_id": handle_id(get_best_value_of_key(settlement_list_ie_result, IE_KEY['settlement_id'])),
|
||||||
}
|
}
|
||||||
settlement_data["admission_date"] = handle_date(settlement_data["admission_date_str"])
|
settlement_data["admission_date"] = handle_date(settlement_data["admission_date_str"])
|
||||||
settlement_data["admission_date"] = handle_date(settlement_data["admission_date_str"])
|
settlement_data["admission_date"] = handle_date(settlement_data["admission_date_str"])
|
||||||
@@ -286,8 +284,8 @@ def settlement_task(pk_phhd, settlement_list_ie_result):
|
|||||||
settlement_data["medical_insurance_type"] = handle_insurance_type(settlement_data["medical_insurance_type_str"])
|
settlement_data["medical_insurance_type"] = handle_insurance_type(settlement_data["medical_insurance_type_str"])
|
||||||
|
|
||||||
parse_money_result = parse_money(
|
parse_money_result = parse_money(
|
||||||
get_best_value_in_keys(settlement_list_ie_result, IE_KEY['upper_case_medical_expenses']),
|
get_best_value_of_key(settlement_list_ie_result, IE_KEY['upper_case_medical_expenses']),
|
||||||
get_best_value_in_keys(settlement_list_ie_result, IE_KEY['medical_expenses']))
|
get_best_value_of_key(settlement_list_ie_result, IE_KEY['medical_expenses']))
|
||||||
settlement_data["medical_expenses_str"] = handle_original_data(parse_money_result[0])
|
settlement_data["medical_expenses_str"] = handle_original_data(parse_money_result[0])
|
||||||
settlement_data["medical_expenses"] = parse_money_result[1]
|
settlement_data["medical_expenses"] = parse_money_result[1]
|
||||||
save_or_update_ie(ZxIeSettlement, pk_phhd, settlement_data)
|
save_or_update_ie(ZxIeSettlement, pk_phhd, settlement_data)
|
||||||
@@ -295,20 +293,20 @@ def settlement_task(pk_phhd, settlement_list_ie_result):
|
|||||||
|
|
||||||
|
|
||||||
def discharge_task(pk_phhd, discharge_record_ie_result):
|
def discharge_task(pk_phhd, discharge_record_ie_result):
|
||||||
hospitals = get_values_of_keys(discharge_record_ie_result, IE_KEY['hospital'])
|
hospitals = get_values_of_key(discharge_record_ie_result, IE_KEY['hospital'])
|
||||||
departments = get_values_of_keys(discharge_record_ie_result, IE_KEY['department'])
|
departments = get_values_of_key(discharge_record_ie_result, IE_KEY['department'])
|
||||||
discharge_data = {
|
discharge_data = {
|
||||||
"pk_phhd": pk_phhd,
|
"pk_phhd": pk_phhd,
|
||||||
"hospital": handle_hospital(",".join(hospitals)),
|
"hospital": handle_hospital(",".join(hospitals)),
|
||||||
"department": handle_department(",".join(departments)),
|
"department": handle_department(",".join(departments)),
|
||||||
"name": handle_name(get_best_value_in_keys(discharge_record_ie_result, IE_KEY['name'])),
|
"name": handle_name(get_best_value_of_key(discharge_record_ie_result, IE_KEY['name'])),
|
||||||
"admission_date_str": handle_original_data(
|
"admission_date_str": handle_original_data(
|
||||||
get_best_value_in_keys(discharge_record_ie_result, IE_KEY['admission_date'])),
|
get_best_value_of_key(discharge_record_ie_result, IE_KEY['admission_date'])),
|
||||||
"discharge_date_str": handle_original_data(
|
"discharge_date_str": handle_original_data(
|
||||||
get_best_value_in_keys(discharge_record_ie_result, IE_KEY['discharge_date'])),
|
get_best_value_of_key(discharge_record_ie_result, IE_KEY['discharge_date'])),
|
||||||
"doctor": handle_name(get_best_value_in_keys(discharge_record_ie_result, IE_KEY['doctor'])),
|
"doctor": handle_name(get_best_value_of_key(discharge_record_ie_result, IE_KEY['doctor'])),
|
||||||
"admission_id": handle_id(get_best_value_in_keys(discharge_record_ie_result, IE_KEY['admission_id'])),
|
"admission_id": handle_id(get_best_value_of_key(discharge_record_ie_result, IE_KEY['admission_id'])),
|
||||||
"age": handle_age(get_best_value_in_keys(discharge_record_ie_result, IE_KEY['age'])),
|
"age": handle_age(get_best_value_of_key(discharge_record_ie_result, IE_KEY['age'])),
|
||||||
}
|
}
|
||||||
discharge_data["admission_date"] = handle_date(discharge_data["admission_date_str"])
|
discharge_data["admission_date"] = handle_date(discharge_data["admission_date_str"])
|
||||||
discharge_data["discharge_date"] = handle_date(discharge_data["discharge_date_str"])
|
discharge_data["discharge_date"] = handle_date(discharge_data["discharge_date_str"])
|
||||||
@@ -371,13 +369,13 @@ def discharge_task(pk_phhd, discharge_record_ie_result):
|
|||||||
def cost_task(pk_phhd, cost_list_ie_result):
|
def cost_task(pk_phhd, cost_list_ie_result):
|
||||||
cost_data = {
|
cost_data = {
|
||||||
"pk_phhd": pk_phhd,
|
"pk_phhd": pk_phhd,
|
||||||
"name": handle_name(get_best_value_in_keys(cost_list_ie_result, IE_KEY['name'])),
|
"name": handle_name(get_best_value_of_key(cost_list_ie_result, IE_KEY['name'])),
|
||||||
"admission_date_str": handle_original_data(
|
"admission_date_str": handle_original_data(
|
||||||
get_best_value_in_keys(cost_list_ie_result, IE_KEY['admission_date'])),
|
get_best_value_of_key(cost_list_ie_result, IE_KEY['admission_date'])),
|
||||||
"discharge_date_str": handle_original_data(
|
"discharge_date_str": handle_original_data(
|
||||||
get_best_value_in_keys(cost_list_ie_result, IE_KEY['discharge_date'])),
|
get_best_value_of_key(cost_list_ie_result, IE_KEY['discharge_date'])),
|
||||||
"medical_expenses_str": handle_original_data(
|
"medical_expenses_str": handle_original_data(
|
||||||
get_best_value_in_keys(cost_list_ie_result, IE_KEY['medical_expenses']))
|
get_best_value_of_key(cost_list_ie_result, IE_KEY['medical_expenses']))
|
||||||
}
|
}
|
||||||
cost_data["admission_date"] = handle_date(cost_data["admission_date_str"])
|
cost_data["admission_date"] = handle_date(cost_data["admission_date_str"])
|
||||||
cost_data["discharge_date"] = handle_date(cost_data["discharge_date_str"])
|
cost_data["discharge_date"] = handle_date(cost_data["discharge_date_str"])
|
||||||
@@ -413,9 +411,9 @@ def photo_review(pk_phhd, name):
|
|||||||
rec_result = cost_result
|
rec_result = cost_result
|
||||||
else:
|
else:
|
||||||
rec_result = None
|
rec_result = None
|
||||||
if rec_result:
|
if rec_result is not None:
|
||||||
for key, value in ie_result.items():
|
for key, value in ie_result.items():
|
||||||
rec_result[key].append(value)
|
rec_result[key] += value
|
||||||
|
|
||||||
settlement_data = settlement_task(pk_phhd, settlement_result)
|
settlement_data = settlement_task(pk_phhd, settlement_result)
|
||||||
discharge_data = discharge_task(pk_phhd, discharge_result)
|
discharge_data = discharge_task(pk_phhd, discharge_result)
|
||||||
|
|||||||
@@ -35,9 +35,10 @@ def ie_settlement(img_path, layout):
|
|||||||
url = 'http://ie_settlement:5002'
|
url = 'http://ie_settlement:5002'
|
||||||
response = requests.post(url, {'img_path': img_path, 'layout': json.dumps(layout)})
|
response = requests.post(url, {'img_path': img_path, 'layout': json.dumps(layout)})
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
return response.json()
|
ie_result = response.json()
|
||||||
else:
|
if ie_result.get(0):
|
||||||
return None
|
return ie_result[0]
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
||||||
@@ -51,9 +52,10 @@ def ie_settlement_text(text):
|
|||||||
url = 'http://ie_settlement:5002/text'
|
url = 'http://ie_settlement:5002/text'
|
||||||
response = requests.post(url, {'text': text})
|
response = requests.post(url, {'text': text})
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
return response.json()
|
ie_result = response.json()
|
||||||
else:
|
if ie_result.get(0):
|
||||||
return None
|
return ie_result[0]
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
||||||
@@ -68,9 +70,10 @@ def ie_discharge(img_path, layout):
|
|||||||
url = 'http://ie_discharge:5003'
|
url = 'http://ie_discharge:5003'
|
||||||
response = requests.post(url, {'img_path': img_path, 'layout': json.dumps(layout)})
|
response = requests.post(url, {'img_path': img_path, 'layout': json.dumps(layout)})
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
return response.json()
|
ie_result = response.json()
|
||||||
else:
|
if ie_result.get(0):
|
||||||
return None
|
return ie_result[0]
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
||||||
@@ -84,9 +87,10 @@ def ie_discharge_text(text):
|
|||||||
url = 'http://ie_discharge:5003/text'
|
url = 'http://ie_discharge:5003/text'
|
||||||
response = requests.post(url, {'text': text})
|
response = requests.post(url, {'text': text})
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
return response.json()
|
ie_result = response.json()
|
||||||
else:
|
if ie_result.get(0):
|
||||||
return None
|
return ie_result[0]
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
||||||
@@ -101,9 +105,10 @@ def ie_cost(img_path, layout):
|
|||||||
url = 'http://ie_cost:5004'
|
url = 'http://ie_cost:5004'
|
||||||
response = requests.post(url, {'img_path': img_path, 'layout': json.dumps(layout)})
|
response = requests.post(url, {'img_path': img_path, 'layout': json.dumps(layout)})
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
return response.json()
|
ie_result = response.json()
|
||||||
else:
|
if ie_result.get(0):
|
||||||
return None
|
return ie_result[0]
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
||||||
@@ -117,9 +122,10 @@ def ie_cost_text(text):
|
|||||||
url = 'http://ie_cost:5004/text'
|
url = 'http://ie_cost:5004/text'
|
||||||
response = requests.post(url, {'text': text})
|
response = requests.post(url, {'text': text})
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
return response.json()
|
ie_result = response.json()
|
||||||
else:
|
if ie_result.get(0):
|
||||||
return None
|
return ie_result[0]
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
@retry(stop=stop_after_attempt(3), wait=wait_random(1, 3), reraise=True,
|
||||||
|
|||||||
Reference in New Issue
Block a user