修正带旋转的ie_result的绘制
This commit is contained in:
@@ -11,6 +11,7 @@ from PIL import ImageDraw, Image, ImageFont
|
|||||||
from db import MysqlSession
|
from db import MysqlSession
|
||||||
from db.mysql import ZxIeCost, ZxIeDischarge, ZxIeSettlement, ZxPhhd, ZxOcr, ZxPhrec
|
from db.mysql import ZxIeCost, ZxIeDischarge, ZxIeSettlement, ZxPhhd, ZxOcr, ZxPhrec
|
||||||
from ucloud import ufile
|
from ucloud import ufile
|
||||||
|
from util import image_util
|
||||||
|
|
||||||
|
|
||||||
def check_ie_result(pk_phhd):
|
def check_ie_result(pk_phhd):
|
||||||
@@ -19,57 +20,26 @@ def check_ie_result(pk_phhd):
|
|||||||
session = MysqlSession()
|
session = MysqlSession()
|
||||||
phhd = session.query(ZxPhhd.cXm).filter(ZxPhhd.pk_phhd == pk_phhd).one()
|
phhd = session.query(ZxPhhd.cXm).filter(ZxPhhd.pk_phhd == pk_phhd).one()
|
||||||
json_result["cXm"] = phhd.cXm
|
json_result["cXm"] = phhd.cXm
|
||||||
settlement = session.query(ZxIeSettlement.pk_ie_settlement, ZxIeSettlement.name, ZxIeSettlement.admission_date,
|
settlement = (session.query(ZxIeSettlement.pk_ie_settlement, ZxIeSettlement.name, ZxIeSettlement.admission_date,
|
||||||
ZxIeSettlement.discharge_date,
|
ZxIeSettlement.discharge_date, ZxIeSettlement.medical_expenses,
|
||||||
ZxIeSettlement.medical_expenses, ZxIeSettlement.personal_cash_payment,
|
ZxIeSettlement.personal_cash_payment, ZxIeSettlement.personal_account_payment,
|
||||||
ZxIeSettlement.personal_account_payment,
|
ZxIeSettlement.personal_funded_amount, ZxIeSettlement.medical_insurance_type,
|
||||||
ZxIeSettlement.personal_funded_amount, ZxIeSettlement.medical_insurance_type,
|
ZxIeSettlement.admission_id, ZxIeSettlement.settlement_id)
|
||||||
ZxIeSettlement.admission_id, ZxIeSettlement.settlement_id).filter(
|
.filter(ZxIeSettlement.pk_phhd == pk_phhd).one())
|
||||||
ZxIeSettlement.pk_phhd == pk_phhd).one()
|
settlement_result = settlement._asdict()
|
||||||
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,
|
|
||||||
}
|
|
||||||
json_result["settlement"] = settlement_result
|
json_result["settlement"] = settlement_result
|
||||||
|
|
||||||
discharge = session.query(ZxIeDischarge.pk_ie_discharge, ZxIeDischarge.hospital, ZxIeDischarge.pk_yljg,
|
discharge = (session.query(ZxIeDischarge.pk_ie_discharge, ZxIeDischarge.hospital, ZxIeDischarge.pk_yljg,
|
||||||
ZxIeDischarge.department, ZxIeDischarge.pk_ylks,
|
ZxIeDischarge.department, ZxIeDischarge.pk_ylks, ZxIeDischarge.name, ZxIeDischarge.age,
|
||||||
ZxIeDischarge.name, ZxIeDischarge.admission_date, ZxIeDischarge.discharge_date,
|
ZxIeDischarge.admission_date, ZxIeDischarge.discharge_date, ZxIeDischarge.doctor,
|
||||||
ZxIeDischarge.doctor, ZxIeDischarge.admission_id, ZxIeDischarge.age).filter(
|
ZxIeDischarge.admission_id)
|
||||||
ZxIeDischarge.pk_phhd == pk_phhd).one()
|
.filter(ZxIeDischarge.pk_phhd == pk_phhd).one())
|
||||||
discharge_result = {
|
discharge_result = discharge._asdict()
|
||||||
"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,
|
|
||||||
}
|
|
||||||
json_result["discharge"] = discharge_result
|
json_result["discharge"] = discharge_result
|
||||||
|
|
||||||
cost = session.query(ZxIeCost.pk_ie_cost, ZxIeCost.name, ZxIeCost.admission_date, ZxIeCost.discharge_date,
|
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()
|
ZxIeCost.medical_expenses).filter(ZxIeCost.pk_phhd == pk_phhd).one()
|
||||||
cost_result = {
|
cost_result = cost._asdict()
|
||||||
"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,
|
|
||||||
}
|
|
||||||
json_result["cost"] = cost_result
|
json_result["cost"] = cost_result
|
||||||
|
|
||||||
phrecs = session.query(ZxPhrec.pk_phrec, ZxPhrec.pk_phhd, ZxPhrec.cRectype, ZxPhrec.cfjaddress).filter(
|
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)
|
response = requests.get(img_path)
|
||||||
image = Image.open(BytesIO(response.content)).convert("RGB")
|
image = Image.open(BytesIO(response.content)).convert("RGB")
|
||||||
size = image.width * image.height / 200000
|
font_size = image.width * image.height / 200000
|
||||||
font = ImageFont.truetype("./font/simfang.ttf", size=size)
|
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()
|
ZxOcr.pk_phrec == phrec.pk_phrec).all()
|
||||||
if not ocr:
|
if not ocr:
|
||||||
os.makedirs(f"./check_result/{pk_phhd}/0", exist_ok=True)
|
os.makedirs(f"./check_result/{pk_phhd}/0", exist_ok=True)
|
||||||
image.save(f"./check_result/{pk_phhd}/0/{img_name}")
|
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)
|
draw = ImageDraw.Draw(image)
|
||||||
for ocr_item in group_results:
|
for ocr_item in group_results:
|
||||||
result = json.loads(ocr_item.content)
|
result = json.loads(ocr_item.content)
|
||||||
|
rotation_angle = ocr_item.rotation_angle
|
||||||
x_offset = ocr_item.x_offset
|
x_offset = ocr_item.x_offset
|
||||||
y_offset = ocr_item.y_offset
|
y_offset = ocr_item.y_offset
|
||||||
for key in result:
|
for key in result:
|
||||||
for value in result[key]:
|
for value in result[key]:
|
||||||
box = value["bbox"][0]
|
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:
|
if x_offset:
|
||||||
box[0] += x_offset
|
box[0] += x_offset
|
||||||
box[2] += x_offset
|
box[2] += x_offset
|
||||||
@@ -106,7 +81,7 @@ def check_ie_result(pk_phhd):
|
|||||||
box[3] += y_offset
|
box[3] += y_offset
|
||||||
|
|
||||||
draw.rectangle(box, outline="red", width=2) # 绘制矩形
|
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) # 在矩形下方绘制文本
|
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)
|
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}")
|
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__':
|
if __name__ == '__main__':
|
||||||
check_ie_result(3572938)
|
check_ie_result(0)
|
||||||
|
|||||||
Reference in New Issue
Block a user