代码:
ocr = PaddleOCR(use_angle_cls=True, use_gpu=False)
img_path = '/home/jinrm/OCR_Model_7/PaddleOCR-release-2.3 2/img_path/Image_00002.jpg' # 这个是自己的图片,自行放置在代码目录下修改名称
result = ocr.ocr(img_path, cls=True)
for line in result:
print(line)
error log:
7 result = ocr.ocr(img_path, cls=True)
8 for line in result:
9 print(line)
/home/jinrm/OCR_Model_7/PaddleOCR-release-2.3 2/paddleocr.py in ocr(self, img, det, rec, cls)
341 img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
342 if det and rec:
--> 343 dt_boxes, rec_res = self.__call__(img, cls)
344 return [[box.tolist(), res] for box, res in zip(dt_boxes, rec_res)]
345 elif det and not rec:
/home/jinrm/OCR_Model_7/PaddleOCR-release-2.3 2/tools/infer/predict_system.py in __call__(self, img, cls)
79 len(img_crop_list), elapse))
80
---> 81 rec_res, elapse = self.text_recognizer(img_crop_list)
82 logger.debug("rec_res num : {}, elapse : {}".format(
83 len(rec_res), elapse))
/home/jinrm/OCR_Model_7/PaddleOCR-release-2.3 2/tools/infer/predict_rec.py in __call__(self, img_list)
261 self.autolog.times.stamp()
262 preds = outputs[0]
--> 263 rec_result = self.postprocess_op(preds)
264 for rno in range(len(rec_result)):
265 rec_res[indices[beg_img_no + rno]] = rec_result[rno]
/home/jinrm/OCR_Model_7/PaddleOCR-release-2.3 2/ppocr/postprocess/rec_postprocess.py in __call__(self, preds, label, *args, **kwargs)
113 if isinstance(preds, paddle.Tensor):
114 preds = preds.numpy()
--> 115 preds_idx = preds.argmax(axis=2)
116 preds_prob = preds.max(axis=2)
117 text = self.decode(preds_idx, preds_prob, is_remove_duplicate=True)
AxisError: axis 2 is out of bounds for array of dimension 2
preds张量的形状错误,打印下preds的shape找找原因
或者是不是preds.argmax(axis=2)的axis参数错了,维度是从0开始算的。你的preds张量时2维的。
建议还是先跑跑官方提供的例子,图片应该也有个压缩包可以下载,先跑通官方的例子,再查问题就好查了