การแก้ไขความเอียงในการประมวลผลภาพเป็นงานของการเพิ่มประสิทธิภาพภาพ ในการมองเห็นด้วยคอมพิวเตอร์ เราจำเป็นต้องวางตำแหน่งกล้องและเซ็นเซอร์ของเราให้ถูกต้อง แต่สิ่งนี้มักจะนำไปสู่การบิดเบือนอย่างมาก ในทำนองเดียวกัน เมื่อสแกนด้วยสแกนเนอร์ บางครั้งการจัดตำแหน่งแทบจะเป็นไปไม่ได้เลย ด้วยเหตุนี้ รูปภาพและภาพถ่ายที่สแกนจึงมีความเอียงเล็กน้อย (เอียง) ในบทความนี้ เราจะมาเรียนรู้วิธีการแก้ไขความเอียงในการประมวลผลภาพโดยใช้ C#
หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:
- API การประมวลผลภาพแก้ไขการเอียง C#
- ตรวจจับมุมเอียงของภาพ
- แก้ไขความเอียงอัตโนมัติ
- การแก้ไขความเอียงอัตโนมัติด้วยตัวกรองการประมวลผลล่วงหน้า
- จดจำข้อความรูปภาพด้วยการแก้ไขความเอียงอัตโนมัติ
- การแก้ไขความเอียงแบบแมนนวล
- การแก้ไขความเอียงแบบแมนนวลด้วยตัวกรองการประมวลผลล่วงหน้า
API การประมวลผลภาพแก้ไขการเอียง C#
สำหรับการแก้ไขความเอียง เราจะใช้ API Aspose.OCR for .NET API อนุญาตให้ดำเนินการ OCR กับรูปภาพที่สแกน ภาพถ่ายจากสมาร์ทโฟน ภาพหน้าจอ พื้นที่ของรูปภาพ และ PDF ที่สแกน ช่วยให้สามารถบันทึกผลลัพธ์ข้อความที่รู้จักใน รูปแบบเอกสารยอดนิยม
โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.OCR
ตรวจจับมุมเอียงของภาพใน C#
API มีเมธอด CalculateSkew(string) ที่คำนวณมุมเอียงของภาพต้นฉบับที่ให้มา เราสามารถตรวจจับมุมเอียงของภาพข้อความได้อย่างง่ายดายโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- เรียกใช้เมธอด CalculateSkew() ใช้เส้นทางรูปภาพเป็นอาร์กิวเมนต์
- สุดท้าย แสดงมุมเอียงที่คำนวณได้
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการคำนวณมุมเอียงของรูปภาพใน C#
// ตัวอย่างรหัสนี้สาธิตวิธีการคำนวณมุมเอียงของรูปภาพ
// สร้างอินสแตนซ์ของ AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// คำนวณมุมเอียง
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");
// แสดงมุม
Console.WriteLine($"Skew angle: {skew:N1}°");
Skew angle: 5.8°
แก้ไขความเอียงอัตโนมัติใน C#
สำหรับการแก้ไขความเอียงอัตโนมัติ เราสามารถเปิดใช้งานคุณสมบัติ RecognitionSettings.AutoSkew ในการตั้งค่าการจดจำโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส RecognitionSettings
- จากนั้น ตั้งค่าคุณสมบัติ AutoSkew เป็นจริง
- หลังจากนั้น ให้เรียกใช้เมธอด RecognizeImage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
- สุดท้าย แสดงข้อความที่รู้จัก
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้การแก้ไขการเอียงอัตโนมัติใน C#
// ตัวอย่างรหัสนี้สาธิตวิธีการใช้การแก้ไขความเอียงอัตโนมัติ
// สร้างอินสแตนซ์ของ AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();
// เปิดใช้งานการเลื่อนอัตโนมัติในการตั้งค่าการจดจำ
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;
// รู้จักภาพ
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);
// แสดงข้อความที่รู้จัก
Console.WriteLine(result.RecognitionText);
การแก้ไขความเอียงอัตโนมัติด้วยตัวกรองการประมวลผลล่วงหน้าใน C#
อีกทางหนึ่ง เราสามารถใช้ตัวกรองการประมวลผลล่วงหน้า AutoSkew สำหรับการแก้ไขความเอียงอัตโนมัติและบันทึกภาพที่แก้ไขแล้วโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส PreprocessingFilter
- จากนั้น เพิ่มตัวกรอง AutoSkew()
- หลังจากนั้น ให้เรียกใช้เมธอด PreprocessImage() เพื่อใช้ตัวกรองกับภาพต้นฉบับ
- สุดท้าย บันทึกภาพที่แก้ไขแล้ว
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้การแก้ไขความเอียงอัตโนมัติด้วยตัวกรองการประมวลผลล่วงหน้าใน C#
// ตัวอย่างโค้ดนี้สาธิตวิธีใช้การแก้ไขภาพเอียงอัตโนมัติโดยใช้ตัวกรองการประมวลผลล่วงหน้าและบันทึกภาพที่แก้ไขแล้ว
// สร้างอินสแตนซ์ของ 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);
}
}
จดจำข้อความรูปภาพด้วยการแก้ไขความเอียงอัตโนมัติใน C#
เราสามารถใช้ตัวกรองการประมวลผลล่วงหน้า AutoSkew และจดจำข้อความรูปภาพโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส PreprocessingFilter
- จากนั้น เพิ่มตัวกรอง AutoSkew()
- ในขณะเดียวกัน ให้สร้างอินสแตนซ์ของคลาส RecognitionSettings
- ถัดไป กำหนดตัวกรองให้กับคุณสมบัติ PreprocessingFilters
- หลังจากนั้น ให้เรียกใช้เมธอด RecognizeImage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
- สุดท้าย แสดงข้อความที่รู้จัก
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้การแก้ไขการเอียงอัตโนมัติและจดจำข้อความใน C#
// ตัวอย่างรหัสนี้สาธิตวิธีใช้การแก้ไขความเอียงอัตโนมัติโดยใช้ตัวกรองการประมวลผลล่วงหน้าและจดจำรูปภาพ
// สร้างอินสแตนซ์ของ 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);
การแก้ไขความเอียงด้วยตนเองใน C#
สำหรับการแก้ไขความเอียงด้วยตนเอง เราสามารถกำหนดมุมเอียงได้ด้วยตนเองโดยระบุคุณสมบัติ SkewAngle ในการตั้งค่าการรู้จำโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส RecognitionSettings
- จากนั้น ตั้งค่าคุณสมบัติ SkewAngle
- หลังจากนั้น ให้เรียกใช้เมธอด RecognizeImage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
- สุดท้าย แสดงข้อความที่รู้จัก
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้การแก้ไขความเอียงด้วยตนเองใน C#
// ตัวอย่างรหัสนี้สาธิตวิธีการใช้การแก้ไขความเอียงด้วยตนเอง
// สร้างอินสแตนซ์ของ 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);
การแก้ไขความเอียงด้วยตนเองด้วยตัวกรองการประมวลผลล่วงหน้าใน C#
นอกจากนี้ เรายังสามารถกำหนดมุมเอียงได้ด้วยตนเองโดยการหมุนภาพไปยังองศาที่กำหนดโดยใช้ฟิลเตอร์ประมวลผลล่วงหน้า Rotate
โปรดทำตามขั้นตอนด้านล่างเพื่อใช้การแก้ไขความเอียงด้วยตนเอง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส PreprocessingFilter
- จากนั้น เพิ่มตัวกรอง Rotate()
- ในขณะเดียวกัน ให้สร้างอินสแตนซ์ของคลาส RecognitionSettings
- ถัดไป กำหนดตัวกรองให้กับคุณสมบัติ PreprocessingFilters
- หลังจากนั้น ให้เรียกใช้เมธอด RecognizeImage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
- สุดท้าย แสดงข้อความที่รู้จัก
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้การแก้ไขความเอียงด้วยตนเองด้วยตัวกรองการประมวลผลล่วงหน้าใน C#
// ตัวอย่างโค้ดนี้สาธิตวิธีใช้การแก้ไขความเอียงด้วยตนเองและจดจำข้อความรูปภาพ
// สร้างอินสแตนซ์ของ 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 for .NET โดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีการ:
- ทำ OCR และจดจำข้อความบนภาพ
- ใช้ตัวกรองและประมวลผลภาพ
- ใช้การตั้งค่าการจดจำ
- บันทึกภาพที่แก้ไขแล้วโดยใช้ C#
นอกจากการแก้ไขความเอียงในการประมวลผลภาพโดยใช้ C# แล้ว คุณยังสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.OCR for .NET API โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี