From 7d2112ecaab8c63a9c50ffca226207707141f894 Mon Sep 17 00:00:00 2001 From: liuyebo <1515783401@qq.com> Date: Mon, 12 Aug 2024 14:00:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=B8=A6=E6=97=8B=E8=BD=AC?= =?UTF-8?q?=E7=9A=84ie=5Fresult=E7=9A=84=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check_ie_result/check_ie_result.py | 77 ++++++++++-------------------- 1 file changed, 26 insertions(+), 51 deletions(-) diff --git a/check_ie_result/check_ie_result.py b/check_ie_result/check_ie_result.py index 9751c66..b2f5ef3 100644 --- a/check_ie_result/check_ie_result.py +++ b/check_ie_result/check_ie_result.py @@ -11,6 +11,7 @@ from PIL import ImageDraw, Image, ImageFont from db import MysqlSession from db.mysql import ZxIeCost, ZxIeDischarge, ZxIeSettlement, ZxPhhd, ZxOcr, ZxPhrec from ucloud import ufile +from util import image_util def check_ie_result(pk_phhd): @@ -19,57 +20,26 @@ def check_ie_result(pk_phhd): session = MysqlSession() phhd = session.query(ZxPhhd.cXm).filter(ZxPhhd.pk_phhd == pk_phhd).one() json_result["cXm"] = phhd.cXm - settlement = session.query(ZxIeSettlement.pk_ie_settlement, ZxIeSettlement.name, ZxIeSettlement.admission_date, - ZxIeSettlement.discharge_date, - ZxIeSettlement.medical_expenses, ZxIeSettlement.personal_cash_payment, - ZxIeSettlement.personal_account_payment, - ZxIeSettlement.personal_funded_amount, ZxIeSettlement.medical_insurance_type, - ZxIeSettlement.admission_id, ZxIeSettlement.settlement_id).filter( - ZxIeSettlement.pk_phhd == pk_phhd).one() - settlement_result = { - "pk_ie_settlement": settlement.pk_ie_settlement, - "name": settlement.name, - "admission_date": settlement.admission_date, - "discharge_date": settlement.discharge_date, - "medical_expenses": settlement.medical_expenses, - "personal_cash_payment": settlement.personal_cash_payment, - "personal_account_payment": settlement.personal_account_payment, - "personal_funded_amount": settlement.personal_funded_amount, - "medical_insurance_type": settlement.medical_insurance_type, - "admission_id": settlement.admission_id, - "settlement_id": settlement.settlement_id, - } + settlement = (session.query(ZxIeSettlement.pk_ie_settlement, ZxIeSettlement.name, ZxIeSettlement.admission_date, + ZxIeSettlement.discharge_date, ZxIeSettlement.medical_expenses, + ZxIeSettlement.personal_cash_payment, ZxIeSettlement.personal_account_payment, + ZxIeSettlement.personal_funded_amount, ZxIeSettlement.medical_insurance_type, + ZxIeSettlement.admission_id, ZxIeSettlement.settlement_id) + .filter(ZxIeSettlement.pk_phhd == pk_phhd).one()) + settlement_result = settlement._asdict() json_result["settlement"] = settlement_result - discharge = session.query(ZxIeDischarge.pk_ie_discharge, ZxIeDischarge.hospital, ZxIeDischarge.pk_yljg, - ZxIeDischarge.department, ZxIeDischarge.pk_ylks, - ZxIeDischarge.name, ZxIeDischarge.admission_date, ZxIeDischarge.discharge_date, - ZxIeDischarge.doctor, ZxIeDischarge.admission_id, ZxIeDischarge.age).filter( - ZxIeDischarge.pk_phhd == pk_phhd).one() - discharge_result = { - "pk_ie_discharge": discharge.pk_ie_discharge, - "hospital": discharge.hospital, - "pk_yljg": discharge.pk_yljg, - "department": discharge.department, - "pk_ylks": discharge.pk_ylks, - "name": discharge.name, - "age": discharge.age, - "admission_date": discharge.admission_date, - "discharge_date": discharge.discharge_date, - "doctor": discharge.doctor, - "admission_id": discharge.admission_id, - } + discharge = (session.query(ZxIeDischarge.pk_ie_discharge, ZxIeDischarge.hospital, ZxIeDischarge.pk_yljg, + ZxIeDischarge.department, ZxIeDischarge.pk_ylks, ZxIeDischarge.name, ZxIeDischarge.age, + ZxIeDischarge.admission_date, ZxIeDischarge.discharge_date, ZxIeDischarge.doctor, + ZxIeDischarge.admission_id) + .filter(ZxIeDischarge.pk_phhd == pk_phhd).one()) + discharge_result = discharge._asdict() json_result["discharge"] = discharge_result cost = session.query(ZxIeCost.pk_ie_cost, ZxIeCost.name, ZxIeCost.admission_date, ZxIeCost.discharge_date, ZxIeCost.medical_expenses).filter(ZxIeCost.pk_phhd == pk_phhd).one() - cost_result = { - "pk_ie_cost": cost.pk_ie_cost, - "name": cost.name, - "admission_date": cost.admission_date, - "discharge_date": cost.discharge_date, - "medical_expenses": cost.medical_expenses, - } + cost_result = cost._asdict() json_result["cost"] = cost_result phrecs = session.query(ZxPhrec.pk_phrec, ZxPhrec.pk_phhd, ZxPhrec.cRectype, ZxPhrec.cfjaddress).filter( @@ -80,24 +50,29 @@ def check_ie_result(pk_phhd): response = requests.get(img_path) image = Image.open(BytesIO(response.content)).convert("RGB") - size = image.width * image.height / 200000 - font = ImageFont.truetype("./font/simfang.ttf", size=size) + font_size = image.width * image.height / 200000 + font = ImageFont.truetype("./font/simfang.ttf", size=font_size) - ocr = session.query(ZxOcr.id, ZxOcr.content, ZxOcr.x_offset, ZxOcr.y_offset).filter( + ocr = session.query(ZxOcr.id, ZxOcr.content, ZxOcr.rotation_angle, ZxOcr.x_offset, ZxOcr.y_offset).filter( ZxOcr.pk_phrec == phrec.pk_phrec).all() if not ocr: os.makedirs(f"./check_result/{pk_phhd}/0", exist_ok=True) image.save(f"./check_result/{pk_phhd}/0/{img_name}") - for id, group_results in groupby(ocr, key=lambda x: x.id): + for _, group_results in groupby(ocr, key=lambda x: x.id): draw = ImageDraw.Draw(image) for ocr_item in group_results: result = json.loads(ocr_item.content) + rotation_angle = ocr_item.rotation_angle x_offset = ocr_item.x_offset y_offset = ocr_item.y_offset for key in result: for value in result[key]: box = value["bbox"][0] + + if rotation_angle: + box = image_util.invert_rotate_rectangle(box, (image.width / 2, image.height / 2), + rotation_angle) if x_offset: box[0] += x_offset box[2] += x_offset @@ -106,7 +81,7 @@ def check_ie_result(pk_phhd): box[3] += y_offset draw.rectangle(box, outline="red", width=2) # 绘制矩形 - draw.text((box[0], box[1] - size), key, fill="blue", font=font) # 在矩形上方绘制文本 + draw.text((box[0], box[1] - font_size), key, fill="blue", font=font) # 在矩形上方绘制文本 draw.text((box[0], box[3]), value["text"], fill="blue", font=font) # 在矩形下方绘制文本 os.makedirs(f"./check_result/{pk_phhd}/{ocr_item.id}", exist_ok=True) image.save(f"./check_result/{pk_phhd}/{ocr_item.id}/{img_name}") @@ -124,4 +99,4 @@ def check_ie_result(pk_phhd): if __name__ == '__main__': - check_ie_result(3572938) + check_ie_result(0)