PaddlePredictor(Detector) run failed
Describe the bug
新版3.0.1多线程跑时,很容易出现以下问题 System.Exception: PaddlePredictor(Detector) run failed. at Sdcb.PaddleOCR.PaddleOcrDetector.RunRawCore(Mat src, Size& resizedSize) at Sdcb.PaddleOCR.PaddleOcrDetector.Run(Mat src) at Sdcb.PaddleOCR.PaddleOcrAll.Run(Mat src, Int32 recognizeBatchSize)
Steps to reproduce the bug
-
多线程调用PaddleOcrAll.Run()容易出现上述问题 private static void FastCheck(FullOcrModel model) { using (PaddleOcrAll all = new(model) { AllowRotateDetection = true, Enable180Classification = true, }) { for (int i = 0; i < 20; i++) { Task.Run(() => { try { using (Mat src = Cv2.ImRead(@"C:\Users\Administrator\Desktop\local_test\0_a_src.jpg")) { PaddleOcrResult result = all.Run(src); Console.WriteLine("Detected all texts: \n" + result.Text); } } catch (Exception ex) { Console.WriteLine(ex); } }); }
Console.ReadLine();} }
我也遇到同样的问题, System.InvalidOperationException HResult=0x80131509 Message=OCR识别失败: PaddlePredictor(Detector) run failed. Source=WindowsFormsApp1 StackTrace: 在 WindowsFormsApp1.Ocr.OcrService.<>c__DisplayClass11_0.<RecognizeTextCoreAsync>b__0() 在 C:\Users\liuqiang\source\repos\WindowsFormsApp1\Ocr\OcrService.cs 中: 第 158 行 在 System.Threading.Tasks.Task`1.InnerInvoke() 在 System.Threading.Tasks.Task.Execute()
此异常最初是在此调用堆栈中引发的: Sdcb.PaddleOCR.PaddleOcrDetector.RunRawCore(OpenCvSharp.Mat, out OpenCvSharp.Size) Sdcb.PaddleOCR.PaddleOcrDetector.Run(OpenCvSharp.Mat) Sdcb.PaddleOCR.PaddleOcrAll.Run(OpenCvSharp.Mat, int) WindowsFormsApp1.Ocr.OcrService.RecognizeTextCoreAsync.AnonymousMethod__0() (位于 OcrService.cs 中)
内部异常 1: Exception: PaddlePredictor(Detector) run failed.
我一直使用同一张图片不断尝试识别 然后等待二分钟在使用同样的图片识别 触发该问题的概率 90%
我也与遇到这样的问题。我是单线程调用的。 每次 new 新的paddle实例可以
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.11.0.20250507" />
<PackageReference Include="Sdcb.PaddleInference" Version="3.0.1" />
<PackageReference Include="Sdcb.PaddleInference.runtime.win64.mkl" Version="3.1.0.54" />
<PackageReference Include="Sdcb.PaddleOCR" Version="3.0.1" />
<PackageReference Include="Sdcb.PaddleOCR.Models.Local" Version="3.0.1" />
<PackageReference Include="Sdcb.PaddleOCR.Models.LocalV4" Version="2.7.0.1" />
<PackageReference Include="Sdcb.PaddleOCR.Models.Online" Version="3.0.1" />
你们可以使用 V2.7.0.3版本试试,我目前回退到这个版本是可以支持多线程并发的。