C# Sdcb.PaddleOCR 字符识别库
				
									
					
					
						 | 
						
							
							admin 
							
							
								2025年5月5日 23:20
								本文热度 1906
							
							 
						 | 
					
					
				 
				
Sdcb.PaddleOCR 是一个基于 PaddlePaddle 的 OCR(光学字符识别)库,旨在提供高效的文本检测和识别功能。它支持多种语言,并提供本地和在线模型供用户选择。该库的设计使得在不同平台(如 Windows 和 Linux)上都能方便地进行文本识别。这个比Tesseract OCR 好多了,不过要get的库比较多。
NuGet 包
Sdcb.PaddleOCR 提供了多个 NuGet 包,用户可以根据需要选择合适的版本:
- Sdcb.PaddleOCR: 主要的 PaddleOCR 库,基于 Sdcb.PaddleInference。
 - Sdcb.PaddleOCR.Models.LocalV3: 包含完整的本地 V3 模型,支持多种语言(约 105MB)。
 - Sdcb.PaddleOCR.Models.LocalV4: 包含完整的本地 V4 模型,支持多种语言(约 111MB)。
 
有关语言支持的详细信息,请参考 PaddleOCR 模型列表。
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.5/doc/doc_en/models_list_en.md
使用方法
using OpenCvSharp;
using Sdcb.PaddleInference;
using Sdcb.PaddleInference.Native;
using Sdcb.PaddleOCR;
using Sdcb.PaddleOCR.Models.Local;
using Sdcb.PaddleOCR.Models;
namespace AppPaddlePaddle
{
    internal class Program
    {
        static void Main(string[] args)
        {
            FullOcrModel model = LocalFullModels.ChineseV3;
            using (PaddleOcrAll all = new PaddleOcrAll(model, PaddleDevice.Mkldnn())
            {
                AllowRotateDetection = true, /* 允许识别有角度的文字 */
                Enable180Classification = false, /* 允许识别旋转角度大于90度的文字 */
            })
            {
                using (Mat src = Cv2.ImRead(@"temp_plate.png"))
                {
                    PaddleOcrResult result = all.Run(src);
                    Console.WriteLine("Detected all texts: \n" + result.Text);
                    foreach (PaddleOcrResultRegion region in result.Regions)
                    {
                        Console.WriteLine($"Text: {region.Text}, Score: {region.Score}, RectCenter: {region.Rect.Center}, RectSize:    {region.Rect.Size}, Angle: {region.Rect.Angle}");
                    }
                }
            }
            Console.ReadKey();
        }
    }
}
性能优化
- PaddleConfig.MkldnnCacheCapacity
 - PaddleOcrAll.Enable180Classification
 - PaddleOcrAll.AllowRotateDetection默认值为 
true,如果只处理水平文本,可以设置为 false 以提高准确性和性能。 
结论
Sdcb.PaddleOCR 是一个强大的 OCR 解决方案,适用于多种平台和语言。通过合理的配置和优化,用户可以实现高效的文本识别,满足不同场景的需求。
阅读原文:原文链接
该文章在 2025/5/6 12:04:46 编辑过