تصحیح انحراف در پردازش تصویر یکی از وظایف بهینه سازی تصویر است. در بینایی کامپیوتر، ما باید دوربین ها و حسگرهای خود را به درستی قرار دهیم، اما این اغلب منجر به اعوجاج های بزرگ می شود. به طور مشابه، هنگام اسکن با اسکنر، گاهی اوقات تراز کردن تقریباً غیرممکن است. به همین دلیل، تصاویر و عکس های اسکن شده دارای یک انحراف (شیب) جزئی هستند. در این مقاله نحوه انجام تصحیح انحراف در پردازش تصویر با استفاده از سی شارپ را می آموزیم.
موضوعات زیر در این مقاله پوشش داده خواهد شد:
- C# Skew Correction Image Processing API
- تشخیص زاویه انحراف تصویر
- اصلاح خودکار انحراف
- تصحیح انحراف خودکار با فیلتر پیش پردازش
- تشخیص متن تصویر با تصحیح خودکار انحراف
- تصحیح انحراف دستی
- تصحیح انحراف دستی با فیلتر پیش پردازش
C# Skew Correction Image Processing API
برای اصلاحات انحراف، از Aspose.OCR برای NET API استفاده خواهیم کرد. API اجازه می دهد تا OCR را روی تصاویر اسکن شده، عکس های گوشی هوشمند، اسکرین شات ها، قسمت های یک تصویر و فایل های PDF اسکن شده انجام دهید. این امکان ذخیره نتایج متن شناخته شده را در قالبهای سند محبوب فراهم میکند.
لطفاً یا DLL API را دانلود کنید یا با استفاده از NuGet آن را نصب کنید.
PM> Install-Package Aspose.OCR
تشخیص زاویه انحراف تصویر در سی شارپ
API روش CalculateSkew(string) را ارائه می دهد که زاویه انحراف تصویر منبع ارائه شده را محاسبه می کند. با دنبال کردن مراحل زیر می توانیم به راحتی زاویه انحراف یک تصویر متنی را تشخیص دهیم:
- ابتدا یک نمونه از کلاس AsposeOCR ایجاد کنید.
- متد CalculateSkew() را فراخوانی کنید. مسیر تصویر را به عنوان آرگومان می گیرد.
- در نهایت زاویه انحراف محاسبه شده را نشان دهید.
کد نمونه زیر نحوه محاسبه زاویه انحراف تصویر در سی شارپ را نشان می دهد.
// این مثال کد نحوه محاسبه زاویه انحراف یک تصویر را نشان می دهد.
// یک نمونه از AsposeOcr ایجاد کنید
AsposeOcr recognitionEngine = new AsposeOcr();
// محاسبه زاویه انحراف
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");
// نمایش زاویه
Console.WriteLine($"Skew angle: {skew:N1}°");
Skew angle: 5.8°
تصحیح خودکار انحراف در سی شارپ
برای اصلاح خودکار انحراف، میتوانیم با دنبال کردن مراحل زیر، ویژگی RecognitionSettings.AutoSkew را در تنظیمات تشخیص فعال کنیم:
- ابتدا یک نمونه از کلاس AsposeOCR ایجاد کنید.
- سپس، یک شی از کلاس RecognitionSettings را مقداردهی اولیه کنید.
- سپس، ویژگی AutoSkew را روی true قرار دهید.
- پس از آن، متد RecognizeImage() را با تصویر منبع و شی RecognitionSettings فراخوانی کنید.
- در نهایت متن شناسایی شده را نشان دهید.
کد نمونه زیر نحوه اعمال تصحیح خودکار انحراف در سی شارپ را نشان می دهد.
// این مثال کد نحوه اعمال تصحیح خودکار انحراف را نشان می دهد.
// یک نمونه از AsposeOcr ایجاد کنید
AsposeOcr recognitionEngine = new AsposeOcr();
// در تنظیمات تشخیص، Deskew خودکار را فعال کنید
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;
// تشخیص تصویر
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// نمایش متن شناخته شده
Console.WriteLine(result.RecognitionText);
تصحیح انحراف خودکار با فیلتر پیش پردازش در سی شارپ
همچنین، میتوانیم فیلتر پیشپردازش AutoSkew را برای اصلاح خودکار انحراف اعمال کنیم و با دنبال کردن مراحل زیر، تصویر اصلاحشده را ذخیره کنیم:
- ابتدا یک نمونه از کلاس AsposeOCR ایجاد کنید.
- سپس یک شی از کلاس PreprocessingFilter را مقداردهی اولیه کنید.
- سپس، فیلتر AutoSkew() را اضافه کنید.
- پس از آن، متد PreprocessImage() را فراخوانی کنید تا فیلتر روی تصویر منبع اعمال شود.
- در نهایت تصویر تصحیح شده را ذخیره کنید.
کد نمونه زیر نحوه اعمال تصحیح خودکار انحراف را با فیلتر پیش پردازش در سی شارپ نشان می دهد.
// این مثال کد نحوه اعمال تصحیح خودکار انحراف را با استفاده از فیلتر پیش پردازش و ذخیره تصویر اصلاح شده نشان می دهد.
// یک نمونه از AsposeOcr ایجاد کنید
AsposeOcr recognitionEngine = new AsposeOcr();
// فیلتر رومیزی اضافه کنید
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
// تصویر از پیش پردازش شده را در فایل ذخیره کنید
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
}
تشخیص متن تصویر با تصحیح خودکار انحراف در سی شارپ
میتوانیم فیلتر پیشپردازش AutoSkew را اعمال کنیم و متن تصویر را با دنبال کردن مراحل زیر تشخیص دهیم:
- ابتدا یک نمونه از کلاس AsposeOCR ایجاد کنید.
- سپس یک شی از کلاس PreprocessingFilter را مقداردهی اولیه کنید.
- سپس، فیلتر AutoSkew() را اضافه کنید.
- در همین حال، یک نمونه از کلاس RecognitionSettings ایجاد کنید.
- در مرحله بعد، فیلترهایی را به ویژگی PreprocessingFilters اختصاص دهید.
- پس از آن، متد RecognizeImage() را با تصویر منبع و شی RecognitionSettings فراخوانی کنید.
- در نهایت متن شناسایی شده را نشان دهید.
کد نمونه زیر نحوه اعمال تصحیح خودکار انحراف و تشخیص متن در سی شارپ را نشان می دهد.
// این مثال کد نحوه اعمال تصحیح انحراف خودکار با استفاده از فیلتر پیش پردازش و تشخیص تصویر را نشان می دهد.
// یک نمونه از AsposeOcr ایجاد کنید
AsposeOcr recognitionEngine = new AsposeOcr();
// فیلتر رومیزی اضافه کنید
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
// فیلترهای پیش پردازش را به تنظیمات تشخیص اضافه کنید
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;
// تشخیص تصویر
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// نمایش نتایج
Console.WriteLine(result.RecognitionText);
تصحیح انحراف دستی در سی شارپ
برای اصلاح دستی انحراف، میتوانیم با مشخص کردن ویژگی SkewAngle در تنظیمات تشخیص، با دنبال کردن مراحل زیر، زاویه انحراف را به صورت دستی تعریف کنیم:
- ابتدا یک نمونه از کلاس AsposeOCR ایجاد کنید.
- سپس، یک شی از کلاس RecognitionSettings را مقداردهی اولیه کنید.
- سپس، ویژگی SkewAngle را تنظیم کنید.
- پس از آن، متد RecognizeImage() را با تصویر منبع و شی RecognitionSettings فراخوانی کنید.
- در نهایت متن شناسایی شده را نشان دهید.
کد نمونه زیر نحوه اعمال تصحیح انحراف دستی در سی شارپ را نشان می دهد.
// این مثال کد نحوه اعمال تصحیح انحراف دستی را نشان می دهد.
// یک نمونه از AsposeOcr ایجاد کنید
AsposeOcr recognitionEngine = new AsposeOcr();
// زاویه انحراف را به صورت دستی تنظیم کنید
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;
// تشخیص تصویر
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// نمایش نتایج
Console.WriteLine(result.RecognitionText);
تصحیح انحراف دستی با فیلتر پیش پردازش در سی شارپ
همچنین می توانیم با استفاده از فیلتر پیش پردازش Rotate، زاویه انحراف را به صورت دستی با چرخاندن تصویر به درجه مشخص شده تعیین کنیم.
لطفاً مراحل زیر را برای اعمال تصحیح انحراف به صورت دستی دنبال کنید:
- ابتدا یک نمونه از کلاس AsposeOCR ایجاد کنید.
- سپس یک شی از کلاس PreprocessingFilter را مقداردهی اولیه کنید.
- سپس، فیلتر Rotate() را اضافه کنید.
- در همین حال، یک نمونه از کلاس RecognitionSettings ایجاد کنید.
- در مرحله بعد، فیلترهایی را به ویژگی PreprocessingFilters اختصاص دهید.
- پس از آن، متد RecognizeImage() را با تصویر منبع و شی RecognitionSettings فراخوانی کنید.
- در نهایت متن شناسایی شده را نشان دهید.
کد نمونه زیر نحوه اعمال تصحیح انحراف دستی با فیلتر پیش پردازش در سی شارپ را نشان می دهد.
// این مثال کد نحوه اعمال تصحیح انحراف دستی و تشخیص متن تصویر را نشان می دهد.
// یک نمونه از AsposeOcr ایجاد کنید
AsposeOcr recognitionEngine = new AsposeOcr();
// تصویر را 90 درجه در خلاف جهت عقربه های ساعت بچرخانید
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));
// تصویر از پیش پردازش شده را در فایل برای اهداف اشکال زدایی ذخیره کنید
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(fs);
}
}
// فیلترهای پیش پردازش را به تنظیمات تشخیص اضافه کنید
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;
// تشخیص تصویر
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// نمایش نتایج
Console.WriteLine(result.RecognitionText);
مجوز ارزیابی رایگان دریافت کنید
برای امتحان Aspose.OCR برای دات نت بدون محدودیت ارزیابی، می توانید یک مجوز موقت رایگان دریافت کنید.
نتیجه
در این مقاله یاد گرفتیم که چگونه:
- انجام OCR و تشخیص متن روی تصاویر.
- اعمال فیلترها و پردازش تصاویر؛
- استفاده از تنظیمات تشخیص؛
- تصاویر تصحیح شده را با استفاده از سی شارپ ذخیره کنید.
علاوه بر اصلاح انحراف در پردازش تصویر با استفاده از C#، میتوانید با استفاده از مستندات درباره Aspose.OCR برای .NET API اطلاعات بیشتری کسب کنید. در صورت وجود هرگونه ابهامی، لطفاً با ما در تالار گفتمان پشتیبانی رایگان تماس بگیرید.