Chúng tôi rất vui mừng thông báo việc phát hành GroupDocs.Comparison for Java 26.11, có sẵn từ tháng 11 năm 2026. Tính năng nổi bật là so sánh hình ảnh dựa trên OCR: giờ đây hình ảnh có thể được so sánh bằng văn bản được nhận dạng trong chúng thay vì bằng các pixel. So sánh bảng tính được cải tổ lớn — các hàng được ghép theo nội dung, và việc so sánh các bảng lớn chỉ mất vài giây thay vì vài phút. Kết quả PDF hiện được bố trí từ trang nguồn, giống như trong GroupDocs.Comparison for .NET, và một loạt các bản sửa lỗi bao phủ so sánh văn bản, Word, bản trình chiếu và xem trước HTML.
Những gì mới trong bản phát hành này
| Mã | Tóm tắt | Thể loại |
|---|---|---|
| COMPARISONNET-4925, COMPARISONNET-4934 | Hình ảnh có thể được so sánh bằng văn bản được nhận dạng trong chúng (OCR) thay vì bằng các pixel | Feature |
| COMPARISONJAVA-1798, COMPARISONNET-4940, COMPARISONNET-4945 | Các hàng bảng tính được ghép theo nội dung: một hàng được chèn hoặc xóa không còn đánh dấu mọi hàng sau đó là đã thay đổi | Fix |
| COMPARISONJAVA-1797, COMPARISONNET-4930 | So sánh bảng tính chỉ mất vài giây thay vì vài phút; so sánh văn bản nhanh hơn trong mọi định dạng | Fix |
| COMPARISONJAVA-1796, COMPARISONNET-4946 | Kết quả XLSX: các hàng không có chiều cao riêng vẫn được điều chỉnh phù hợp với nội dung | Fix |
| COMPARISONNET-4947 | Kết quả XLSX: các số và ngày không thay đổi giữ nguyên kiểu dữ liệu thay vì chuyển thành văn bản | Fix |
| COMPARISONNET-4944 | StyleSettings.setHighlightColor tô nền cho các ô bảng tính đã thay đổi |
Fix |
| COMPARISONNET-4927, COMPARISONNET-4928, COMPARISONNET-4923 | Văn bản: các từ bị đẩy qua ngắt dòng không còn bị báo là đã xóa và chèn lại | Fix |
| COMPARISONNET-4403, COMPARISONNET-4891 | Kết quả PDF được bố trí từ trang nguồn: các thành phần ở vị trí của chúng, các ô bọc tại cạnh riêng của chúng | Update |
| COMPARISONNET-4931 | Kết quả PDF nội tuyến hiển thị cụm từ được thay thế nguyên vẹn: các từ cũ, sau đó là các từ mới | Fix |
| COMPARISONNET-4896 | Kết quả PDF nội tuyến không còn bọc một dòng mà so sánh làm dài hơn một chút lên dòng tiếp theo | Fix |
| COMPARISONNET-4763 | Kết quả PDF không còn vẽ lưới đen lên các đường viền của bảng | Fix |
| — | Các trang PDF được vẽ qua biểu mẫu (bảng tính lưu dưới dạng PDF) không còn được coi là không thay đổi | Fix |
| — | PDF: các dòng chỉ chứa khoảng trắng không còn được báo là thay đổi | Fix |
| — | PDF: mục lục giữ số trang trên cùng dòng | Fix |
| COMPARISONNET-4926 | Word: một cột hoặc hàng bảng trở nên trống được giữ nguyên vị trí thay vì bị xóa và chèn lại | Fix |
| COMPARISONNET-4880 | Bản trình chiếu: LoadOptions.setSkipExternalResources và setWhitelistedResources hiện áp dụng |
Fix |
| COMPARISONNET-4935 | Xem trước HTML: các bản xem trước đồng thời không còn ghi đè lên các trang của nhau; các trang được yêu cầu được tôn trọng | Fix |
| COMPARISONJAVA-1794, COMPARISONJAVA-1795 | Thư viện Aspose được cập nhật | Update |
Các thay đổi hành vi cần kiểm tra trước khi nâng cấp
- Phụ thuộc mới. POM được công bố khai báo một phụ thuộc mới, Aspose.OCR for Java, chỉ được sử dụng cho so sánh OCR. Nó mang theo ONNX Runtime với các thư viện gốc. Nếu bạn không sử dụng OCR, có thể loại trừ nó — mọi so sánh khác vẫn hoạt động mà không cần (xem Cách nhận bản cập nhật).
- Thay đổi bảng tính. Khi các hàng được chèn hoặc xóa, so sánh bảng tính báo cáo các thay đổi khác nhau — và thường ít hơn nhiều — vì các hàng hiện được ghép theo nội dung.
- Bố cục PDF. Kết quả PDF được bố trí khác: mỗi thành phần vẫn ở vị trí của nó trên trang nguồn.
- Thứ tự thay thế. Trong kết quả văn bản và PDF nội tuyến, một từ hoặc cụm từ được thay thế hiện hiển thị từ cũ trước, sau đó là mới.
- Chế độ đánh giá. Chỉ 2 trang đầu tiên của một PDF được so sánh trong chế độ đánh giá, giống như trong GroupDocs.Comparison for .NET.
Tính năng mới: so sánh hình ảnh bằng văn bản đã nhận dạng (OCR)
Một hình ảnh giờ có thể được so sánh bằng văn bản mà Aspose.OCR đọc được trong nó, thay vì bằng các pixel. Đây là lựa chọn phù hợp cho các bản quét, ảnh chụp và ảnh chụp màn hình của tài liệu, nơi cùng một văn bản không bao giờ tạo ra cùng một pixel — một trang được quét lại với chút dịch chuyển hoặc chất lượng khác sẽ không còn hiển thị sự khác biệt ở mọi nơi.
try (Comparer comparer = new Comparer("source.png")) {
comparer.add("target.png");
OcrOptions ocr = new OcrOptions();
ocr.setEnabled(true);
ocr.setDisplayMode(OcrDisplayMode.SIDE_BY_SIDE); // or TEXT
CompareOptions options = new CompareOptions();
options.setOcr(ocr);
comparer.compare("result.png", options);
for (ChangeInfo change : comparer.getChanges()) {
OcrChangeInfo ocrChange = (OcrChangeInfo) change;
System.out.println(change.getText() + ": confidence " + ocrChange.getConfidence()
+ ", " + ocrChange.getSourceBoxes().length + " box(es) on the source");
}
}
Những gì bạn có thể kiểm soát:
- Chế độ hiển thị.
SIDE_BY_SIDE(mặc định) hiển thị hai hình ảnh cạnh nhau với các từ đã thay đổi được khoanh hộp.TEXTchỉ hiển thị văn bản đã nhận dạng, với các thay đổi được đánh dấu trong đó. - Chi tiết thay đổi. Mỗi thay đổi là một
OcrChangeInfovới các hộp mà nó bao phủ trên cả hai hình ảnh (getSourceBoxes(),getTargetBoxes()) và độ tin cậy nhận dạng (getConfidence()). Các hộp sẽ rỗng ở chế độTEXT. - Ngôn ngữ.
setLanguage(OcrLanguage)chọn ngôn ngữ hoặc chữ viết; mặc định làLATIN. Các ngôn ngữ khác cần mô hình nhận dạng được tải về lần đầu sử dụng.setDisableResourceDownloads(true)vàsetResourcesPath(String)giới hạn nhận dạng chỉ với các mô hình đã có trên đĩa.
Aspose.OCR for Java phải có trong classpath. Nó là phụ thuộc của POM được công bố, không phải là một phần của jar. Nếu thiếu, so sánh OCR sẽ thất bại với thông báo chỉ ra thư viện bị thiếu.
So sánh bảng tính
Các hàng được ghép theo nội dung
Trước đây, các hàng được ghép với hàng có cùng chỉ mục trong workbook còn lại. Khi một hàng được chèn hoặc xóa, mọi hàng sau đó đều được báo là đã viết lại. Ví dụ, một workbook gồm sáu hàng với một hàng bị xóa đã tạo ra 91 thay đổi; hiện chỉ tạo ra 8 — sáu ô của hàng bị xóa, được đánh dấu tại chỗ, và số lượng hàng trên sheet tóm tắt.
Các hàng và cột hiện được căn chỉnh theo nội dung của các ô. Các hàng giống nhau trong cả hai tệp được ghép trực tiếp, và chỉ những gì nằm giữa chúng mới được căn chỉnh. Số lượng thay đổi báo cáo cho các tệp như vậy khác so với các phiên bản trước.
Giây thay vì phút
So sánh bảng tính có thể mất vài phút ngay cả với các tệp giống hệt: hai sheet 200 × 20 giống hệt mất 2,5 phút. Giờ chỉ mất dưới một giây (vài giây cho lần so sánh đầu tiên sau khi JVM khởi động), và một sheet 400 × 20 có một hàng bị xóa mất khoảng 7 giây.
Thuật toán diff từ ngữ phía sau mỗi lần so sánh đã được tái cấu trúc và trả về kết quả giống như trước, chỉ nhanh hơn rất nhiều — vì vậy so sánh Word, PDF và văn bản cũng được hưởng lợi. Các hàng và cột giống hệt được ghép mà không tính điểm, nên hai sheet giống hệt không được căn chỉnh gì cả.
Chiều cao hàng, kiểu số và màu nổi bật
- Các hàng không có chiều cao riêng giờ được để tự điều chỉnh phù hợp với nội dung trong kết quả, vì vậy các ô bọc và phông chữ lớn không còn bị cắt. Các hàng có chiều cao được chỉ định vẫn giữ nguyên.
- Các số và ngày không thay đổi giữ kiểu dữ liệu thay vì được ghi lại dưới dạng văn bản. Các ô công thức vẫn được ghi với giá trị đã tính.
StyleSettings.setHighlightColorhiện tô nền cho các ô đã thay đổi:
StyleSettings deleted = new StyleSettings();
deleted.setHighlightColor(Color.PINK);
CompareOptions options = new CompareOptions();
options.setDeletedItemStyle(deleted);
Kết quả PDF
Bố cục từ trang nguồn
Engine PDF hiện bố trí kết quả theo cùng cách như GroupDocs.Comparison for .NET:
- mọi thành phần của kết quả đứng ở vị trí của nó trên trang nguồn; hình ảnh được đặt tại tọa độ riêng, và đồ họa vector của trang được giữ lại;
- một bảng vẽ lưới của nó, và văn bản của mỗi ô bọc tại cạnh riêng của ô, bao gồm cả các ô đã hợp nhất;
- các dòng được nhóm thành đoạn văn dựa trên khoảng cách giữa các baseline, và lề trang được lấy từ chính trang;
- các trang giống nhau trong cả hai tài liệu có thể xuất hiện ở bất kỳ vị trí nào trong tài liệu, không chỉ ở đầu, và sẽ không được so sánh lại.
Kết quả trông khác so với các phiên bản trước. Nội dung đã xóa được vẽ ở vị trí của nó trên trang nguồn; nếu mục tiêu có nội dung khác ở vị trí đó, hai phần có thể chồng lên nhau.
Các sửa lỗi nhỏ
- Cụm từ được thay thế. Một thay thế nhiều từ trước đây được vẽ từng cặp một, nên “Richard McClintock” thành “Vasily Pupkin” lại đọc thành “Vasily Richard Pupkin McClintock”. Kết quả nội tuyến hiện hiển thị cụm từ cũ, sau đó là mới.
- Dòng dài hơn một chút. Trong kết quả nội tuyến, một dòng mà thay thế làm nó dài hơn một từ không còn bọc từ cuối cùng lên một dòng riêng trên dòng kế tiếp.
- Lưới bảng. Một đường viền bảng mà màu không thể phát hiện không còn được vẽ đen lên các đường viền gốc của bảng.
- Các trang được vẽ qua biểu mẫu. Các trang vẽ mọi thứ qua biểu mẫu, như một bảng tính lưu dưới dạng PDF, trước đây được coi là không thay đổi. Bây giờ các biểu mẫu cũng được so sánh, vì vậy các thay đổi của chúng được báo cáo.
- Dòng trống. Các dòng chỉ chứa khoảng trắng không còn được báo là thay đổi.
- Mục lục. Số trang của một dòng mục lục đã thay đổi vẫn ở trên cùng dòng.
Các sửa lỗi khác
Văn bản qua ngắt dòng
Một chỉnh sửa làm dài hoặc ngắn một dòng trong tệp văn bản đẩy các từ qua ngắt dòng sau nó. Khi so sánh từng dòng, các từ này bị báo là đã xóa khỏi một dòng và chèn vào dòng tiếp theo. Bây giờ các dòng được nối lại khi điều đó tạo ra ít thay đổi hơn, được so sánh như một lần chạy và được bố trí lại trên các dòng của mục tiêu. Một thay thế được báo là cũ trước, sau đó là mới, và chế độ xem HTML của so sánh văn bản áp dụng các thay đổi được chấp nhận và bị từ chối giống như kết quả văn bản. So sánh một tệp với nhiều mục tiêu vẫn thực hiện theo từng dòng.
Word: cột hoặc hàng bảng trống
Khi một cột hoặc hàng của bảng trở nên trống, nó trước đây được báo là đã xóa và một cột/hàng trống được chèn lại, khiến các ô sau nó dịch chuyển. Giờ nó vẫn giữ vị trí, với nội dung của nó được báo là đã xóa.
Bản trình chiếu: tài nguyên bên ngoài
LoadOptions.setSkipExternalResources và setWhitelistedResources, được thêm vào trong 26.10, trước đây không ảnh hưởng đến bản trình chiếu. Bây giờ chúng áp dụng cho bản trình chiếu giống như với Word và tài liệu HTML, và bản trình chiếu kết quả không bao giờ tải tài nguyên bên ngoài. Một hình ảnh không được tải sẽ được so sánh như một hình ảnh trống.
Xem trước HTML
Các trang xem trước của tài liệu HTML trước đây được render ra các tên tệp cố định trong thư mục tạm, vì vậy hai bản xem trước cùng lúc đã ghi đè lên các trang của nhau và các số trang được yêu cầu bị bỏ qua. Giờ các trang được render trong bộ nhớ, chỉ các trang được yêu cầu mới được trả về, và chúng được render trên nền trắng thay vì nền trong suốt.
Thư viện Aspose được cập nhật
| Thư viện | Trước | Hiện tại |
|---|---|---|
| Aspose.BarCode | 25.5 | 26.6 |
| Aspose.CAD | 24.6.1 | 26.8 |
| Aspose.Cells | 26.3 | 26.9 |
| Aspose.Diagram | 25.7 | 26.9 |
| Aspose.Email | 26.1 | 26.8 |
| Aspose.PDF | 26.2 | 26.8.1 |
| Aspose.PSD | 25.10 | 26.8 |
| Aspose.Slides | 26.2 | 26.9 |
| Aspose.Words | 26.3 | 26.8 |
Các thư viện vẫn được đóng gói trong jar như trước. Aspose.OCR 26.10.0 là mới và được đưa vào như một phụ thuộc trong POM.
Cách nhận bản cập nhật
Maven
Thêm repository GroupDocs và phụ thuộc vào pom.xml của bạn:
<repositories>
<repository>
<id>groupdocs-artifacts-repository</id>
<name>GroupDocs Artifacts Repository</name>
<url>https://releases.groupdocs.com/java/repo/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>26.11</version>
</dependency>
</dependencies>
Nếu bạn không sử dụng so sánh OCR, có thể loại trừ Aspose.OCR và các thư viện gốc của nó:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>26.11</version>
<exclusions>
<exclusion>
<groupId>com.aspose</groupId>
<artifactId>aspose-ocr</artifactId>
</exclusion>
</exclusions>
</dependency>
Tải trực tiếp
Tải JAR từ GroupDocs.Comparison for Java 26.11 download page.