PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
42.97k stars 7.72k forks source link

使用PaddleOCR调用,部分图片处理出错 could not execute a primitive #8607

Closed chenyu0 closed 1 year ago

chenyu0 commented 1 year ago

请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem

andyjiang1116 commented 1 year ago

paddle版本是多少?

chenyu0 commented 1 year ago

paddlepaddle 版本 2.3.2

andyjiang1116 commented 1 year ago

可以提供下问题复现代码吗,我这边循环多次开启mkldnn预测都是正常的

chenyu0 commented 1 year ago

代码很简单,就是上述所描述的

OCR = PaddleOCR(enable_mkldnn=True, use_tensorrt=True, use_angle_cls=False, use_gpu=False)
result = OCR.ocr(pic, cls=True) 

我在本地使用windows也没有复现到具体的问题,但是在服务器上启动,就会较频繁偶现此问题

chenyu0 commented 1 year ago

详细代码如下:

OCR = PaddleOCR(enable_mkldnn=True, use_tensorrt=True, use_angle_cls=False, use_gpu=False)
class OcrServer:
    def ocrpic(self, pic):
        result = OCR.ocr(pic, cls=True)
        resultdata = []
        if result:
            for line in result:
                # ...
                # resultdata.append
        return resultdata
andyjiang1116 commented 1 year ago

我这边没有复现出你的这个问题,可以用try来处理一下

OCR = PaddleOCR(enable_mkldnn=True, use_tensorrt=False, use_angle_cls=False, use_gpu=False)
try:
    result = OCR.ocr(pic, cls=True) 
except:
    OCR = PaddleOCR(enable_mkldnn=True, use_tensorrt=False, use_angle_cls=False, use_gpu=False)
    result = OCR.ocr(pic, cls=False) 

另外你的参数要纠正一下,use_tensorrt=Trueuse_gpu=True时才生效,use_angle_clscls也要一致

chenyu0 commented 1 year ago

感谢,我尝试一下

isXuedingesCat commented 1 year ago

我这里在Linux上也有这个问题,window下没有出现,现在的解决方式是不使用预先构建模型的办法,在每一次处理图片时重新生成OCR模型。

bigmover commented 8 months ago

可以提供下问题复现代码吗,我这边循环多次开启mkldnn预测都是正常的 是使用多线程调用还是for 循环

bigmover commented 8 months ago

我这边没有复现出你的这个问题,可以用try来处理一下

OCR = PaddleOCR(enable_mkldnn=True, use_tensorrt=False, use_angle_cls=False, use_gpu=False)
try:
    result = OCR.ocr(pic, cls=True) 
except:
    OCR = PaddleOCR(enable_mkldnn=True, use_tensorrt=False, use_angle_cls=False, use_gpu=False)
    result = OCR.ocr(pic, cls=False) 

另外你的参数要纠正一下,use_tensorrt=Trueuse_gpu=True时才生效,use_angle_clscls也要一致

请教一下,这里重新初始化是为了什么(这样会导致耗时增加)?有其他的解决方法吗?

swap453 commented 3 months ago

@chenyu0 is this issue resolved, I am running into same issue, any insights would be helpful

uniqlo1 commented 3 months ago

请问现在这个问题有解决吗?在不关闭mkldnn加速的情况下

pengpengno commented 2 months ago

same in ubuntu 20.04 , wait feedback

swap453 commented 2 months ago

请问现在这个问题有解决吗?在不关闭mkldnn加速的情况

The issue is resolved, but the solution is not ideal. Calling Paddle OCR every time instead of declaring it once helped avoid the error, but it negatively affects processing time.

swap453 commented 2 months ago

I am facing this issue only on docker, on my local its running fine

uniqlo1 commented 2 months ago

在 Ubuntu 20.04 中相同,等待反馈

请问您能提供您出现该错误的代码吗,可以查看#13407,您是否可以将复制的代码提供给LLee233做一个复现?以检查该问题。

uniqlo1 commented 2 months ago

我只在docker上遇到这个问题,在我的本地运行良好

请问您能提供您出现该错误的代码吗,可以查看#13407,您是否可以将复制的代码提供给LLee233做一个复现?以检查该问题。

cxiaowen commented 2 months ago

这个问题解决没,我也是出现这个问题,换了几个版本

uniqlo1 commented 2 months ago

这个问题解决没,我也是出现这个问题,换了几个版本

请问您能提供代码以供参考吗?非常感谢

lakwsh commented 2 weeks ago

遇到了同样的问题,对于同一张图片重复执行ocr特别容易复现

AlanWu3115 commented 2 weeks ago

安装paddle-gpu 使用gpu 几乎不会报错

但是cpu预测,遇到了同样的问题,安装有paddle-gpu,但不使用gpu,转而使用cpu预测时,对于同一张图片重复执行ocr特别容易复现。 如下是我的环境,Inetl i9 12900HX显卡,RTX3060 GPU 140w (paddleocrv4) PS D:\3\paper_rec> nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2023 NVIDIA Corporation Built on Fri_Sep__8_19:56:38_Pacific_Daylight_Time_2023 Cuda compilation tools, release 12.3, V12.3.52 Build cuda_12.3.r12.3/compiler.33281558_0 (paddleocrv4) PS D:\3\paper_rec> pip list
Package Version


albucore 0.0.15 albumentations 1.4.10 annotated-types 0.7.0 anyio 4.4.0 astor 0.8.1 beautifulsoup4 4.12.3 blinker 1.8.2 bs4 0.0.2 certifi 2024.8.30 charset-normalizer 3.3.2 click 8.1.7 colorama 0.4.6 coloredlogs 15.0.1 contourpy 1.3.0 cycler 0.12.1 Cython 3.0.11 decorator 5.1.1 docx 0.2.4 exceptiongroup 1.2.1 Flask 3.0.3 flatbuffers 24.3.25 fonttools 4.53.1 h11 0.14.0 httpcore 1.0.5 httpx 0.27.0 humanfriendly 10.0 idna 3.8 imageio 2.35.1 imgaug 0.4.0 itsdangerous 2.2.0 Jinja2 3.1.4 joblib 1.4.2 kiwisolver 1.4.7 lazy_loader 0.4 lmdb 1.5.1 lxml 5.3.0 MarkupSafe 2.1.5 matplotlib 3.9.2 mpmath 1.3.0 networkx 3.3 numpy 1.26.4 nvidia-cublas-cu12 12.3.4.1 nvidia-cuda-nvrtc-cu12 12.5.40 nvidia-cuda-runtime-cu12 12.3.101 nvidia-cudnn-cu12 9.0.0.312 nvidia-cufft-cu12 11.2.1.3 nvidia-curand-cu12 10.3.5.147 nvidia-cusolver-cu12 11.6.1.9 nvidia-cusparse-cu12 12.3.1.170 nvidia-nvjitlink-cu12 12.5.40 onnxruntime-gpu 1.19.2 opencv-contrib-python 4.10.0.84 opencv-python 4.10.0.84 opencv-python-headless 4.10.0.84 opt-einsum 3.3.0 packaging 24.1 paddlepaddle-gpu 3.0.0b1 pillow 10.4.0 pip 24.2 protobuf 5.27.1 pyclipper 1.3.0.post5 pydantic 2.9.1 pydantic_core 2.23.3 pyparsing 3.1.4 pyreadline3 3.4.3 python-dateutil 2.9.0.post0 python-docx 1.1.2 PyYAML 6.0.2 rapidfuzz 3.9.7 requests 2.32.3 scikit-image 0.24.0 scikit-learn 1.5.2 scipy 1.14.1 setuptools 72.1.0 shapely 2.0.6 six 1.16.0 sniffio 1.3.1 some-package 0.1 soupsieve 2.6 sympy 1.13.2 threadpoolctl 3.5.0 tifffile 2024.8.30 tqdm 4.66.5 typing_extensions 4.12.2 urllib3 2.2.3 Werkzeug 3.0.4 wheel 0.44.0

AlanWu3115 commented 2 weeks ago

遇到了同样的问题,对于同一张图片重复执行ocr特别容易复现

+1 试试gpu预测,但是我这边就是可能会用cpu的方案,gpu预测推理快很多,这边会测试一下使用cpu版本的paddle看看是否解决的

lakwsh commented 2 weeks ago

遇到了同样的问题,对于同一张图片重复执行ocr特别容易复现

+1 试试gpu预测,但是我这边就是可能会用cpu的方案,gpu预测推理快很多,这边会测试一下使用cpu版本的paddle看看是否解决的

主要是我服务器没有gpu...我只能用cpu的解决方案,我现在的处理方式是把输入图像算一遍hash,对于同一张图标直接返回缓存结果,还有就是在PaddleOCR.ocr套一层try except,出现异常的时候重新调用一次PaddleOCR初始化。

AlanWu3115 commented 1 week ago

遇到了同样的问题,对于同一张图片重复执行ocr特别容易复现

+1 试试gpu预测,但是我这边就是可能会用cpu的方案,gpu预测推理快很多,这边会测试一下使用cpu版本的paddle看看是否解决的

主要是我服务器没有gpu...我只能用cpu的解决方案,我现在的处理方式是把输入图像算一遍hash,对于同一张图标直接返回缓存结果,还有就是在PaddleOCR.ocr套一层try except,出现异常的时候重新调用一次PaddleOCR初始化。

参考https://github.com/PaddlePaddle/PaddleOCR/issues/3313 实际也都是自行解决的,官方没给出十分具体的方案,GPU版本是没问题的,CPU的坑比较多