우리는 GroupDocs.Comparison for Java 26.11의 출시를 기쁘게 발표합니다. 이 버전은 2026년 11월부터 사용할 수 있습니다. 주요 기능은 OCR 기반 이미지 비교이며, 이제 이미지는 픽셀 대신 인식된 텍스트를 기준으로 비교할 수 있습니다. 스프레드시트 비교가 크게 개선되어 행이 내용으로 매칭되고, 대형 시트를 비교하는 데 몇 분이 아닌 몇 초가 소요됩니다. PDF 결과는 이제 소스 페이지를 기준으로 레이아웃이 지정되며, GroupDocs.Comparison for .NET과 동일한 방식이며, 텍스트, Word, 프레젠테이션 및 HTML 미리보기 비교에 대한 여러 수정 사항이 포함됩니다.
이번 릴리스의 새로운 기능
| 키 | 요약 | 카테고리 |
|---|---|---|
| COMPARISONNET-4925, COMPARISONNET-4934 | 이미지가 픽셀 대신 인식된 텍스트(OCR)로 비교될 수 있음 | Feature |
| COMPARISONJAVA-1798, COMPARISONNET-4940, COMPARISONNET-4945 | 스프레드시트 행이 내용으로 매칭됨: 삽입 또는 삭제된 행이 이후 모든 행을 변경된 것으로 표시하지 않음 | Fix |
| COMPARISONJAVA-1797, COMPARISONNET-4930 | 스프레드시트 비교가 몇 분이 아닌 몇 초가 소요됨; 모든 형식에서 텍스트 차이가 더 빠르게 수행됨 | Fix |
| COMPARISONJAVA-1796, COMPARISONNET-4946 | XLSX 결과: 자체 높이가 없는 행은 내용에 맞게 조정됨 | Fix |
| COMPARISONNET-4947 | XLSX 결과: 변경되지 않은 숫자와 날짜는 텍스트가 아닌 원래 유형을 유지함 | Fix |
| COMPARISONNET-4944 | StyleSettings.setHighlightColor가 변경된 스프레드시트 셀의 배경을 채움 |
Fix |
| COMPARISONNET-4927, COMPARISONNET-4928, COMPARISONNET-4923 | 텍스트: 줄 바꿈을 넘어 이동한 단어가 더 이상 삭제·재삽입으로 보고되지 않음 | Fix |
| COMPARISONNET-4403, COMPARISONNET-4891 | PDF 결과가 소스 페이지를 기준으로 레이아웃: 구성 요소가 원래 위치에 배치되고, 셀은 자체 경계에서 줄 바꿈됨 | Update |
| COMPARISONNET-4931 | 인라인 PDF 결과가 교체된 구문 전체를 표시: 먼저 기존 단어, 그 다음 새로운 단어 | Fix |
| COMPARISONNET-4896 | 인라인 PDF 결과에서 비교로 인해 약간 길어진 줄이 다음 줄로 넘어가지 않음 | Fix |
| COMPARISONNET-4763 | PDF 결과가 표의 자체 테두리 위에 검은 격자를 그리지 않음 | Fix |
| — | 양식(스프레드시트를 PDF로 저장)으로 그려진 PDF 페이지가 더 이상 변경되지 않은 것으로 간주되지 않음 | Fix |
| — | PDF: 공백만 있는 줄이 더 이상 변경으로 보고되지 않음 | Fix |
| — | PDF: 목차가 페이지 번호를 해당 줄에 유지함 | Fix |
| COMPARISONNET-4926 | Word: 비어 있게 된 표 열 또는 행이 삭제·재삽입되지 않고 제자리에 유지됨 | Fix |
| COMPARISONNET-4880 | 프레젠테이션: LoadOptions.setSkipExternalResources와 setWhitelistedResources가 이제 적용됨 |
Fix |
| COMPARISONNET-4935 | HTML 미리보기: 동시 미리보기가 서로의 페이지를 덮어쓰지 않음; 요청된 페이지가 반영됨 | Fix |
| COMPARISONJAVA-1794, COMPARISONJAVA-1795 | Aspose 라이브러리 업데이트 | Update |
업그레이드 전 확인해야 할 동작 변경 사항
- 새 종속성. 공개된 POM에 Aspose.OCR for Java라는 새로운 종속성이 선언됩니다. 이는 OCR 비교에만 사용되며 ONNX Runtime과 네이티브 라이브러리를 포함합니다. OCR을 사용하지 않는 경우 이를 제외할 수 있습니다—다른 모든 비교는 제외해도 정상 작동합니다(업데이트 방법은 How to get the update 참고).
- 스프레드시트 변경 사항. 행이 삽입·삭제될 때, 이제 행이 내용으로 매칭되므로 보고되는 변경 사항이 훨씬 적어집니다.
- PDF 레이아웃. PDF 결과가 다르게 레이아웃됩니다: 각 구성 요소가 소스 페이지에서 있던 위치에 그대로 남습니다.
- 교체 순서. 텍스트 및 인라인 PDF 결과에서 교체된 단어나 구가 이제 먼저 기존 텍스트를, 그 다음 새로운 텍스트를 표시합니다.
- 평가 모드. 평가 모드에서는 PDF의 처음 2페이지만 비교됩니다. 이는 GroupDocs.Comparison for .NET과 동일합니다.
새로운 기능: 인식된 텍스트(OCR)로 이미지 비교
이미지는 이제 Aspose.OCR이 읽어낸 텍스트를 기준으로 비교할 수 있습니다. 이는 스캔본, 사진, 문서 스크린샷 등 동일한 텍스트가 픽셀은 다르게 나타나는 경우에 적합합니다—조금씩 위치가 달라지거나 품질이 다른 재스캔에서도 차이가 과도하게 표시되지 않습니다.
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");
}
}
제어할 수 있는 항목:
- 디스플레이 모드.
SIDE_BY_SIDE(기본값)는 두 이미지를 나란히 표시하고 변경된 단어를 박스로 표시합니다.TEXT는 인식된 텍스트만 보여주며, 그 안에서 변경 사항이 표시됩니다. - 변경 상세 정보. 각 변경은
OcrChangeInfo객체이며, 두 이미지에서 차지하는 박스(getSourceBoxes(),getTargetBoxes())와 인식 신뢰도(getConfidence())를 포함합니다.TEXT모드에서는 박스가 비어 있습니다. - 언어.
setLanguage(OcrLanguage)로 언어 또는 스크립트를 선택합니다; 기본값은LATIN입니다. 다른 언어는 최초 사용 시 다운로드되는 인식 모델이 필요합니다.setDisableResourceDownloads(true)와setResourcesPath(String)을 사용하면 이미 디스크에 있는 모델만 사용하도록 제한할 수 있습니다.
Aspose.OCR for Java는 클래스패스에 있어야 합니다. 이는 공개된 POM의 종속성이며 JAR에 포함되지 않습니다. 없을 경우 OCR 비교가 누락된 라이브러리를 가리키는 메시지와 함께 실패합니다.
스프레드시트 비교
내용으로 매칭되는 행
이전에는 두 워크북에서 같은 인덱스에 있는 행이 짝을 이루었습니다. 행이 삽입·삭제되면 그 이후 모든 행이 재작성된 것으로 보고되었습니다. 예를 들어, 6행 중 하나가 삭제된 워크북은 91개의 변경을 보고했지만, 이제는 8개만 보고합니다—삭제된 행의 6셀은 제자리에 표시되고, 요약 시트에 행 수만 표시됩니다.
이제 행과 열은 셀 내용에 따라 정렬됩니다. 두 파일 모두에서 동일한 행은 직접 짝을 이루고, 그 사이에 있는 내용만 정렬됩니다. 이러한 파일에 대해 보고되는 변경 수는 이전 버전과 다릅니다.
분이 아닌 초
동일한 파일이라도 스프레드시트 비교는 몇 분이 걸릴 수 있었습니다—200 × 20 시트 두 개가 2.5분이 걸렸습니다. 이제는 1초 미만(JVM 시작 후 첫 비교는 몇 초)이며, 400 × 20 시트에서 한 행이 삭제된 경우 약 7초가 소요됩니다.
각 비교 뒤에 수행되는 단어 차이 알고리즘이 재구성되어 이전과 동일한 결과를 훨씬 빠르게 반환합니다—따라서 Word, PDF 및 텍스트 비교도 이득을 얻습니다. 동일한 행과 열은 점수를 매기지 않고 짝을 이루므로, 완전히 동일한 시트는 전혀 정렬되지 않습니다.
행 높이, 숫자 유형 및 강조 색상
- 자체 높이가 없는 행은 결과에서 내용에 맞게 자동으로 맞춰집니다. 따라서 줄 바꿈이 있거나 큰 글꼴을 사용하는 셀도 더 이상 잘리지 않습니다. 명시적인 높이가 지정된 행은 그 높이를 유지합니다.
- 변경되지 않은 숫자와 날짜는 텍스트가 아닌 원래 유형을 유지합니다. 수식 셀은 계산된 값으로 계속 기록됩니다.
StyleSettings.setHighlightColor가 이제 변경된 셀의 배경을 채웁니다:
StyleSettings deleted = new StyleSettings();
deleted.setHighlightColor(Color.PINK);
CompareOptions options = new CompareOptions();
options.setDeletedItemStyle(deleted);
PDF 결과
소스 페이지 기반 레이아웃
PDF 엔진이 이제 GroupDocs.Comparison for .NET과 동일한 방식으로 결과를 레이아웃합니다:
- 결과의 모든 구성 요소가 소스 페이지에서 있던 위치에 그대로 남습니다; 이미지는 자체 좌표에 배치되고, 페이지의 벡터 그래픽도 그대로 전달됩니다.
- 표는 자체 격자를 그리고, 각 셀의 텍스트는 셀 자체 경계에서 줄 바꿈됩니다(병합 셀 포함).
- 선은 기준선 간 거리로 단락으로 그룹화되며, 페이지 여백은 페이지 자체에서 가져옵니다.
- 두 문서 모두에서 동일한 페이지는 문서 어디에서든 찾아지며, 시작 부분에만 국한되지 않고 다시 비교되지 않습니다.
이전 버전과 결과가 달라 보입니다. 삭제된 내용은 소스 페이지에 있던 위치에 그려지고, 대상에 다른 내용이 있으면 두 내용이 겹칠 수 있습니다.
작은 수정 사항
- 교체된 구문. 여러 단어가 교체될 때 한 쌍씩 그려져 “Richard McClintock”이 “Vasily Pupkin”으로 바뀔 경우 “Vasily Richard Pupkin McClintock”처럼 표시되었습니다. 인라인 결과는 이제 먼저 기존 구문을, 그 다음 새로운 구문을 표시합니다.
- 약간 길어진 줄. 인라인 결과에서 교체로 인해 한 단어가 길어진 줄이 마지막 단어를 다음 줄에 넘겨 쓰지 않게 되었습니다.
- 표 격자. 색상을 감지하지 못한 표 테두리가 이제 소스 자체 테두리 위에 검은색으로 칠해지지 않습니다.
- 양식으로 그려진 페이지. 스프레드시트를 PDF로 저장한 경우처럼 모든 내용을 양식으로 그리는 페이지가 더 이상 변경되지 않은 것으로 간주되지 않습니다. 이제 양식도 비교되어 변경 사항이 보고됩니다.
- 빈 줄. 공백만 있는 줄이 더 이상 변경으로 보고되지 않습니다.
- 목차. 변경된 목차 줄의 페이지 번호가 해당 줄에 유지됩니다.
기타 수정 사항
줄 바꿈을 넘는 텍스트
텍스트 파일의 한 줄을 길게 하거나 짧게 하면 그 뒤의 단어가 줄 바꿈을 넘어 이동합니다. 라인별로 비교하면 이러한 단어가 한 줄에서 삭제되고 다음 줄에 삽입된 것으로 보고되었습니다. 이제 라인을 합쳐서 변경 수를 줄이고, 하나의 연속된 흐름으로 비교한 뒤 대상 라인에 다시 배치합니다. 교체는 먼저 기존 텍스트를, 그 다음 새로운 텍스트를 표시하며, HTML 뷰는 텍스트 결과와 동일하게 수락·거부된 변경을 적용합니다. 하나의 파일을 여러 대상과 비교할 때는 여전히 라인별로 비교됩니다.
Word: 비어 있는 표 열 또는 행
표의 열이나 행이 비게 되면 삭제된 것으로 보고, 빈 열·행이 삽입된 것으로 표시되어 이후 셀들이 이동했습니다. 이제는 제자리에 남으며, 해당 내용만 삭제된 것으로 보고됩니다.
프레젠테이션: 외부 리소스
LoadOptions.setSkipExternalResources와 setWhitelistedResources는 26.10에서 추가되었지만 프레젠테이션에서는 적용되지 않았습니다. 이제 Word와 HTML 문서와 마찬가지로 프레젠테이션에도 적용되며, 결과 프레젠테이션은 외부 리소스를 절대 가져오지 않습니다. 로드되지 않은 그림은 빈 그림으로 비교됩니다.
HTML 미리보기
HTML 문서의 미리보기 페이지가 임시 디렉터리의 고정 파일 이름으로 렌더링되어 두 개의 미리보기가 동시에 서로의 페이지를 덮어쓰고 요청된 페이지 번호가 무시되었습니다. 이제 페이지는 메모리에서 렌더링되며, 요청된 페이지만 반환되고, 배경은 투명 대신 흰색으로 렌더링됩니다.
Aspose 라이브러리 업데이트
| 라이브러리 | 이전 | 현재 |
|---|---|---|
| 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 |
라이브러리는 이전과 같이 JAR에 포함됩니다. Aspose.OCR 26.10.0이 새로 추가되었으며 POM의 종속성으로 제공됩니다.
업데이트 받는 방법
Maven
pom.xml에 GroupDocs 저장소와 종속성을 추가합니다:
<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>
OCR 비교를 사용하지 않는 경우 Aspose.OCR 및 해당 네이티브 라이브러리를 제외할 수 있습니다:
<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>
직접 다운로드
Java용 GroupDocs.Comparison 26.11 다운로드 페이지에서 JAR 파일을 다운로드합니다.