우리는 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

업그레이드 전 확인해야 할 동작 변경 사항

  1. 새 종속성. 공개된 POM에 Aspose.OCR for Java라는 새로운 종속성이 선언됩니다. 이는 OCR 비교에만 사용되며 ONNX Runtime과 네이티브 라이브러리를 포함합니다. OCR을 사용하지 않는 경우 이를 제외할 수 있습니다—다른 모든 비교는 제외해도 정상 작동합니다(업데이트 방법은 How to get the update 참고).
  2. 스프레드시트 변경 사항. 행이 삽입·삭제될 때, 이제 행이 내용으로 매칭되므로 보고되는 변경 사항이 훨씬 적어집니다.
  3. PDF 레이아웃. PDF 결과가 다르게 레이아웃됩니다: 각 구성 요소가 소스 페이지에서 있던 위치에 그대로 남습니다.
  4. 교체 순서. 텍스트 및 인라인 PDF 결과에서 교체된 단어나 구가 이제 먼저 기존 텍스트를, 그 다음 새로운 텍스트를 표시합니다.
  5. 평가 모드. 평가 모드에서는 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>

직접 다운로드

J​ava용 GroupDocs.Comparison 26.11 다운로드 페이지에서 JAR 파일을 다운로드합니다.

리소스