Example #1
0
def one_pred(img_path):
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")
    result = ocr.ocr(img_path, cls=True)
    image = Image.open(img_path).convert('RGB')
    boxes = [line[0] for line in result]
    txts = [line[1][0] for line in result]
    scores = [line[1][1] for line in result]
    im_show = draw_ocr(image,
                       boxes,
                       txts,
                       scores,
                       font_path='/doc/simfang.ttf')
    im_show = Image.fromarray(im_show)

    n = 0
    stR = ""
    for line in result:
        #print(line[1])
        n += 1
        texts = line[1][0]
        stR = stR + "," + str(texts)
        #print(texts)
    print(stR)
    im_show.show()
    return stR
def draw_server_result(image_file, res):
    img = cv2.imread(image_file)
    image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    if len(res) == 0:
        return np.array(image)
    keys = res[0].keys()
    if 'text_region' not in keys:  # for rec or clas, draw function is invalid
        logger.info("draw function is invalid for rec or clas!")
        return None
    elif 'text' not in keys:  # for ocr_det
        logger.info("draw text boxes only!")
        boxes = []
        for dno in range(len(res)):
            boxes.append(res[dno]['text_region'])
        boxes = np.array(boxes)
        draw_img = draw_boxes(image, boxes)
        return draw_img
    else:  # for ocr_system
        logger.info("draw boxes and texts!")
        boxes = []
        texts = []
        scores = []
        for dno in range(len(res)):
            boxes.append(res[dno]['text_region'])
            texts.append(res[dno]['text'])
            scores.append(res[dno]['confidence'])
        boxes = np.array(boxes)
        scores = np.array(scores)
        draw_img = draw_ocr(image,
                            boxes,
                            texts,
                            scores,
                            drop_score=0.5,
                            font_path="../../doc/simfang.ttf")
        return draw_img
Example #3
0
def img_word_translate(img_path):
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")
    result = ocr.ocr(img_path, cls=True)
    image = Image.open(img_path).convert('RGB')
    boxes = [line[0] for line in result]
    txts = [line[1][0] for line in result]
    scores = [line[1][1] for line in result]
    im_show = draw_ocr(image, boxes, txts, scores, font_path='/doc/simfang.ttf')
    im_show = Image.fromarray(im_show)

    n = 0
    stR = ""
    for line in result:
        # print(line[1])
        n += 1
        texts = line[1][0]
        if re.findall('[\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b]', texts):
            stR = stR  + str(texts)
        else:
            stR = stR + str(texts) + ","
        # print(texts)
    print(stR)
    translate(stR, "en", "zh-CN")
    im_show.show()
    return stR
Example #4
0
def one_pred(img_path):
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")
    result = ocr.ocr(img_path, cls=False)
    # print(result)
    n = 0
    stR = ""
    phone = ""  #电话
    shopName = ""  #店铺名
    describe = ""  #描述
    otherinfo = "没有其他信息"
    print("+++", result)
    for line in result:
        n += 1
        texts = line[1][0]
        if texts == "":
            continue
        if len(texts) < 2:
            continue
        r = test.pre(texts)
        if len(texts) < 3:
            continue
        if r == "商铺名":
            shopName = shopName + texts
            continue
        s = ms.pre(texts)
        if s == "描述":
            describe = describe + texts
            continue
        stR = stR + str(line[1][0]) + ":" + str(line[1][1]) + "\n"
        phones = texts.split("1")
        # print("++",phone)
        for i in phones:
            # print(i)
            if re.match(r'^[1-9]\d{9}$', i):
                a = "1" + i
                # print(a)
                phone = phone + ";" + a
            else:
                phone = " 图片中没有电话信息"
    phone = phone[1:]
    print("****", shopName, phone, describe, otherinfo)
    #return im_show.show()

    image = Image.open(img_path).convert('RGB')
    boxes = [line[0] for line in result]
    txts = [line[1][0] for line in result]
    scores = [line[1][1] for line in result]
    im_show = draw_ocr(image,
                       boxes,
                       txts,
                       scores,
                       font_path='/doc/simfang.ttf')
    im_show = Image.fromarray(im_show)
    # im_show.show()
    # im_show.save是保存识别后的图片
    fanhui_img = 'result.jpg'
    im_show.save(fanhui_img)

    return shopName, phone, describe, otherinfo, fanhui_img
Example #5
0
def main(args):
    image_file_list = get_image_file_list(args.image_dir)
    text_sys = TextSystem(args)
    is_visualize = True
    tackle_img_num = 0
    for image_file in image_file_list:
        img = cv2.imread(image_file)
        if img is None:
            logger.info("error in loading image:{}".format(image_file))
            continue
        starttime = time.time()
        tackle_img_num += 1
        if not args.use_gpu and args.enable_mkldnn and tackle_img_num % 30 == 0:
            text_sys = TextSystem(args)
        dt_boxes, rec_res = text_sys(img)
        elapse = time.time() - starttime
        print("Predict time of %s: %.3fs" % (image_file, elapse))
        dt_num = len(dt_boxes)
        dt_boxes_final = []
        txts_final = []  # add
        for dno in range(dt_num):
            text, score = rec_res[dno]
            if score >= 0.5:
                text_str = "%s, %.3f" % (text, score)
                print(text_str)
                dt_boxes_final.append(dt_boxes[dno])
                txts_final.append(rec_res[dno][0])  # add
        label_dic = dict(zip(txts_final, dt_boxes_final))
        print(label_dic)

        if is_visualize:
            image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
            boxes = dt_boxes
            txts = [rec_res[i][0] for i in range(len(rec_res))]
            scores = [rec_res[i][1] for i in range(len(rec_res))]

            draw_img = draw_ocr(image,
                                boxes,
                                txts,
                                scores,
                                draw_txt=True,
                                drop_score=0.5)
            draw_img_save = "./inference_results/"
            if not os.path.exists(draw_img_save):
                os.makedirs(draw_img_save)
            cv2.imwrite(
                os.path.join(draw_img_save, os.path.basename(image_file)),
                draw_img[:, :, ::-1])
            print("The visualized image saved in {}".format(
                os.path.join(draw_img_save, os.path.basename(image_file))))
Example #6
0
def one_pred(img_path):
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")
    result = ocr.ocr(img_path, cls=True)
    image = Image.open(img_path).convert('RGB')
    boxes = [line[0] for line in result]
    txts = [line[1][0] for line in result]
    scores = [line[1][1] for line in result]
    im_show = draw_ocr(image,
                       boxes,
                       txts,
                       scores,
                       font_path='/doc/simfang.ttf')
    im_show = Image.fromarray(im_show)
    im_show.show()
Example #7
0
from paddleocr import PaddleOCR
from tools.infer.utility import draw_ocr
ocr = PaddleOCR(
)  # need to run only once to download and load model into memory
img_path = r'F:\chrome\zrbdata\data\images\33.jpg'
result = ocr.ocr(img_path, rec=False)
print("+++", result)
for line in result:
    print(line)

# 显示结果
from PIL import Image

image = Image.open(img_path).convert('RGB')
im_show = draw_ocr(image,
                   result,
                   txts=None,
                   scores=None,
                   font_path='/path/to/PaddleOCR/doc/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
im_show.show()
Example #8
0
def pre_save(img_path,save_path,csv_path,m_filePicker11=None):
    ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory
    i = 0
    names =[]
    #abels = []
    imgs=[]
    one_qian_pic_path = ""
    one_hou_pic_path = ""
    #存放所有的图片路径
    n_qian_pic_path = []
    n_hou_pic_path = []

    j=0
    stR = ""

    # 启动窗口
    window.Show(True)

    jindu_len = len(os.listdir(img_path)) + 2
    print("共:"+str(jindu_len-2))
    window.m_gauge1.SetRange(jindu_len)
    dangqian_jindu = 1
    n=0

    for img in os.listdir(img_path):
        n+=1
        window.m_staticText11.SetLabel("正在识别:"+img_path+'/'+img)
        print("当前正在识别"+str(dangqian_jindu)+"-->"+"正在识别:"+img_path+'/'+img)
        window.m_gauge1.SetValue(dangqian_jindu)
        dangqian_jindu = dangqian_jindu + 1

        #动态显示进度条
        if dangqian_jindu==jindu_len:
            window.m_gauge1.SetValue(dangqian_jindu)
        print(img_path+'/'+img)
        i+=1
        result = ocr.ocr(img_path+'/'+img, cls=True)

        image = Image.open(img_path+'/'+img).convert('RGB')
        boxes = [line[0] for line in result]
        txts = [line[1][0] for line in result]
        scores = [line[1][1] for line in result]
        im_show = draw_ocr(image, boxes, txts, scores, font_path='/doc/simfang.ttf')
        im_show = Image.fromarray(im_show)
        # im_show.show()
        # im_show.save是保存识别后的图片
        sp = save_path+"/"+img
        im_show.save(sp)
        print("图片保存的位置:"+sp)
        #存储所有的图片路径
        n_qian_pic_path.append(img_path+'/'+img)
        n_hou_pic_path.append(save_path+"/"+img)
        if j==0:
            one_hou_pic_path = save_path+"/"+img
            one_qian_pic_path = img_path+'/'+img
        j = j + 1
        if str(result) == "None":
            continue
        for line in result:
            texts = line[1][0]
            if texts == "":
                continue

            if texts in names:
                continue
            texts = re.findall('[\u4e00-\u9fa50-9]+', texts, re.S)  # 只要字符串中的中文,字母,数字
            texts = "".join(texts)

            label = test.pre(texts)
            if len(texts) < 3:
                label = "非商铺名"
            if label == "商铺名":
                #print(texts, " :", label)
                stR = stR + str(img) + ":" + str(texts) + "\n"
                imgs.append(img)
                #labels.append(label)
                names.append(texts)
        dataframe = pd.DataFrame({'图片名': imgs, '商铺名称': names})
        if csv_path[-3:]=="xls":
            dataframe.to_excel(csv_path, index=True)
        elif csv_path[-3:]=="csv":
            dataframe.to_csv(csv_path, index=True,sep=',')
        else:
            print("请选择csv或者xls文件")
    stR = stR + "\n" + "共识别了" + str(n) + "张图片" + "\n" + "共检测出商铺名" + str(i) + "个\n"
    dangqian_jindu = dangqian_jindu + 1
    window.m_gauge1.SetValue(dangqian_jindu)
    print("当前正在识别" + str(dangqian_jindu))
    print(i)

    return stR,one_qian_pic_path,one_hou_pic_path,n_qian_pic_path,n_hou_pic_path
def main(args):
    image_file_list = get_image_file_list(args.image_dir)
    templates = get_templates(args.template_dir)
    text_sys = TextSystem(args)
    is_visualize = True
    tackle_img_num = 0
    for image_file in image_file_list:
        img, flag = check_and_read_gif(image_file)
        if not flag:
            img = cv2.imread(image_file)
        if img is None:
            logger.info("error in loading image:{}".format(image_file))
            continue
        starttime = time.time()
        tackle_img_num += 1
        if not args.use_gpu and args.enable_mkldnn and tackle_img_num % 30 == 0:
            text_sys = TextSystem(args)
        dt_boxes, rec_res = text_sys(img)
        elapse = time.time() - starttime
        print("Predict time of %s: %.3fs" % (image_file, elapse))
        drop_score = 0.5

        match_results = text_match(templates,
                                   dt_boxes,
                                   rec_res,
                                   drop_score=drop_score)
        remove_invalid_results(templates,
                               match_results,
                               dt_boxes,
                               rec_res,
                               drop_score=drop_score)

        ocr_results = []

        for match_result in match_results:
            ocr_result = {}

            for partition_type, match_dict in match_result.items():
                ocr_dict = {}

                if partition_type == 'head':
                    continue

                if partition_type == 'image_type':
                    ocr_dict[partition_type] = match_dict
                    continue

                for partition_id, results in match_dict.items():
                    for result in results:
                        ocr_dict.setdefault(partition_id, [])
                        ocr_patition_dict = {
                            'text': result['text'],
                            # 'points': result['points'].tolist(),
                            'confidence': result['score']
                        }

                        ocr_dict[partition_id].append(ocr_patition_dict)

                ocr_result[partition_type] = ocr_dict

            ocr_results.append(ocr_result)

        print('ocr_results:', ocr_results)

        # dt_num = len(dt_boxes)
        # for dno in range(dt_num):
        #     dt_box = dt_boxes[dno]
        #     text, score = rec_res[dno]
        #     if score >= drop_score:
        #         text_str = "%s, %.3f" % (text, score)
        #         print(text_str, dt_box)

        #         post_process(templates, text, dt_box)

        if is_visualize:
            image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
            boxes = dt_boxes
            txts = [rec_res[i][0] for i in range(len(rec_res))]
            scores = [rec_res[i][1] for i in range(len(rec_res))]

            draw_img = draw_ocr(image,
                                boxes,
                                txts,
                                scores,
                                draw_txt=True,
                                drop_score=drop_score)
            draw_img_save = "./inference_results/"
            if not os.path.exists(draw_img_save):
                os.makedirs(draw_img_save)
            cv2.imwrite(
                os.path.join(draw_img_save, os.path.basename(image_file)),
                draw_img[:, :, ::-1])
            print("The visualized image saved in {}".format(
                os.path.join(draw_img_save, os.path.basename(image_file))))
Example #10
0
def one_pred(img_path):
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")
    save_path = img_path
    result = ocr.ocr(img_path, cls=True)
    image = Image.open(img_path).convert('RGB')
    boxes = [line[0] for line in result]
    txts = [line[1][0] for line in result]
    scores = [line[1][1] for line in result]
    im_show = draw_ocr(image,
                       boxes,
                       txts,
                       scores,
                       font_path='/doc/simfang.ttf')
    im_show = Image.fromarray(im_show)
    n_qian_pic_path = []
    n_hou_pic_path = []
    # print(result)
    n = 0
    stR = ""
    name = ""
    all = ""
    phone = ""  #电话
    shopName = ""  #店铺名
    describe = ""  #描述
    otherinfo = "没有其他信息"
    n_qian_pic_path.append(img_path + '/' + path[-3:])
    n_hou_pic_path.append(save_path + "/" + path[-3:])
    for line in result:
        n += 1
        texts = line[1][0]

        if len(texts) < 4:
            nm = name_test.pre(texts)
            if nm == "姓名":
                name = name + texts

        nm1 = re.findall('[\u4e00-\u9fa5]+', texts[:3], re.S)
        nm = name_test.pre(nm1)
        if nm == "姓名":
            name = name + str(nm1)
        if texts[0] == "东":
            a1 = texts
        r = name_test.pre(texts)
        if len(texts) < 2:
            continue
        if r == "商铺名":
            shopName = shopName + texts
            continue
        if texts[0] == "孙":
            a2 = re.findall('[\u4e00-\u9fa5]+', texts, re.S)
        s = ms.pre(texts)
        if s == "描述":
            describe = describe + texts
            continue
        stR = stR + str(line[1][0]) + ":" + str(line[1][1]) + "\n"
        phones = texts.split("1")
        if texts[:2] == "地址":
            a3 = texts
        if texts[:2] == "电话":
            a4 = re.findall('[0-9]+', texts, re.S)
        if re.match(r'^[0-9]\d{9,12}$', texts):
            phone = "1" + texts
    # print("++",phone)

        for i in phones:
            # print(i)
            if re.match(r'^[0-9]\d{9}$', i):
                a = "1" + i
                # print(a)
                phone = phone + ";" + a
    # 存储所有的图片路径

    phone = phone[1:]
    all = all + "\n公司名称:" + str(a1) + "\n姓名:" + "".join(
        a2) + "\n手机:" + phone + "\n" + str(a3) + "\n电话:" + "".join(
            a4[:2]) + ";" + "".join(a4[2:])
    #print("+++",name)
    print(all)
    one_hou_pic_path = save_path + "/" + path[-3:]
    one_qian_pic_path = img_path + '/' + path[-3:]
    # print("****",shopName,phone,describe,otherinfo)
    #return im_show.show()
    im_show.show()
    return shopName, phone, describe, otherinfo, one_qian_pic_path, one_hou_pic_path
Example #11
0
def pre_save(img_path,save_path,csv_path,m_filePicker11=None):
    ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory
    i = 0
    names =[]
    #abels = []
    imgs=[]
    one_qian_pic_path = ""
    one_hou_pic_path = ""
    #存放所有的图片路径
    n_qian_pic_path = []
    n_hou_pic_path = []
    j=0
    stR = ""
    # 启动窗口
    window.Show(True)

    jindu_len = len(os.listdir(img_path)) + 2
    print("共:"+str(jindu_len-2))
    window.m_gauge1.SetRange(jindu_len)
    dangqian_jindu = 1
    n=0
    aaa = []
    for img in os.listdir(img_path):
        n+=1
        window.m_staticText11.SetLabel("正在识别:"+img_path+'/'+img)
        print("当前正在识别"+str(dangqian_jindu)+"-->"+"正在识别:"+img_path+'/'+img)
        window.m_gauge1.SetValue(dangqian_jindu)
        dangqian_jindu = dangqian_jindu + 1

        #动态显示进度条
        if dangqian_jindu==jindu_len:
            window.m_gauge1.SetValue(dangqian_jindu)
        print(img_path+'/'+img)
        i += 1
        result = ocr.ocr(img_path+'/'+img, cls=True)
        image = Image.open(img_path+'/'+img).convert('RGB')
        boxes = [line[0] for line in result]
        txts = [line[1][0] for line in result]
        scores = [line[1][1] for line in result]
        im_show = draw_ocr(image, boxes, txts, scores, font_path='/doc/simfang.ttf')
        im_show = Image.fromarray(im_show)
        # im_show.show()
        # im_show.save是保存识别后的图片
        #存储所有的图片路径
        n_qian_pic_path.append(img_path+'/'+img)
        n_hou_pic_path.append(save_path+"/"+img)

        for line in result:
            if line[1][0] =="":
                continue
            if len(line) < 6:
                continue
            # print("+++",line)
            car_board = one_pred(str(line[1][0]))
            aaa.append(car_board)
            #print("***",car_board)

        if j == 0:
            one_hou_pic_path = save_path+"/"+img
            one_qian_pic_path = img_path+'/'+img
        j = j + 1
        if str(result) == "None":
            continue
        dataframe = pd.DataFrame({'图片名': imgs, '车牌号': names})
        if csv_path[-3:]=="xls":
            dataframe.to_excel(csv_path, index=True)
        elif csv_path[-3:]=="csv":
            dataframe.to_csv(csv_path, index=True,sep=',')
        else:
            print("请选择csv或者xls文件")

    for i in aaa:
        if i != None:
            stR = stR + str(i) + "\n"

    dangqian_jindu = dangqian_jindu + 1
    window.m_gauge1.SetValue(dangqian_jindu)
    print("当前正在识别" + str(dangqian_jindu))
    print(i)
    print(stR)
    return stR,one_qian_pic_path,one_hou_pic_path,n_qian_pic_path,n_hou_pic_path
Example #12
0
from paddleocr import PaddleOCR
from tools.infer.utility import draw_ocr
# 模型路径下必须含有model和params文件
ocr = PaddleOCR(det_model_dir='{your_det_model_dir}',
                rec_model_dir='{your_rec_model_dir}',
                rec_char_dict_path='{your_rec_char_dict_path}',
                cls_model_dir='{your_cls_model_dir}',
                use_angle_cls=True)
img_path = 'PaddleOCR/doc/imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)

# 显示结果
from PIL import Image
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image,
                   boxes,
                   txts,
                   scores,
                   font_path='/path/to/PaddleOCR/doc/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
Example #13
0
def one_pred(img_path):
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")
    result = ocr.ocr(img_path, cls=True)
    image = Image.open(img_path).convert('RGB')
    boxes = [line[0] for line in result]
    txts = [line[1][0] for line in result]
    scores = [line[1][1] for line in result]
    im_show = draw_ocr(image,
                       boxes,
                       txts,
                       scores,
                       font_path='/doc/simfang.ttf')
    im_show = Image.fromarray(im_show)
    # im_show.show()
    # im_show.save是保存识别后的图片
    im_show.save("img/result_img/result.jpg")
    n = 0
    stR = ""
    phone = ""  #电话
    shopName = ""  #店铺名
    describe = ""  #描述
    for line in result:
        texts = line[1][0]
        if texts == "":
            continue
        if len(texts) < 2:
            continue
        # print(line[1])
        n += 1
        stR = stR + str(texts) + ":" + str(texts) + "\n"

        texts = re.findall('[\u4e00-\u9fa50-9]+', texts,
                           re.S)  # 只要字符串中的中文,字母,数字
        texts = "".join(texts)

        if len(texts) < 3:
            continue
        r = test.pre(texts)
        if r == "商铺名":
            shopName = shopName + texts + ','
            continue
        s = ms.pre(texts)
        if s == "描述":
            describe = describe + texts
            continue
        # print("+++",texts)

        if re.match(r'^[1-9]\d{11}$', texts) or len(texts) == 11:
            phone = str(texts)
            continue
        else:
            phones = texts.split("1")
            # print("++",phone)
            for i in phones:
                # print(i)
                if re.match(r'^[1-9]\d{7,11}$', i):
                    a = "1" + i
                    # print(a)
                    phone = phone + a + ";"
                    continue
    stR = stR + "\n" + "共识别出" + str(
        n
    ) + "段文本" + "\n其中商铺名为:" + shopName  # + "\n电话为:" +str(phone) # + "\n描述为:"+describe
    print(stR)
    return stR
Example #14
0
def main(args):
    image_file_list = get_image_file_list(args.image_dir)
    text_sys = TextSystem(args)
    is_visualize = True
    tackle_img_num = 0
    for image_file in image_file_list:
        img = cv2.imread(image_file)
        # print(image_file)
        if img is None:
            logger.info("error in loading image:{}".format(image_file))
            continue
        starttime = time.time()
        tackle_img_num += 1
        if not args.use_gpu and args.enable_mkldnn and tackle_img_num % 30 == 0:
            text_sys = TextSystem(args)
        dt_boxes, rec_res = text_sys(img)
        elapse = time.time() - starttime
        print("Predict time of %s: %.3fs" % (image_file, elapse))
        dt_num = len(dt_boxes)
        dt_boxes_final = []
        txts_final = []  # add
        for dno in range(dt_num):
            text, score = rec_res[dno]
            if score >= 0.5:
                text_str = "%s, %.3f" % (text, score)
                # print(text_str)
                dt_boxes_final.append(dt_boxes[dno])
                txts_final.append(rec_res[dno][0])  # add
        '''
        file_info_list = {}
        file_all = json.loads(json.dumps(file_info_list))
        file_list = []
        mark_out = []
        image_result = dict()
        image_result['fileUrl'] = './data/img'
        for i in range(len(txts_final)):
            label_dic = dict()
            label_dic['MarkLabel'] = txts_final[i]
            label_dic['Points'] = dt_boxes_final[i]
            mark_out.append(label_dic)
        image_result['MarkOut'] = mark_out
        file_list.append(image_result)
        file_all['fileInfoList'] = file_list
        with open("./data.json", "w", encoding='utf8') as f:
            json.dump(file_all, f, ensure_ascii=False, cls=NpEncoder, indent=4)
        '''
        image_info = {}
        image_label_info = json.loads(json.dumps(image_info))
        image_label_info['version'] = '4.5.6'
        image_label_info['flags'] = {}
        shapes = []
        # image_result['fileUrl'] = './data/img'
        for i in range(len(txts_final)):
            label_dic = dict()
            label_dic['label'] = txts_final[i]
            label_dic['points'] = dt_boxes_final[i]
            label_dic['group_id'] = 1
            label_dic['shape_type'] = 'polygon'
            label_dic['flags'] = {}
            shapes.append(label_dic)
        image_label_info['shapes'] = shapes
        img_name = os.path.basename(image_file)
        dir_name = './doc/imgs/'
        image_path = dir_name + img_name
        image_label_info['imagePath'] = img_name  # can be modified
        with open(image_path, 'rb') as f:
            base64_data = base64.b64encode(f.read())
            img_base64 = base64_data.decode()
        image_label_info['imageData'] = img_base64
        image_label_info['imageHeight'] = np.array(img).shape[0]
        image_label_info['imageWidth'] = np.array(img).shape[1]

        with open(dir_name + img_name.split('.')[0] + ".json",
                  "w",
                  encoding='utf8') as f:
            json.dump(image_label_info,
                      f,
                      ensure_ascii=False,
                      cls=NpEncoder,
                      indent=2)

        if is_visualize:
            image = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
            boxes = dt_boxes
            txts = [rec_res[i][0] for i in range(len(rec_res))]
            scores = [rec_res[i][1] for i in range(len(rec_res))]

            draw_img = draw_ocr(image,
                                boxes,
                                txts,
                                scores,
                                draw_txt=True,
                                drop_score=0.5)
            draw_img_save = "./inference_results/"
            if not os.path.exists(draw_img_save):
                os.makedirs(draw_img_save)
            cv2.imwrite(
                os.path.join(draw_img_save, os.path.basename(image_file)),
                draw_img[:, :, ::-1])
            print("The visualized image saved in {}".format(
                os.path.join(draw_img_save, os.path.basename(image_file))))