update save model func
diff --git a/PPOCRLabel/libs/shape.py b/PPOCRLabel/libs/shape.py
index 18cc4a8e76..97e2eb7238 100644
--- a/PPOCRLabel/libs/shape.py
+++ b/PPOCRLabel/libs/shape.py
@@ -48,6 +48,7 @@ class Shape(object):
 
     def __init__(self, label=None, line_color=None, difficult=False, key_cls="None", paintLabel=False):
         self.label = label
+        self.idx = 0
         self.points = []
         self.fill = False
         self.selected = False
diff --git "a/applications/\350\275\273\351\207\217\347\272\247\350\275\246\347\211\214\350\257\206\345\210\253.md" "b/applications/\350\275\273\351\207\217\347\272\247\350\275\246\347\211\214\350\257\206\345\210\253.md"
index 7012c7f4bb..1a63091b92 100644
--- "a/applications/\350\275\273\351\207\217\347\272\247\350\275\246\347\211\214\350\257\206\345\210\253.md"
+++ "b/applications/\350\275\273\351\207\217\347\272\247\350\275\246\347\211\214\350\257\206\345\210\253.md"
@@ -311,7 +311,6 @@ python tools/train.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml -o
 
 在上述命令中，通过`-o`的方式修改了配置文件中的参数。
 
-训练好的模型地址为: [det_ppocr_v3_finetune.tar](https://paddleocr.bj.bcebos.com/fanliku/license_plate_recognition/det_ppocr_v3_finetune.tar)
 
 **评估**
 
@@ -354,8 +353,6 @@ python3.7 deploy/slim/quantization/quant.py -c configs/det/ch_PP-OCRv3/ch_PP-OCR
     Eval.dataset.label_file_list=[/home/aistudio/data/CCPD2020/PPOCR/test/det.txt]
 ```
 
-训练好的模型地址为: [det_ppocr_v3_quant.tar](https://paddleocr.bj.bcebos.com/fanliku/license_plate_recognition/det_ppocr_v3_quant.tar)
-
 量化后指标对比如下
 
 |方案|hmeans| 模型大小 | 预测速度(lite) |
@@ -436,6 +433,12 @@ python tools/eval.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o \
     Eval.dataset.label_file_list=[/home/aistudio/data/CCPD2020/PPOCR/test/rec.txt]
 ```
 
+如需获取已训练模型，请扫码填写问卷，加入PaddleOCR官方交流群获取全部OCR垂类模型下载链接、《动手学OCR》电子书等全套OCR学习资料🎁
+<div align="left">
+<img src="https://ai-studio-static-online.cdn.bcebos.com/dd721099bd50478f9d5fb13d8dd00fad69c22d6848244fd3a1d3980d7fefc63e"  width = "150" height = "150" />
+</div>
+
+
 评估部分日志如下：
 ```bash
 [2022/05/12 19:52:02] ppocr INFO: load pretrain successful from models/ch_PP-OCRv3_rec_train/best_accuracy
@@ -528,7 +531,6 @@ python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o \
     Eval.dataset.data_dir=/home/aistudio/data/CCPD2020/PPOCR \
     Eval.dataset.label_file_list=[/home/aistudio/data/CCPD2020/PPOCR/test/rec.txt]
 ```
-训练好的模型地址为: [rec_ppocr_v3_finetune.tar](https://paddleocr.bj.bcebos.com/fanliku/license_plate_recognition/rec_ppocr_v3_finetune.tar)
 
 **评估**
 
@@ -570,7 +572,6 @@ python3.7 deploy/slim/quantization/quant.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_
     Eval.dataset.data_dir=/home/aistudio/data/CCPD2020/PPOCR \
     Eval.dataset.label_file_list=[/home/aistudio/data/CCPD2020/PPOCR/test/rec.txt]
 ```
-训练好的模型地址为: [rec_ppocr_v3_quant.tar](https://paddleocr.bj.bcebos.com/fanliku/license_plate_recognition/rec_ppocr_v3_quant.tar)
 
 量化后指标对比如下
 
diff --git a/ppocr/data/imaug/fce_targets.py b/ppocr/data/imaug/fce_targets.py
index 4d1903c0a7..8c64276e26 100644
--- a/ppocr/data/imaug/fce_targets.py
+++ b/ppocr/data/imaug/fce_targets.py
@@ -107,17 +107,20 @@ def resample_line(self, line, n):
         for i in range(1, n):
             current_line_len = i * delta_length
 
-            while current_line_len >= length_cumsum[current_edge_ind + 1]:
+            while current_edge_ind + 1 < len(length_cumsum) and current_line_len >= length_cumsum[current_edge_ind + 1]:
                 current_edge_ind += 1
+
             current_edge_end_shift = current_line_len - length_cumsum[
                 current_edge_ind]
+
+            if current_edge_ind >= len(length_list):
+                break
             end_shift_ratio = current_edge_end_shift / length_list[
                 current_edge_ind]
             current_point = line[current_edge_ind] + (line[current_edge_ind + 1]
                                                       - line[current_edge_ind]
                                                       ) * end_shift_ratio
             resampled_line.append(current_point)
-
         resampled_line.append(line[-1])
         resampled_line = np.array(resampled_line)
 
@@ -328,6 +331,8 @@ def generate_center_region_mask(self, img_size, text_polys):
             resampled_top_line, resampled_bot_line = self.resample_sidelines(
                 top_line, bot_line, self.resample_step)
             resampled_bot_line = resampled_bot_line[::-1]
+            if len(resampled_top_line) != len(resampled_bot_line):
+                continue
             center_line = (resampled_top_line + resampled_bot_line) / 2
 
             line_head_shrink_len = norm(resampled_top_line[0] -
diff --git a/ppocr/utils/save_load.py b/ppocr/utils/save_load.py
index b09f1db6e9..3647111fdd 100644
--- a/ppocr/utils/save_load.py
+++ b/ppocr/utils/save_load.py
@@ -177,9 +177,9 @@ def save_model(model,
             model.backbone.model.save_pretrained(model_prefix)
         metric_prefix = os.path.join(model_prefix, 'metric')
     # save metric and config
+    with open(metric_prefix + '.states', 'wb') as f:
+        pickle.dump(kwargs, f, protocol=2)
     if is_best:
-        with open(metric_prefix + '.states', 'wb') as f:
-            pickle.dump(kwargs, f, protocol=2)
         logger.info('save best model is to {}'.format(model_prefix))
     else:
         logger.info("save model in {}".format(model_prefix))
