Siamo lieti di annunciare il rilascio di GroupDocs.Comparison for Java 26.11, disponibile a partire da novembre 2026. La funzionalità principale è il confronto di immagini basato su OCR: le immagini possono ora essere confrontate in base al testo riconosciuto al loro interno anziché ai pixel. Il confronto dei fogli di calcolo subisce una revisione importante — le righe vengono abbinate in base al contenuto, e il confronto di fogli di grandi dimensioni richiede secondi anziché minuti. I risultati PDF sono ora disposti a partire dalla pagina di origine, nello stesso modo di GroupDocs.Comparison for .NET, e una serie di correzioni copre il confronto di testo, Word, presentazioni e anteprima HTML.

Novità di questa versione

Chiave Riepilogo Categoria
COMPARISONNET-4925, COMPARISONNET-4934 Le immagini possono essere confrontate in base al testo riconosciuto (OCR) anziché ai pixel Funzionalità
COMPARISONJAVA-1798, COMPARISONNET-4940, COMPARISONNET-4945 Le righe dei fogli di calcolo sono abbinate in base al contenuto: una riga inserita o eliminata non segna più tutte le righe successive come modificate Correzione
COMPARISONJAVA-1797, COMPARISONNET-4930 Il confronto dei fogli di calcolo richiede secondi anziché minuti; diff di testo più veloce in tutti i formati Correzione
COMPARISONJAVA-1796, COMPARISONNET-4946 Risultato XLSX: le righe senza altezza propria rimangono adattate al loro contenuto Correzione
COMPARISONNET-4947 Risultato XLSX: numeri e date invariati mantengono il loro tipo invece di diventare testo Correzione
COMPARISONNET-4944 StyleSettings.setHighlightColor riempie lo sfondo delle celle del foglio di calcolo modificate Correzione
COMPARISONNET-4927, COMPARISONNET-4928, COMPARISONNET-4923 Testo: le parole spostate attraverso interruzioni di riga non sono più segnalate come cancellate e reinserite Correzione
COMPARISONNET-4403, COMPARISONNET-4891 Risultati PDF disposti a partire dalla pagina di origine: componenti alle loro posizioni, le celle avvolgono al loro bordo Aggiornamento
COMPARISONNET-4931 Il risultato PDF in linea mostra una frase sostituita interamente: prima le parole vecchie, poi quelle nuove Correzione
COMPARISONNET-4896 Il risultato PDF in linea non avvolge più una riga leggermente più lunga sulla riga successiva Correzione
COMPARISONNET-4763 Il risultato PDF non disegna più una griglia nera sopra i bordi della tabella Correzione
— Le pagine PDF generate tramite form (fogli di calcolo salvati come PDF) non sono più considerate invarianti Correzione
— PDF: le linee composte solo da spazi non sono più segnalate come modifiche Correzione
— PDF: un indice mantiene i numeri di pagina sulle proprie righe Correzione
COMPARISONNET-4926 Word: una colonna o riga di tabella diventata vuota viene mantenuta al suo posto invece di essere cancellata e reinserita Correzione
COMPARISONNET-4880 Presentazioni: LoadOptions.setSkipExternalResources e setWhitelistedResources ora hanno effetto Correzione
COMPARISONNET-4935 Anteprima HTML: le anteprime concorrenti non sovrascrivono più le pagine l’una dell’altra; le pagine richieste vengono rispettate Correzione
COMPARISONJAVA-1794, COMPARISONJAVA-1795 Librerie Aspose aggiornate Aggiornamento

Cambiamenti di comportamento da verificare prima dell’aggiornamento

  1. Nuova dipendenza. Il POM pubblicato dichiara una nuova dipendenza, Aspose.OCR for Java, utilizzata solo per il confronto OCR. Essa introduce ONNX Runtime con librerie native. Se non usi l’OCR, puoi escluderla — tutti gli altri confronti funzionano senza (vedi Come ottenere l’aggiornamento).
  2. Modifiche ai fogli di calcolo. Quando le righe sono state inserite o eliminate, il confronto dei fogli di calcolo segnala modifiche diverse — e di solito molto meno — perché le righe ora sono abbinate in base al contenuto.
  3. Layout PDF. I risultati PDF sono disposti diversamente: ogni componente rimane dove era nella pagina di origine.
  4. Ordine delle sostituzioni. Nei risultati di testo e PDF in linea, una parola o frase sostituita ora viene mostrata prima la vecchia, poi la nuova.
  5. Modalità di valutazione. Solo le prime 2 pagine di un PDF sono confrontate in modalità di valutazione, come in GroupDocs.Comparison for .NET.

Nuova funzionalità: confrontare immagini per testo riconosciuto (OCR)

Un’immagine può ora essere confrontata in base al testo che Aspose.OCR legge al suo interno, anziché ai pixel. Questa è la scelta giusta per scansioni, foto e screenshot di documenti, dove lo stesso testo non produce mai gli stessi pixel — una pagina ricampionata con un leggero spostamento o a diversa qualità non mostra più differenze ovunque.

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

Cosa puoi controllare:

  • Modalità di visualizzazione. SIDE_BY_SIDE (predefinita) mostra le due immagini affiancate con le parole modificate evidenziate. TEXT mostra solo il testo riconosciuto, con le modifiche evidenziate al suo interno.
  • Dettagli della modifica. Ogni modifica è un OcrChangeInfo con le caselle che copre su entrambe le immagini (getSourceBoxes(), getTargetBoxes()) e la confidenza del riconoscimento (getConfidence()). Le caselle sono vuote in modalità TEXT.
  • Lingua. setLanguage(OcrLanguage) seleziona la lingua o lo script; il valore predefinito è LATIN. Altre lingue richiedono un modello di riconoscimento scaricato al primo utilizzo. setDisableResourceDownloads(true) e setResourcesPath(String) limitano il riconoscimento ai modelli già presenti su disco.

Aspose.OCR for Java deve essere presente nel classpath. È una dipendenza del POM pubblicato, non fa parte del JAR. Senza di essa, un confronto OCR fallisce con un messaggio che indica la libreria mancante.

Confronto dei fogli di calcolo

Righe abbinate in base al contenuto

In precedenza, le righe venivano associate alla riga con lo stesso indice nell’altro workbook. Quando una riga veniva inserita o eliminata, ogni riga successiva veniva segnalata come riscritta. Per esempio, un workbook di sei righe con una riga eliminata produceva 91 modifiche; ora ne produce 8 — le sei celle della riga eliminata, segnate al loro posto, e il conteggio delle righe nel foglio di riepilogo.

Le righe e le colonne sono ora allineate in base al contenuto delle loro celle. Le righe identiche in entrambi i file sono abbinate direttamente, e solo ciò che si trova tra di esse viene allineato. Il numero di modifiche segnalate per tali file differisce dalle versioni precedenti.

Secondi anziché minuti

Il confronto dei fogli di calcolo poteva richiedere minuti anche per file identici: due fogli 200 × 20 identici richiedevano 2,5 minuti. Ora richiedono meno di un secondo (alcuni secondi per il primo confronto dopo l’avvio della JVM), e un foglio 400 × 20 con una riga eliminata richiede circa 7 secondi.

Il diff di parole alla base di ogni confronto è stato riscritto e restituisce lo stesso risultato di prima, solo molto più veloce — così anche il confronto di Word, PDF e testo ne trae beneficio. Le righe e colonne identiche sono abbinate senza punteggio, quindi due fogli identici non vengono allineati affatto.

Altezza delle righe, tipi numerici e colore di evidenziazione

  • Le righe senza altezza propria ora si adattano al loro contenuto nel risultato, così le celle avvolte e con caratteri grandi non vengono più tagliate. Le righe con altezza esplicita la mantengono.
  • Numeri e date invariati mantengono il loro tipo invece di essere riscritti come testo. Le celle con formula sono ancora scritte con i valori calcolati.
  • StyleSettings.setHighlightColor ora riempie lo sfondo delle celle modificate:
StyleSettings deleted = new StyleSettings();
deleted.setHighlightColor(Color.PINK);

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

Risultati PDF

Layout dalla pagina di origine

Il motore PDF ora dispone i risultati nello stesso modo di GroupDocs.Comparison for .NET:

  • ogni componente del risultato rimane dove era nella pagina di origine; le immagini sono posizionate alle loro coordinate, e la grafica vettoriale della pagina è trasferita;
  • una tabella disegna la sua griglia, e il testo di ogni cella avvolge al bordo della cella stessa, incluse le celle unite;
  • le linee sono raggruppate in paragrafi in base alla distanza tra le linee di base, e i margini della pagina provengono dalla pagina stessa;
  • le pagine identiche in entrambi i documenti possono trovarsi ovunque nel documento, non solo all’inizio, e non vengono più confrontate.

I risultati appaiono diversi rispetto alle versioni precedenti. Il contenuto eliminato è disegnato dove si trovava nella pagina di origine; dove il documento di destinazione ha altro contenuto in quel punto, i due possono sovrapporsi.

Correzioni minori

  • Frasi sostituite. Una sostituzione di più parole veniva disegnata una coppia alla volta, così “Richard McClintock” diventato “Vasily Pupkin” veniva letto “Vasily Richard Pupkin McClintock”. Il risultato in linea ora mostra prima la frase vecchia, poi quella nuova.
  • Linee leggermente più lunghe. In un risultato in linea, una linea che una sostituzione ha allungato di una parola non avvolge più la sua ultima parola su una riga a sé stante.
  • Griglie delle tabelle. Un bordo di tabella il cui colore non poteva essere rilevato non viene più dipinto di nero sopra i bordi originali.
  • Pagine generate tramite form. Le pagine che disegnano tutto tramite form, come un foglio di calcolo salvato come PDF, non erano più considerate invarianti. Ora i form vengono confrontati, quindi le loro modifiche sono segnalate.
  • Righe vuote. Le righe composte solo da spazi non sono più segnalate come modifiche.
  • Indici. Il numero di pagina di una riga di indice modificata rimane sulla sua riga.

Altre correzioni

Testo attraverso interruzioni di riga

Una modifica che allunga o accorcia una riga di un file di testo sposta parole attraverso le interruzioni di riga successive. Confrontate riga per riga, quelle parole venivano segnalate come cancellate da una riga e inserite nella successiva. Ora le righe vengono unite quando ciò produce meno modifiche, confrontate come un unico flusso e ridistribuite sulle righe di destinazione. Una sostituzione è segnalata prima la vecchia, poi la nuova, e la vista HTML di un confronto di testo applica le modifiche accettate e rifiutate allo stesso modo del risultato di testo. Confrontare un file con più destinazioni continua a confrontare riga per riga.

Word: colonna o riga di tabella svuotata

Quando una colonna o riga di una tabella diventava vuota, veniva segnalata come cancellata e una vuota come inserita, facendo spostare le celle successive. Ora rimane al suo posto, con il contenuto segnalato come cancellato.

Presentazioni: risorse esterne

LoadOptions.setSkipExternalResources e setWhitelistedResources, aggiunti nella 26.10, non avevano effetto sulle presentazioni. Ora hanno effetto su presentazioni così come su documenti Word e HTML, e la presentazione risultante non scarica mai risorse esterne. Un’immagine non caricata è confrontata come immagine vuota.

Anteprima HTML

Le pagine di anteprima di un documento HTML venivano renderizzate con nomi di file fissi nella directory temporanea, così due anteprime simultanee sovrascrivevano le pagine l’una dell’altra e i numeri di pagina richiesti venivano ignorati. Ora le pagine sono renderizzate in memoria, solo quelle richieste vengono restituite, e sono renderizzate su sfondo bianco anziché trasparente.

Librerie Aspose aggiornate

Libreria Prima Ora
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

Le librerie sono incluse nel JAR come prima. Aspose.OCR 26.10.0 è nuova e viene fornita come dipendenza nel POM.

Come ottenere l’aggiornamento

Maven

Aggiungi il repository GroupDocs e la dipendenza al tuo 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 non utilizzi il confronto OCR, puoi escludere Aspose.OCR e le sue librerie native:

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

Scarica il JAR dalla pagina di download GroupDocs.Comparison for Java 26.11.

Risorse