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
- 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).
- 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.
- Layout PDF. I risultati PDF sono disposti diversamente: ogni componente rimane dove era nella pagina di origine.
- 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.
- 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.TEXTmostra solo il testo riconosciuto, con le modifiche evidenziate al suo interno. - Dettagli della modifica. Ogni modifica è un
OcrChangeInfocon 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)esetResourcesPath(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.setHighlightColorora 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.