import cv2 from db import MysqlSession from db.mysql import ZxIeOcrerror from photo_mask.photo_mask import handle_image_for_mask, get_mask_layout from ucloud import ucloud from util import image_util if __name__ == '__main__': session = MysqlSession() ocr_errors = (session.query(ZxIeOcrerror.pk_phrec, ZxIeOcrerror.cXm, ZxIeOcrerror.cSfzh, ZxIeOcrerror.cfjaddress) .filter(ZxIeOcrerror.checktime.is_(None)).order_by(ZxIeOcrerror.pk_phrec.desc()).limit(50).all()) session.close() for ocr_error in ocr_errors: final_img_url = ucloud.get_private_url(ocr_error.cfjaddress, "drg100") final_image = image_util.read(final_img_url) cv2.imwrite(f"./mask_optimization_result/answer/{ocr_error.cfjaddress}.jpg", final_image) img_url = ucloud.get_private_url(ocr_error.cfjaddress, "drg2015") if not img_url: # 没有自动涂抹的图片 img_url = ucloud.get_private_url(ocr_error.cfjaddress, "drg103") name = ocr_error.cXm id_card_num = ocr_error.cSfzh image = image_util.read(img_url) # image = image_util.rotate(image, 90) split_results = image_util.split(image) for split_result in split_results: to_mask_img, x_offset, y_offset = handle_image_for_mask(split_result) results = get_mask_layout(to_mask_img, name, id_card_num) if results: is_masked = True for result in results: result = ( result[0] + x_offset, result[1] + y_offset, result[2] + x_offset, result[3] + y_offset, ) cv2.rectangle(image, (int(result[0]), int(result[1])), (int(result[2]), int(result[3])), (0, 0, 0), -1, 0) cv2.imwrite(f"./mask_optimization_result/{ocr_error.cfjaddress}.jpg", image)