[PaddlePaddle/PaddleOCR]Paddleocr 识别其中几张图片抛异常,识别其余图片正常

2024-05-15 543 views
0
  • 系统环境/System Environment:
  • 版本号/Version:Paddle: PaddleOCR: 问题相关组件/Related components:
  • 运行指令/Command Code:
  • 完整报错/Complete Error Message: paddle-bfloat 0.1.7 paddle-serving-server 0.9.0 paddle2onnx 1.0.1 paddlefsl 1.1.0 paddlehub 2.3.0 paddlenlp 2.4.0 paddleocr 2.6.1.1 paddlepaddle-gpu 2.3.2.post116

paddleocr --lang=ch --det=True --rec=True --image_dir=./test/42st.png [2022/11/27 11:09:04] ppocr DEBUG: Namespace(help='==SUPPRESS==', use_gpu=True, use_xpu=False, use_npu=False, ir_optim=True, use_tensorrt=False, min_subgraph_size=15, precision='fp32', gpu_mem=500, image_dir='./test/42st.png', page_num=0, det_algorithm='DB', det_model_dir='C:\Users\Administrator/.paddleocr/whl\det\ch\ch_PP-OCRv3_det_infer', det_limit_side_len=960, det_limit_type='max', det_box_type='quad', det_db_thresh=0.3, det_db_box_thresh=0.6, det_db_unclip_ratio=1.5, max_batch_size=10, use_dilation=False, det_db_score_mode='fast', det_east_score_thresh=0.8, det_east_cover_thresh=0.1, det_east_nms_thresh=0.2, det_sast_score_thresh=0.5, det_sast_nms_thresh=0.2, det_pse_thresh=0, det_pse_box_thresh=0.85, det_pse_min_area=16, det_pse_scale=1, scales=[8, 16, 32], alpha=1.0, beta=1.0, fourier_degree=5, rec_algorithm='SVTR_LCNet', rec_model_dir='C:\Users\Administrator/.paddleocr/whl\rec\ch\ch_PP-OCRv3_rec_infer', rec_image_inverse=True, rec_image_shape='3, 48, 320', rec_batch_num=6, max_text_length=25, rec_char_dict_path='C:\app\python3\lib\site-packages\paddleocr\ppocr\utils\ppocr_keys_v1.txt', use_space_char=True, vis_font_path='./doc/fonts/simfang.ttf', drop_score=0.5, e2e_algorithm='PGNet', e2e_model_dir=None, e2e_limit_side_len=768, e2e_limit_type='max', e2e_pgnet_score_thresh=0.5, e2e_char_dict_path='./ppocr/utils/ic15_dict.txt', e2e_pgnet_valid_set='totaltext', e2e_pgnet_mode='fast', use_angle_cls=False, cls_model_dir='C:\Users\Administrator/.paddleocr/whl\cls\ch_ppocr_mobile_v2.0_cls_infer', cls_image_shape='3, 48, 192', label_list=['0', '180'], cls_batch_num=6, cls_thresh=0.9, enable_mkldnn=False, cpu_threads=10, use_pdserving=False, warmup=False, sr_model_dir=None, sr_image_shape='3, 32, 128', sr_batch_num=1, draw_img_save_dir='./inference_results', save_crop_res=False, crop_res_save_dir='./output', use_mp=False, total_process_num=1, process_id=0, benchmark=False, save_log_path='./log_output/', show_log=True, use_onnx=False, output='./output', table_max_len=488, table_algorithm='TableAttn', table_model_dir=None, merge_no_span_structure=True, table_char_dict_path=None, layout_model_dir=None, layout_dict_path=None, layout_score_threshold=0.5, layout_nms_threshold=0.5, kie_algorithm='LayoutXLM', ser_model_dir=None, re_model_dir=None, use_visual_backbone=True, ser_dict_path='../train_data/XFUND/class_list_xfun.txt', ocr_order_method=None, mode='structure', image_orientation=False, layout=True, table=True, ocr=True, recovery=False, use_pdf2docx_api=False, lang='ch', det=True, rec=True, type='ocr', ocr_version='PP-OCRv3', structure_version='PP-StructureV2') [2022/11/27 11:09:06] ppocr INFO: **./test/42st.png** [2022/11/27 11:09:06] ppocr ERROR: error in loading image:./test/42st.png Traceback (most recent call last): File "C:\app\python3\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\app\python3\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\app\python3\Scripts\paddleocr.exe__main.py", line 7, in File "C:\app\python3\lib\site-packages\paddleocr\paddleocr.py", line 652, in main result = engine.ocr(img_path, File "C:\app\python3\lib\site-packages\paddleocr\paddleocr.py", line 534, in ocr dt_boxes, recres, = self.call__(img, cls) File "C:\app\python3\lib\site-packages\paddleocr\tools\infer\predict_system.py", line 70, in call ori_im = img.copy() AttributeError: 'NoneType' object has no attribute 'copy'

回答

2

尽量用全路径载入图片吧,读入图片的代码代替imread,img = cv2.imdecode(np.fromfile(picture_src,dtype=np.uint8),-1)

4

还有建议把paddlehub替换,不要用paddlehub去请求

0

看报错应该是输入图片有问题,检查一下图片路径或者图片是否损坏

5

看报错应该是输入图片有问题,检查一下图片路径或者图片是否损坏 ---图片没有损坏,可以正常查看。我怀疑是是否是图片尺寸的问题,图片我上传了,如下。用paddleocr命令识别失败,你们可以试试 andyjpaddle @andyjpaddle ocr_20221117_536658600404_0

9

还有建议把paddlehub替换,不要用paddlehub去请求

paddleocr提供了两种部署方式,我就是用hubserving部署的,请教下为什么建议把paddlehub替换? @jingsongliujing

0

尽量用全路径载入图片吧,读入图片的代码代替imread,img = cv2.imdecode(np.fromfile(picture_src,dtype=np.uint8),-1)

---图片没有损坏,可以正常查看。我怀疑是是否是图片尺寸的问题,图片我上传了,如下。用paddleocr命令识别失败,你们可以试试 andyjpaddle @jingsongliujing ocr_20221117_536658600404_0

8

嗯,我之前也遇到过这个错误,估计就是paddlehub的后处理有点问题,加上图片尺寸的问题没处理好,导致的这个问题,建议就是把hub去除

4

@jingsongliujing @andyjpaddle 应该和paddlehub没关系的,我只是用paddleocr命令直接识别图片,现在有多张图片都抛上面的错误,麻烦看下哈 paddleocr --lang=ch --det=True --rec=True --image_dir=./test/42st.png 42st d288h6

1

转成jpg格式试试吧,感觉有可能是图片的通道有关系,看看是几通道的图片,如果是两通道,要转成三通道

2

图片转成jpg格式,paddleocr识别成功了。 两通道转三通道,在paddleocr开源项目里可以做个兼容么? @jingsongliujing

3

这个兼容建议就是修改图片格式,因为底层要兼容的话,也是是opencv的读图方式,处理图片这样子的兼容,你不如在服务里做图像的预处理是一样的

8

帮你at官方吧 @andyjpaddle

0

paddleocr目前仅支持单通道(灰度图)和三通道的图片输入,两通道的目前不支持,而且两通道并不是很常见,可以自己加一个预处理转成三通道,然后调用ocr引擎哈

0
paddleocr目前仅支持单通道(灰度图)和三通道的图片输入,两通道的目前不支持,而且两通道并不是很常见,可以自己加一个预处理转成三通道,然后调用ocr引擎哈

@andyjpaddle 如果是训练模型,训练集中包含有两通道的图片作为训练数据,会对训练结果有影响吗?两通道的图片直接跳过不进行训练?

0

你好,我也发现服务端会报这个错,我复现了一下,根本原因是这种位深度为8的单通道图片进服务会报错,转base64再用cv2读取的时候会报错,针对这个问题,我提了一个修补的pr,你可以参考一下:https://github.com/PaddlePaddle/PaddleOCR/pull/8518 @waizao 麻烦官方也复现一下,同时paddlehub那边的serving也会出现这个问题 @andyjpaddle @ZeyuChen

1

paddleocr目前仅支持单通道(灰度图)和三通道的图片输入,两通道的目前不支持,而且两通道并不是很常见,可以自己加一个预处理转成三通道,然后调用ocr引擎哈

@andyjpaddle 如果是训练模型,训练集中包含有两通道的图片作为训练数据,会对训练结果有影响吗?两通道的图片直接跳过不进行训练?

是的,如果两通道读取错误会跳过