Estamos felizes em anunciar o lançamento do GroupDocs.Comparison for Java 26.11, disponível a partir de novembro de 2026. O recurso principal é a comparação de imagens baseada em OCR: agora as imagens podem ser comparadas pelo texto reconhecido nelas, em vez de pelos seus pixels. A comparação de planilhas recebe uma grande reformulação — as linhas são correspondidas pelo conteúdo, e comparar planilhas grandes leva segundos em vez de minutos. Os resultados em PDF agora são dispostos a partir da página de origem, da mesma forma que no GroupDocs.Comparison for .NET, e um conjunto de correções cobre comparação de texto, Word, apresentações e pré‑visualização HTML.

O que há de novo nesta versão

Chave Resumo Categoria
COMPARISONNET-4925, COMPARISONNET-4934 Imagens podem ser comparadas pelo texto reconhecido nelas (OCR) em vez de pelos seus pixels Recurso
COMPARISONJAVA-1798, COMPARISONNET-4940, COMPARISONNET-4945 Linhas de planilha são correspondidas pelo conteúdo: uma linha inserida ou excluída não marca mais todas as linhas subsequentes como alteradas Correção
COMPARISONJAVA-1797, COMPARISONNET-4930 Comparação de planilhas leva segundos em vez de minutos; diff de texto mais rápido em todos os formatos Correção
COMPARISONJAVA-1796, COMPARISONNET-4946 Resultado XLSX: linhas sem altura própria permanecem ajustadas ao seu conteúdo Correção
COMPARISONNET-4947 Resultado XLSX: números e datas inalterados mantêm seu tipo em vez de se tornarem texto Correção
COMPARISONNET-4944 StyleSettings.setHighlightColor preenche o fundo das células de planilha alteradas Correção
COMPARISONNET-4927, COMPARISONNET-4928, COMPARISONNET-4923 Texto: palavras deslocadas por quebras de linha não são mais relatadas como excluídas e reinseridas Correção
COMPARISONNET-4403, COMPARISONNET-4891 Resultados PDF dispostos a partir da página de origem: componentes em suas posições, células quebram na própria borda Atualização
COMPARISONNET-4931 Resultado PDF inline mostra uma frase substituída completa: primeiro as palavras antigas, depois as novas Correção
COMPARISONNET-4896 Resultado PDF inline não envolve mais uma linha que a comparação tornou levemente mais longa na linha seguinte Correção
COMPARISONNET-4763 Resultado PDF não desenha mais uma grade preta sobre as próprias bordas da tabela Correção
— Páginas PDF desenhadas por meio de formulários (planilhas salvas como PDF) não são mais consideradas inalteradas Correção
— PDF: linhas contendo apenas espaços não são mais relatadas como alterações Correção
— PDF: um índice mantém seus números de página nas linhas correspondentes Correção
COMPARISONNET-4926 Word: uma coluna ou linha de tabela que ficou vazia é mantida no lugar em vez de ser excluída e reinserida Correção
COMPARISONNET-4880 Apresentações: LoadOptions.setSkipExternalResources e setWhitelistedResources agora são aplicados Correção
COMPARISONNET-4935 Pré‑visualização HTML: pré‑visualizações simultâneas não sobrescrevem mais as páginas umas das outras; páginas solicitadas são honradas Correção
COMPARISONJAVA-1794, COMPARISONJAVA-1795 Bibliotecas Aspose atualizadas Atualização

Alterações de comportamento a verificar antes de atualizar

  1. Nova dependência. O POM publicado declara uma nova dependência, Aspose.OCR for Java, usada apenas pela comparação OCR. Ela traz o ONNX Runtime com bibliotecas nativas. Se você não usar OCR, pode excluí‑la — todas as demais comparações funcionam sem ela (veja Como obter a atualização).
  2. Alterações em planilhas. Quando linhas são inseridas ou excluídas, a comparação de planilhas relata alterações diferentes — e geralmente muito menos — porque as linhas agora são correspondidas pelo conteúdo.
  3. Layout de PDF. Os resultados em PDF são dispostos de forma diferente: cada componente permanece onde estava na página de origem.
  4. Ordem das substituições. Em resultados de texto e PDF inline, uma palavra ou frase substituída agora aparece primeiro a antiga, depois a nova.
  5. Modo de avaliação. Apenas as 2 primeiras páginas de um PDF são comparadas no modo de avaliação, como no GroupDocs.Comparison for .NET.

Novo recurso: comparar imagens por texto reconhecido (OCR)

Uma imagem agora pode ser comparada pelo texto que o Aspose.OCR lê nela, em vez de pelos seus pixels. Essa é a escolha certa para digitalizações, fotos e capturas de tela de documentos, onde o mesmo texto nunca produz os mesmos pixels — uma página re‑digitalizada com um leve deslocamento ou em qualidade diferente não mostra mais diferenças em todo o documento.

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");
    }
}

O que você pode controlar:

  • Modo de exibição. SIDE_BY_SIDE (padrão) mostra as duas imagens lado a lado com as palavras alteradas em caixas. TEXT mostra apenas o texto reconhecido, com as alterações marcadas nele.
  • Detalhes da mudança. Cada mudança é um OcrChangeInfo com as caixas que cobre em ambas as imagens (getSourceBoxes(), getTargetBoxes()) e a confiança do reconhecimento (getConfidence()). As caixas ficam vazias no modo TEXT.
  • Idioma. setLanguage(OcrLanguage) seleciona o idioma ou script; o padrão é LATIN. Outros idiomas precisam de um modelo de reconhecimento que é baixado no primeiro uso. setDisableResourceDownloads(true) e setResourcesPath(String) restringem o reconhecimento a modelos já presentes no disco.

Aspose.OCR for Java deve estar no classpath. Ele é uma dependência do POM publicado, não faz parte do JAR. Sem ele, uma comparação OCR falha com uma mensagem que indica a biblioteca ausente.

Comparação de planilhas

Linhas correspondidas por conteúdo

Anteriormente, as linhas eram pareadas com a linha no mesmo índice na outra planilha. Quando uma linha era inserida ou excluída, todas as linhas subsequentes eram relatadas como reescritas. Por exemplo, uma planilha de seis linhas com uma delas excluída produzia 91 alterações; agora produz 8 — as seis células da linha excluída, marcadas no lugar, e a contagem de linhas na planilha de resumo.

Linhas e colunas agora são alinhadas pelo conteúdo de suas células. Linhas que são iguais em ambos os arquivos são pareadas diretamente, e apenas o que está entre elas é alinhado. O número de alterações relatadas para esses arquivos difere das versões anteriores.

Segundos em vez de minutos

A comparação de planilhas podia levar minutos mesmo para arquivos idênticos: duas planilhas idênticas de 200 × 20 levavam 2,5 minutos. Agora levam menos de um segundo (alguns segundos para a primeira comparação após a JVM iniciar), e uma planilha de 400 × 20 com uma linha excluída leva cerca de 7 segundos.

O diff de palavras por trás de cada comparação foi refeito e devolve o mesmo resultado de antes, apenas muito mais rápido — assim, comparações de Word, PDF e texto também se beneficiam. Linhas e colunas idênticas são pareadas sem pontuação, de modo que duas planilhas idênticas não são alinhadas de forma alguma.

Alturas de linhas, tipos numéricos e cor de destaque

  • Linhas sem altura própria agora permanecem ajustadas ao seu conteúdo no resultado, de modo que células com quebra de linha e fonte grande não são mais cortadas. Linhas com altura explícita mantêm‑a.
  • Números e datas inalterados mantêm seu tipo em vez de serem gravados como texto. Células de fórmula ainda são gravadas com seus valores calculados.
  • StyleSettings.setHighlightColor agora preenche o fundo das células alteradas:
StyleSettings deleted = new StyleSettings();
deleted.setHighlightColor(Color.PINK);

CompareOptions options = new CompareOptions();
options.setDeletedItemStyle(deleted);

Resultados em PDF

Layout a partir da página de origem

O motor de PDF agora dispõe os resultados da mesma forma que o GroupDocs.Comparison for .NET:

  • cada componente do resultado fica onde estava na página de origem; imagens são posicionadas em suas próprias coordenadas, e os gráficos vetoriais da página são mantidos;
  • uma tabela desenha sua grade, e o texto de cada célula quebra na própria borda da célula, incluindo células mescladas;
  • linhas são agrupadas em parágrafos pela distância entre linhas de base, e as margens da página vêm da própria página;
  • páginas que são iguais em ambos os documentos são encontradas em qualquer posição no documento, não apenas no início, e não são comparadas novamente.

Os resultados parecem diferentes das versões anteriores. Conteúdo excluído é desenhado onde estava na página de origem; onde o destino tem outro conteúdo naquele local, os dois podem se sobrepor.

Pequenas correções

  • Frases substituídas. Uma substituição de várias palavras era desenhada um par de cada vez, de modo que “Richard McClintock” tornando‑se “Vasily Pupkin” era exibido como “Vasily Richard Pupkin McClintock”. O resultado inline agora mostra a frase antiga, depois a nova.
  • Linhas ligeiramente mais longas. Em um resultado inline, uma linha que uma substituição tornou uma palavra mais longa não envolve mais sua última palavra em uma linha própria sobre a linha seguinte.
  • Grades de tabelas. Uma borda de tabela cuja cor não podia ser detectada não é mais pintada de preto sobre as próprias bordas da fonte.
  • Páginas desenhadas por formulários. Páginas que desenham tudo por meio de formulários, como uma planilha salva como PDF, eram consideradas inalteradas. Os formulários agora também são comparados, de modo que suas alterações são relatadas.
  • Linhas em branco. Linhas contendo apenas espaços não são mais relatadas como alterações.
  • Índices. O número de página de uma linha de índice alterada permanece na sua linha.

Outras correções

Texto atravessando quebras de linha

Uma edição que alonga ou encurta uma linha de um arquivo de texto empurra palavras através das quebras de linha subsequentes. Comparado linha a linha, essas palavras eram relatadas como excluídas de uma linha e inseridas na próxima. Agora as linhas são unidas enquanto isso gera menos alterações, comparadas como um único fluxo e redistribuídas nas linhas do destino. Uma substituição é relatada primeiro a antiga, depois a nova, e a visualização HTML de uma comparação de texto aplica alterações aceitas e rejeitadas da mesma forma que o resultado de texto. Comparar um arquivo com vários alvos ainda compara linha a linha.

Word: coluna ou linha de tabela esvaziada

Quando uma coluna ou linha de uma tabela ficou vazia, ela era relatada como excluída e uma vazia como inserida, e as células subsequentes eram deslocadas. Agora ela permanece no lugar, com seu conteúdo relatado como excluído.

Apresentações: recursos externos

LoadOptions.setSkipExternalResources e setWhitelistedResources, adicionados em 26.10, não tinham efeito em apresentações. Eles agora se aplicam a apresentações assim como a documentos Word e HTML, e a apresentação resultante nunca busca recursos externos. Uma imagem que não foi carregada é comparada como uma imagem vazia.

Pré‑visualização HTML

Páginas de pré‑visualização de um documento HTML eram renderizadas para nomes de arquivos fixos no diretório temporário, de modo que duas pré‑visualizações simultâneas sobrescreviam as páginas uma da outra e os números de página solicitados eram ignorados. As páginas agora são renderizadas na memória, apenas as solicitadas são retornadas, e são renderizadas sobre fundo branco em vez de fundo transparente.

Bibliotecas Aspose atualizadas

Biblioteca Antes Agora
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

As bibliotecas são empacotadas no JAR como antes. Aspose.OCR 26.10.0 é nova e vem como dependência no POM.

Como obter a atualização

Maven

Adicione o repositório GroupDocs e a dependência ao seu 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>

Se você não usar comparação OCR, pode excluir Aspose.OCR e suas bibliotecas nativas:

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

Download direto

Baixe o JAR na página de download do GroupDocs.Comparison for Java 26.11.

Recursos