ในคอมพิวเตอร์กราฟิกส์และการประมวลผลภาพ ความเอียงของภาพคือการเบี่ยงเบนมุมของภาพสี่เหลี่ยม เรียกอีกอย่างว่าภาพเอียงหรือบิดเบี้ยว คำว่า “เอียง” หมายถึงมุมของภาพ ภาพเอียงเกิดขึ้นเมื่อตำแหน่งการมองเห็นขององค์ประกอบในภาพไม่สม่ำเสมอ การเอียงอาจส่งผลให้มุมใดๆ เป็นมุม หรือแม้กระทั่งการเลื่อนเพื่อให้ด้านหนึ่งยาวกว่าอีกด้านหนึ่ง ภาพถ่ายหรือภาพที่สแกนดังกล่าวอาจดูบิดเบี้ยวและไม่สวยงาม ในบทความนี้ เราจะเรียนรู้วิธีตรวจจับภาพเอียงโดยทางโปรแกรม เราจะได้เรียนรู้วิธีการแก้ไขภาพเอียงใน Java
หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:
- Java API สำหรับการแก้ไขภาพเอียง
- ตรวจจับมุมเอียงของภาพ
- ตรวจหามุมเอียงของภาพสดของภาพ
- แก้ไขภาพเอียงอัตโนมัติ
- จดจำข้อความรูปภาพด้วยการแก้ไขความเอียงอัตโนมัติ
- การแก้ไขภาพเอียงแบบแมนนวล
- จดจำข้อความรูปภาพด้วยการแก้ไขภาพเอียงด้วยตนเอง
Java API สำหรับการแก้ไขภาพเอียง
สำหรับการตรวจจับภาพเอียงและการแก้ไข เราจะใช้ API Aspose.OCR for Java อนุญาตให้ใช้ OCR กับรูปภาพที่สแกน ภาพถ่ายจากสมาร์ทโฟน ภาพหน้าจอ พื้นที่ของรูปภาพ และ PDF ที่สแกน API ยังอนุญาตให้บันทึกผลลัพธ์ข้อความที่รู้จักในรูปแบบเอกสารยอดนิยม
คลาส AsposeOCR ของ API เป็นคลาสหลักสำหรับจดจำข้อความจากรูปภาพ มีเมธอด CalcSkewImage(string) ที่คำนวณมุมเอียงของภาพต้นฉบับที่ให้มา นอกจากนี้ยังมีเมธอด CalcSkewImageFromUri(String uri) อีกวิธีหนึ่งที่คำนวณมุมเอียงของรูปภาพที่มาจากลิงก์ URI คลาส PreprocessingFilter เป็นคลาสพื้นฐานสำหรับคำสั่งประมวลผลภาพ คลาส RecognitionSettings ของ API ให้การตั้งค่าสำหรับการจดจำรูปภาพประกอบด้วยองค์ประกอบที่ช่วยให้ปรับแต่งกระบวนการจดจำได้
โปรด ดาวน์โหลด JAR ของ API หรือเพิ่มการกำหนดค่า pom.xml ต่อไปนี้ในแอปพลิเคชัน Java ที่ใช้ Maven
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://releases.aspose.com/java/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-ocr</artifactId>
<version>22.9</version>
</dependency>
ตรวจหามุมเอียงของภาพใน Java
เราสามารถตรวจจับมุมเอียงของภาพข้อความได้อย่างง่ายดายโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- เรียกใช้เมธอด CalcSkewImage() ใช้เส้นทางรูปภาพเป็นอาร์กิวเมนต์
- สุดท้าย แสดงมุมเอียงที่คำนวณได้
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการคำนวณมุมเอียงของรูปภาพใน Java
// ตัวอย่างรหัสนี้สาธิตวิธีการคำนวณมุมเอียงของภาพ
// สร้างอินสแตนซ์ของ AsposeOcr
AsposeOCR api = new AsposeOCR();
// คำนวณมุมเอียง
double skew = api.CalcSkewImage("C:\\Files\\source.png");
// แสดงมุม
System.out.println("Skew angle: " + skew + "°.");
ตรวจจับมุมเอียงของรูปภาพจาก URL รูปภาพสด
นอกจากนี้ เรายังสามารถตรวจจับมุมเอียงของรูปภาพจาก URL จริงได้โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- เรียกใช้เมธอด CalcSkewImageFromUri() ใช้เส้นทางรูปภาพเป็นอาร์กิวเมนต์
- สุดท้าย แสดงมุมเอียงที่คำนวณได้
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการคำนวณมุมเอียงของรูปภาพใน Java
// ตัวอย่างรหัสนี้สาธิตวิธีการคำนวณมุมเอียงของรูปภาพ
// สร้างอินสแตนซ์ของ AsposeOcr
AsposeOCR api = new AsposeOCR();
// คำนวณมุมเอียง
double skew = api.CalcSkewImageFromUri("https://www.aspose.com/sample-ocr-page.png");
// แสดงมุม
System.out.println("Skew angle: " + skew + "°.");
แก้ไขภาพเอียงอัตโนมัติใน Java
เราสามารถแก้ไขการแก้ไขความเอียงของภาพโดยอัตโนมัติโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส PreprocessingFilter
- จากนั้น เพิ่มตัวกรอง AutoSkew()
- หลังจากนั้น ให้เรียกใช้เมธอด PreprocessImage() เพื่อใช้ตัวกรองกับภาพต้นฉบับ
- สุดท้าย บันทึกภาพที่แก้ไขแล้ว
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้ตัวกรองการประมวลผลล่วงหน้าการแก้ไขการเอียงอัตโนมัติใน Java
// ตัวอย่างโค้ดนี้สาธิตวิธีใช้การแก้ไขภาพเอียงอัตโนมัติโดยใช้ตัวกรองการประมวลผลล่วงหน้าและบันทึกภาพที่แก้ไขแล้ว
// สร้างอินสแตนซ์ของ AsposeOcr
AsposeOCR api = new AsposeOCR();
// เพิ่มตัวกรองโต๊ะ
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.AutoSkew());
// บันทึกภาพที่ประมวลผลล่วงหน้าเป็นไฟล์
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);
จดจำข้อความรูปภาพด้วย Automatic Skew Correction ใน Java
เราสามารถใช้การแก้ไขความเอียงอัตโนมัติและจดจำข้อความโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส RecognitionSettings
- จากนั้น เรียก setAutoSkew ด้วย true เป็นอาร์กิวเมนต์
- หลังจากนั้น ให้เรียกใช้เมธอด RecognizePage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
- สุดท้าย แสดงข้อความที่รู้จัก
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้การแก้ไขความเอียงอัตโนมัติและจดจำข้อความใน Java
// ตัวอย่างรหัสนี้สาธิตวิธีการใช้การแก้ไขความเอียงอัตโนมัติ
// สร้างอินสแตนซ์ของ AsposeOcr
AsposeOCR api = new AsposeOCR();
// เปิดใช้งานการเลื่อนอัตโนมัติในการตั้งค่าการจดจำ
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setAutoSkew(true);
// รู้จักภาพ
RecognitionResult result = api.RecognizePage("C:\\Files\\source.png", recognitionSettings);
// แสดงข้อความที่รู้จัก
System.out.println(result.recognitionText);
การแก้ไขภาพเอียงด้วยตนเองใน Java
เราสามารถกำหนดมุมเอียงได้เองโดยการหมุนภาพไปยังองศาที่กำหนดโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส PreprocessingFilter
- จากนั้นเพิ่มมุมการหมุนโดยใช้ตัวกรองเมธอด Rotate()
- จากนั้น สร้างอินสแตนซ์ของคลาส RecognitionSettings
- หลังจากนั้น ให้เรียกใช้เมธอด PreprocessImage() เพื่อใช้ตัวกรองกับภาพต้นฉบับ
- สุดท้าย แสดงข้อความที่รู้จัก
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้การแก้ไขความเอียงด้วยตนเองด้วยตัวกรองการประมวลผลล่วงหน้าใน Java
// ตัวอย่างรหัสนี้สาธิตวิธีการใช้การแก้ไขความเอียงด้วยตนเอง
// สร้างอินสแตนซ์ของ AsposeOcr
AsposeOCR api = new AsposeOCR();
// เพิ่มตัวกรองโต๊ะ
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Rotate(-90));
// บันทึกภาพที่ประมวลผลล่วงหน้าเป็นไฟล์
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);
รู้จักข้อความรูปภาพด้วยการแก้ไขภาพเอียงด้วยตนเองใน Java
เราสามารถกำหนดมุมเอียงได้ด้วยตนเองและจดจำข้อความโดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส AsposeOCR
- ถัดไป เริ่มต้นวัตถุของคลาส RecognitionSettings
- จากนั้นเรียกเมธอด setSkew()
- หลังจากนั้น ให้เรียกใช้เมธอด RecognizePage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
- สุดท้าย แสดงข้อความที่รู้จัก
โค้ดตัวอย่างต่อไปนี้แสดงวิธีใช้การแก้ไขความเอียงด้วยตนเองและจดจำข้อความรูปภาพใน Java
// ตัวอย่างรหัสนี้สาธิตวิธีการใช้การแก้ไขความเอียงด้วยตนเอง
// สร้างอินสแตนซ์ของ AsposeOcr
AsposeOCR recognitionEngine = new AsposeOCR();
// ตั้งค่ามุมเอียงด้วยตนเอง
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setSkew(6);
// รู้จักภาพ
RecognitionResult result = recognitionEngine.RecognizePage("C:\\Files\\source.png", recognitionSettings);
// แสดงผล
System.out.println(result.recognitionText);
รับใบอนุญาตการประเมินฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวฟรี เพื่อลองใช้ Aspose.OCR for Java โดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีการ:
- ทำ OCR และจดจำข้อความบนภาพ
- ใช้ตัวกรองและประมวลผลภาพ
- ใช้การตั้งค่าการจดจำ
- บันทึกภาพที่แก้ไขโดยใช้ Java
นอกจากการแก้ไขภาพเอียงใน Java แล้ว คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.OCR for Java API โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี