Trong xử lý ảnh và đồ họa máy tính, độ lệch ảnh là độ lệch góc của ảnh hình chữ nhật. Nó còn được gọi là độ nghiêng hoặc biến dạng hình ảnh. Thuật ngữ “xiên” đề cập đến góc của một hình ảnh. Hiện tượng lệch ảnh xảy ra khi vị trí trực quan của các thành phần trong ảnh không đồng nhất. Skewing có thể dẫn đến bất kỳ góc nào bị lệch, hoặc thậm chí bị dịch chuyển để một bên dài hơn bên kia. Những bức ảnh hoặc hình ảnh được quét như vậy có thể trông méo mó và không hấp dẫn. Trong bài viết này, chúng ta sẽ học cách phát hiện độ lệch hình ảnh theo chương trình. Chúng ta cũng sẽ học cách thực hiện chỉnh sửa độ lệch hình ảnh trong Java.
Các chủ đề sau sẽ được đề cập trong bài viết này:
- Java API để sửa lỗi ảnh lệch
- Phát hiện góc nghiêng của hình ảnh
- Phát hiện góc nghiêng của hình ảnh trực tiếp
- Chỉnh sửa ảnh nghiêng tự động
- Nhận dạng văn bản hình ảnh với sửa lỗi xiên tự động
- Chỉnh sửa ảnh xiên bằng tay
- Nhận dạng văn bản hình ảnh với sửa lỗi ảnh xiên thủ công
API Java để sửa lỗi ảnh lệch
Để phát hiện và chỉnh sửa sai lệch hình ảnh, chúng tôi sẽ sử dụng API Aspose.OCR cho Java. Nó cho phép thực hiện OCR trên hình ảnh được quét, ảnh điện thoại thông minh, ảnh chụp màn hình, các khu vực của hình ảnh và các tệp PDF được quét. API cũng cho phép lưu các kết quả văn bản được công nhận ở các định dạng tài liệu phổ biến.
Lớp AsposeOCR của API là lớp chính để nhận dạng văn bản từ hình ảnh. Nó cung cấp phương thức CalcSkewImage (string) để tính toán góc xiên của hình ảnh nguồn được cung cấp. Nó cũng cung cấp một phương thức CalcSkewImageFromUri (String uri) khác để tính toán góc xiên của hình ảnh được cung cấp bởi liên kết URI. Lớp PreprocessingFilter là lớp cơ sở cho các lệnh xử lý ảnh. Lớp RecognitionSettings của API cung cấp cài đặt cho nhận dạng hình ảnh chứa các phần tử cho phép tùy chỉnh quá trình nhận dạng.
Vui lòng tải xuống JAR của API hoặc thêm cấu hình pom.xml sau vào ứng dụng Java dựa trên 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>
Phát hiện góc nghiêng hình ảnh trong Java
Chúng tôi có thể dễ dàng phát hiện góc lệch của hình ảnh văn bản bằng cách làm theo các bước dưới đây:
- Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
- Gọi phương thức CalcSkewImage(). Nó lấy đường dẫn hình ảnh làm đối số.
- Cuối cùng, hiển thị góc xiên được tính toán.
Đoạn mã mẫu sau đây cho thấy cách tính góc xiên của hình ảnh trong Java.
// Ví dụ mã này trình bày cách tính góc xiên của hình ảnh.
// Tạo một phiên bản của AsposeOcr
AsposeOCR api = new AsposeOCR();
// Tính góc xiên
double skew = api.CalcSkewImage("C:\\Files\\source.png");
// Hiển thị góc
System.out.println("Skew angle: " + skew + "°.");
Phát hiện góc nghiêng của hình ảnh từ URL hình ảnh trực tiếp
Chúng tôi cũng có thể phát hiện góc lệch của hình ảnh từ URL trực tiếp bằng cách làm theo các bước được cung cấp bên dưới:
- Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
- Gọi phương thức CalcSkewImageFromUri(). Nó lấy đường dẫn hình ảnh làm đối số.
- Cuối cùng, hiển thị góc xiên được tính toán.
Đoạn mã mẫu sau đây cho thấy cách tính góc xiên của hình ảnh trong Java.
// Ví dụ mã này trình bày cách tính góc xiên của hình ảnh.
// Tạo một phiên bản của AsposeOcr
AsposeOCR api = new AsposeOCR();
// Tính góc xiên
double skew = api.CalcSkewImageFromUri("https://www.aspose.com/sample-ocr-page.png");
// Hiển thị góc
System.out.println("Skew angle: " + skew + "°.");
Chỉnh sửa ảnh lệch tự động trong Java
Chúng tôi có thể tự động sửa lỗi chỉnh lệch hình ảnh bằng cách làm theo các bước dưới đây:
- Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
- Tiếp theo, khởi tạo một đối tượng của lớp PreprocessingFilter.
- Sau đó, thêm bộ lọc AutoSkew().
- Sau đó, gọi phương thức PreprocessImage() để áp dụng bộ lọc trên ảnh nguồn.
- Cuối cùng, lưu hình ảnh đã chỉnh sửa.
Mã mẫu sau đây cho thấy cách áp dụng bộ lọc tiền xử lý sửa lỗi tự động điều chỉnh độ lệch trong Java.
// Ví dụ mã này trình bày cách áp dụng hiệu chỉnh độ lệch tự động bằng cách sử dụng bộ lọc tiền xử lý và lưu hình ảnh đã sửa.
// Tạo một phiên bản của AsposeOcr
AsposeOCR api = new AsposeOCR();
// Thêm bộ lọc deskew
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.AutoSkew());
// Lưu hình ảnh đã xử lý trước vào tệp
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);
Nhận dạng văn bản hình ảnh với tính năng tự động sửa lỗi xiên trong Java
Chúng tôi có thể áp dụng tính năng tự động sửa độ lệch và nhận dạng văn bản bằng cách làm theo các bước dưới đây:
- Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
- Tiếp theo, khởi tạo một đối tượng của lớp RecognitionSettings.
- Sau đó, gọi setAutoSkew với true làm đối số.
- Sau đó, gọi phương thức RecognizePage() với ảnh nguồn và đối tượng RecognitionSettings.
- Cuối cùng, hiển thị văn bản được nhận dạng.
Đoạn mã mẫu sau đây cho thấy cách áp dụng tính năng tự động sửa độ lệch và nhận dạng văn bản trong Java.
// Ví dụ mã này trình bày cách áp dụng hiệu chỉnh độ lệch tự động.
// Tạo một phiên bản của AsposeOcr
AsposeOCR api = new AsposeOCR();
// Bật deskew tự động trong cài đặt nhận dạng
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setAutoSkew(true);
// Nhận dạng hình ảnh
RecognitionResult result = api.RecognizePage("C:\\Files\\source.png", recognitionSettings);
// Hiển thị văn bản được nhận dạng
System.out.println(result.recognitionText);
Chỉnh sửa ảnh xiên bằng tay trong Java
Chúng tôi có thể xác định góc xiên theo cách thủ công bằng cách xoay hình ảnh đến mức được chỉ định bằng cách thực hiện theo các bước dưới đây:
- Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
- Tiếp theo, khởi tạo một đối tượng của lớp PreprocessingFilter.
- Sau đó, thêm góc xoay bằng bộ lọc phương thức Rotate().
- Tiếp theo, tạo một thể hiện của lớp RecognitionSettings.
- Sau đó, gọi phương thức PreprocessImage() để áp dụng bộ lọc trên ảnh nguồn.
- Cuối cùng, hiển thị văn bản được nhận dạng.
Đoạn mã mẫu sau đây cho thấy cách áp dụng hiệu chỉnh độ lệch thủ công với bộ lọc tiền xử lý trong Java.
// Ví dụ mã này trình bày cách áp dụng hiệu chỉnh độ lệch thủ công.
// Tạo một phiên bản của AsposeOcr
AsposeOCR api = new AsposeOCR();
// Thêm bộ lọc deskew
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Rotate(-90));
// Lưu hình ảnh đã xử lý trước vào tệp
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);
Nhận dạng văn bản hình ảnh với sửa lỗi ảnh xiên bằng tay trong Java
Chúng tôi có thể xác định góc xiên theo cách thủ công và nhận dạng văn bản bằng cách làm theo các bước dưới đây:
- Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
- Tiếp theo, khởi tạo một đối tượng của lớp RecognitionSettings.
- Sau đó, gọi phương thức setSkew().
- Sau đó, gọi phương thức RecognizePage() với ảnh nguồn và đối tượng RecognitionSettings.
- Cuối cùng, hiển thị văn bản được nhận dạng.
Đoạn mã mẫu sau đây cho thấy cách áp dụng hiệu chỉnh độ lệch thủ công và nhận dạng văn bản hình ảnh trong Java.
// Ví dụ mã này trình bày cách áp dụng hiệu chỉnh độ lệch thủ công.
// Tạo một phiên bản của AsposeOcr
AsposeOCR recognitionEngine = new AsposeOCR();
// Đặt góc xiên theo cách thủ công
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setSkew(6);
// Nhận dạng hình ảnh
RecognitionResult result = recognitionEngine.RecognizePage("C:\\Files\\source.png", recognitionSettings);
// Hiển thị kết quả
System.out.println(result.recognitionText);
Nhận Giấy phép Đánh giá Miễn phí
Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử Aspose.OCR cho Java mà không có giới hạn đánh giá.
Sự kết luận
Trong bài viết này, chúng tôi đã học cách:
- thực hiện OCR và nhận dạng văn bản trên hình ảnh;
- áp dụng bộ lọc và xử lý hình ảnh;
- sử dụng cài đặt nhận dạng;
- lưu các hình ảnh đã sửa bằng Java.
Bên cạnh tính năng sửa sai lệch hình ảnh trong Java, bạn có thể tìm hiểu thêm về Aspose.OCR cho Java API bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn hỗ trợ miễn phí của chúng tôi.