Ми раді оголосити про випуск GroupDocs.Comparison for Java 26.11, доступний з листопада 2026. Основна функція — порівняння зображень на основі OCR: тепер зображення можна порівнювати за текстом, розпізнаним у них, а не за пікселями. Порівняння електронних таблиць зазнало значного оновлення — рядки зіставляються за вмістом, а порівняння великих листів займає секунди замість хвилин. PDF‑результати тепер розташовуються за вихідною сторінкою, так само, як у GroupDocs.Comparison for .NET, а набір виправлень охоплює порівняння тексту, Word, презентацій та попереднього перегляду HTML.

Що нового у цьому випуску

Ключ Опис Категорія
COMPARISONNET-4925, COMPARISONNET-4934 Зображення можна порівнювати за текстом, розпізнаним у них (OCR), а не за пікселями Функція
COMPARISONJAVA-1798, COMPARISONNET-4940, COMPARISONNET-4945 Рядки електронних таблиць зіставляються за вмістом: вставлений або видалений рядок більше не позначає всі наступні рядки як змінені Виправлення
COMPARISONJAVA-1797, COMPARISONNET-4930 Порівняння електронних таблиць займає секунди замість хвилин; швидший diff тексту у всіх форматах Виправлення
COMPARISONJAVA-1796, COMPARISONNET-4946 Результат XLSX: рядки без власної висоти залишаються підлаштованими під їх вміст Виправлення
COMPARISONNET-4947 Результат XLSX: незмінні числа та дати зберігають свій тип, а не перетворюються в текст Виправлення
COMPARISONNET-4944 StyleSettings.setHighlightColor заповнює фон змінених клітинок електронної таблиці Виправлення
COMPARISONNET-4927, COMPARISONNET-4928, COMPARISONNET-4923 Текст: слова, перенесені через розрив рядка, більше не позначаються як видалені та повторно вставлені Виправлення
COMPARISONNET-4403, COMPARISONNET-4891 PDF‑результати розташовані за вихідною сторінкою: компоненти на своїх позиціях, клітинки переносяться на власному краю Оновлення
COMPARISONNET-4931 Вбудований PDF‑результат показує замінену фразу цілком: спочатку старі слова, потім нові Виправлення
COMPARISONNET-4896 Вбудований PDF‑результат більше не переносить рядок, який став трохи довшим, на наступний рядок Виправлення
COMPARISONNET-4763 PDF‑результат більше не малює чорну сітку над власними межами таблиці Виправлення
— PDF‑сторінки, намальовані через форми (електронні таблиці, збережені як PDF), більше не вважаються незмінними Виправлення
— PDF: рядки, що складаються лише з пробілів, більше не позначаються як зміни Виправлення
— PDF: зміст зберігає номери сторінок у своїх рядках Виправлення
COMPARISONNET-4926 Word: колонка або рядок таблиці, який став порожнім, залишаються на місці замість видалення та повторного вставлення Виправлення
COMPARISONNET-4880 Презентації: LoadOptions.setSkipExternalResources і setWhitelistedResources тепер застосовуються Виправлення
COMPARISONNET-4935 Попередній перегляд HTML: одночасні попередні перегляди більше не перезаписують сторінки один одного; запитані сторінки враховуються Виправлення
COMPARISONJAVA-1794, COMPARISONJAVA-1795 Оновлені бібліотеки Aspose Оновлення

Зміни в поведінці, які слід перевірити перед оновленням

  1. Нова залежність. У опублікованому POM оголошено нову залежність, Aspose.OCR for Java, яка використовується лише для OCR‑порівняння. Вона додає ONNX Runtime з нативними бібліотеками. Якщо ви не використовуєте OCR, її можна виключити — інші типи порівняння працюватимуть без неї (див. Як отримати оновлення).
  2. Зміни в електронних таблицях. При вставці або видаленні рядків порівняння електронних таблиць повідомляє інші — і, зазвичай, значно менше — зміни, оскільки рядки тепер зіставляються за вмістом.
  3. PDF‑макет. PDF‑результати розташовуються інакше: кожен компонент залишається там, де був на вихідній сторінці.
  4. Порядок замін. У текстових та вбудованих PDF‑результатах замінене слово або фраза тепер спочатку показує старе, потім нове.
  5. Режим оцінки. У режимі оцінки порівнюються лише перші 2 сторінки PDF, як у 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 має бути в classpath. Це залежність опублікованого POM, а не частина jar‑файлу. Без неї OCR‑порівняння завершується помилкою з повідомленням про відсутню бібліотеку.

Порівняння електронних таблиць

Рядки, зіставлені за вмістом

Раніше рядки підбиралися за індексом у іншій книзі. При вставці або видаленні рядка всі наступні рядки позначалися як переписані. Наприклад, книга з шести рядків, у якій один рядок був видалений, генерувала 91 зміну; тепер — 8: шість клітинок видаленого рядка, позначені на місці, і підрахунок рядків у підсумковому листі.

Тепер рядки та колонки вирівнюються за вмістом їхніх клітинок. Рядки, які однакові в обох файлах, підбираються безпосередньо, а лише те, що між ними, вирівнюється. Кількість змін у таких файлах відрізняється від попередніх версій.

Секунди замість хвилин

Порівняння електронних таблиць могло займати хвилини навіть для ідентичних файлів: два однакових листи 200 × 20 займали 2,5 хвилини. Тепер вони виконуються за менше секунди (кілька секунд для першого порівняння після запуску JVM), а лист 400 × 20 з одним видаленим рядком — приблизно 7 секунд.

Алгоритм diff слів, що стоїть за кожним порівнянням, був переписаний і повертає той самий результат, лише значно швидше — тому виграють також порівняння 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

Додайте репозиторій GroupDocs та залежність у ваш pom.xml:

<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>

Пряме завантаження

Завантажте JAR з сторінки завантаження GroupDocs.Comparison for Java 26.11.

Ресурси