Nos complace anunciar el lanzamiento de GroupDocs.Comparison for Java 26.11, disponible a partir de noviembre de 2026. La característica principal es la comparación de imágenes basada en OCR: ahora las imágenes pueden compararse por el texto reconocido en ellas en lugar de por sus píxeles. La comparación de hojas de cálculo recibe una revisión importante: las filas se emparejan por contenido, y comparar hojas grandes lleva segundos en lugar de minutos. Los resultados PDF ahora se disponen a partir de la página de origen, de la misma manera que en GroupDocs.Comparison for .NET, y un conjunto de correcciones cubre la comparación de vista previa de texto, Word, presentaciones y HTML.
Novedades en esta versión
| Clave | Resumen | Categoría |
|---|---|---|
| COMPARISONNET-4925, COMPARISONNET-4934 | Las imágenes pueden compararse por el texto reconocido en ellas (OCR) en lugar de por sus píxeles | Funcionalidad |
| COMPARISONJAVA-1798, COMPARISONNET-4940, COMPARISONNET-4945 | Las filas de la hoja de cálculo se emparejan por contenido: una fila insertada o eliminada ya no marca como cambiadas todas las filas siguientes | Corrección |
| COMPARISONJAVA-1797, COMPARISONNET-4930 | La comparación de hojas de cálculo lleva segundos en lugar de minutos; diff de texto más rápido en todos los formatos | Corrección |
| COMPARISONJAVA-1796, COMPARISONNET-4946 | Resultado XLSX: las filas sin altura propia permanecen ajustadas a su contenido | Corrección |
| COMPARISONNET-4947 | Resultado XLSX: los números y fechas sin cambios conservan su tipo en lugar de convertirse en texto | Corrección |
| COMPARISONNET-4944 | StyleSettings.setHighlightColor rellena el fondo de las celdas de hoja de cálculo modificadas |
Corrección |
| COMPARISONNET-4927, COMPARISONNET-4928, COMPARISONNET-4923 | Texto: las palabras desplazadas a través de saltos de línea ya no se reportan como eliminadas y reinsertadas | Corrección |
| COMPARISONNET-4403, COMPARISONNET-4891 | Resultados PDF dispuestos a partir de la página de origen: componentes en sus posiciones, celdas envueltas en su propio borde | Actualización |
| COMPARISONNET-4931 | El resultado PDF en línea muestra una frase reemplazada completa: primero las palabras antiguas, luego las nuevas | Corrección |
| COMPARISONNET-4896 | El resultado PDF en línea ya no envuelve una línea ligeramente alargada por el reemplazo en la línea siguiente | Corrección |
| COMPARISONNET-4763 | El resultado PDF ya no dibuja una cuadrícula negra sobre los propios bordes de una tabla | Corrección |
| — | Las páginas PDF dibujadas mediante formularios (hojas de cálculo guardadas como PDF) ya no se consideran sin cambios | Corrección |
| — | PDF: las líneas compuestas solo de espacios ya no se reportan como cambios | Corrección |
| — | PDF: una tabla de contenidos mantiene sus números de página en sus líneas | Corrección |
| COMPARISONNET-4926 | Word: una columna o fila de tabla que quedó vacía se mantiene en su lugar en lugar de eliminarse y volver a insertarse | Corrección |
| COMPARISONNET-4880 | Presentaciones: LoadOptions.setSkipExternalResources y setWhitelistedResources ahora se aplican |
Corrección |
| COMPARISONNET-4935 | Vista previa HTML: las vistas previas concurrentes ya no sobrescriben las páginas de la otra; se respetan las páginas solicitadas | Corrección |
| COMPARISONJAVA-1794, COMPARISONJAVA-1795 | Bibliotecas Aspose actualizadas | Actualización |
Cambios de comportamiento a revisar antes de actualizar
- Nueva dependencia. El POM publicado declara una nueva dependencia, Aspose.OCR for Java, utilizada solo por la comparación OCR. Incluye ONNX Runtime con bibliotecas nativas. Si no usas OCR, puedes excluirla — todas las demás comparaciones funcionan sin ella (ver Cómo obtener la actualización).
- Cambios en hojas de cálculo. Cuando se insertan o eliminan filas, la comparación de hojas de cálculo informa menos cambios, ya que ahora las filas se emparejan por contenido.
- Diseño PDF. Los resultados PDF se disponen de forma diferente: cada componente permanece donde estaba en la página de origen.
- Orden de los reemplazos. En los resultados de texto y PDF en línea, una palabra o frase reemplazada ahora se muestra primero la antigua y luego la nueva.
- Modo de evaluación. Solo las primeras 2 páginas de un PDF se comparan en modo de evaluación, como en GroupDocs.Comparison for .NET.
Nueva funcionalidad: comparar imágenes por texto reconocido (OCR)
Una imagen ahora puede compararse por el texto que Aspose.OCR lee en ella, en lugar de por sus píxeles. Esta es la opción adecuada para escaneos, fotos y capturas de pantalla de documentos, donde el mismo texto nunca produce los mismos píxeles — una página reescaneada con un ligero desplazamiento o con distinta calidad ya no muestra diferencias en todas partes.
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");
}
}
Lo que puedes controlar:
- Modo de visualización.
SIDE_BY_SIDE(predeterminado) muestra las dos imágenes una al lado de la otra con las palabras modificadas enmarcadas.TEXTmuestra solo el texto reconocido, con los cambios marcados en él. - Detalles del cambio. Cada cambio es un
OcrChangeInfocon los recuadros que cubre en ambas imágenes (getSourceBoxes(),getTargetBoxes()) y la confianza del reconocimiento (getConfidence()). Los recuadros están vacíos en modoTEXT. - Idioma.
setLanguage(OcrLanguage)selecciona el idioma o guion; el predeterminado esLATIN. Otros idiomas requieren un modelo de reconocimiento que se descarga en el primer uso.setDisableResourceDownloads(true)ysetResourcesPath(String)limitan el reconocimiento a los modelos ya presentes en disco.
Aspose.OCR for Java debe estar en el classpath. Es una dependencia del POM publicado, no forma parte del JAR. Sin ella, una comparación OCR falla con un mensaje que indica la biblioteca faltante.
Comparación de hojas de cálculo
Filas emparejadas por contenido
Anteriormente, las filas se emparejaban con la fila del mismo índice en el otro libro. Cuando se insertaba o eliminaba una fila, cada fila posterior se reportaba como reescrita. Por ejemplo, un libro de seis filas con una eliminada producía 91 cambios; ahora produce 8 — las seis celdas de la fila eliminada, marcadas en su lugar, y el recuento de filas en la hoja de resumen.
Ahora las filas y columnas se alinean por el contenido de sus celdas. Las filas que son iguales en ambos archivos se emparejan directamente, y solo lo que está entre ellas se alinea. El número de cambios reportados para dichos archivos difiere de versiones anteriores.
Segundos en lugar de minutos
La comparación de hojas de cálculo podía tardar minutos incluso para archivos idénticos: dos hojas idénticas de 200 × 20 tardaban 2,5 minutos. Ahora tardan menos de un segundo (unos pocos segundos para la primera comparación después de iniciar la JVM), y una hoja de 400 × 20 con una fila eliminada lleva alrededor de 7 segundos.
El diff de palabras detrás de cada comparación se reworkeó y devuelve el mismo resultado que antes, solo mucho más rápido — por lo que la comparación de Word, PDF y texto también se beneficia. Las filas y columnas idénticas se emparejan sin puntuación, de modo que dos hojas idénticas no se alinean en absoluto.
Alturas de fila, tipos numéricos y color de resaltado
- Las filas sin altura propia ahora se ajustan a su contenido en el resultado, por lo que las celdas envueltas y con fuente grande ya no se recortan. Las filas con altura explícita la conservan.
- Los números y fechas sin cambios conservan su tipo en lugar de volver a escribirse como texto. Las celdas de fórmula siguen escribiéndose con sus valores calculados.
StyleSettings.setHighlightColorahora rellena el fondo de las celdas modificadas:
StyleSettings deleted = new StyleSettings();
deleted.setHighlightColor(Color.PINK);
CompareOptions options = new CompareOptions();
options.setDeletedItemStyle(deleted);
Resultados PDF
Disposición a partir de la página de origen
El motor PDF ahora dispone los resultados de la misma forma que GroupDocs.Comparison for .NET:
- cada componente del resultado permanece donde estaba en la página de origen; las imágenes se colocan en sus propias coordenadas, y los gráficos vectoriales de la página se trasladan;
- una tabla dibuja su cuadrícula, y el texto de cada celda se envuelve en el propio borde de la celda, incluidas las celdas combinadas;
- las líneas se agrupan en párrafos según la distancia entre líneas base, y los márgenes de página provienen de la propia página;
- las páginas que son iguales en ambos documentos se encuentran en cualquier posición del documento, no solo al inicio, y no se vuelven a comparar.
Los resultados se ven diferentes a versiones anteriores. El contenido eliminado se dibuja donde estaba en la página de origen; donde el destino tiene otro contenido en ese lugar, ambos pueden superponerse.
Correcciones menores
- Frases reemplazadas. Un reemplazo de varias palabras se dibujaba una pareja a la vez, de modo que “Richard McClintock” convirtiéndose en “Vasily Pupkin” se leía “Vasily Richard Pupkin McClintock”. El resultado en línea ahora muestra la frase antigua, luego la nueva.
- Líneas alargadas ligeramente. En un resultado en línea, una línea que un reemplazo alargó una palabra ya no envuelve su última palabra en una línea propia sobre la siguiente línea.
- Cuadrículas de tabla. Un borde de tabla cuyo color no podía detectarse ya no se pinta de negro sobre los propios bordes de la tabla.
- Páginas dibujadas mediante formularios. Las páginas que dibujan todo a través de formularios, como una hoja de cálculo guardada como PDF, se tomaban como sin cambios. Ahora los formularios también se comparan, por lo que sus cambios se reportan.
- Líneas en blanco. Las líneas que solo contienen espacios ya no se reportan como cambios.
- Tablas de contenido. El número de página de una línea de tabla de contenido modificada permanece en su línea.
Otras correcciones
Texto a través de saltos de línea
Una edición que alarga o acorta una línea de un archivo de texto empuja palabras a través de los saltos de línea posteriores. Comparadas línea por línea, esas palabras se reportaban como eliminadas de una línea e insertadas en la siguiente. Ahora las líneas se unen mientras eso produce menos cambios, se comparan como una sola ejecución y se redistribuyen en las líneas del destino. Un reemplazo se reporta primero el antiguo, luego el nuevo, y la vista HTML de una comparación de texto aplica los cambios aceptados y rechazados de la misma forma que el resultado de texto. Comparar un archivo con varios destinos sigue comparando línea por línea.
Word: columna o fila de tabla vacía
Cuando una columna o fila de una tabla quedó vacía, se reportaba como eliminada y una vacía como insertada, y las celdas posteriores se desplazaban. Ahora permanece en su lugar, con su contenido reportado como eliminado.
Presentaciones: recursos externos
LoadOptions.setSkipExternalResources y setWhitelistedResources, añadidos en 26.10, no tenían efecto en presentaciones. Ahora se aplican a presentaciones al igual que a documentos Word y HTML, y la presentación resultante nunca recupera recursos externos. Una imagen que no se cargó se compara como una imagen vacía.
Vista previa HTML
Las páginas de vista previa de un documento HTML se renderizaban con nombres de archivo fijos en el directorio temporal, de modo que dos vistas previas simultáneas sobrescribían las páginas de la otra y se ignoraban los números de página solicitados. Ahora las páginas se renderizan en memoria, solo se devuelven las solicitadas, y se renderizan sobre fondo blanco en lugar de un fondo transparente.
Bibliotecas Aspose actualizadas
| Biblioteca | Antes | Ahora |
|---|---|---|
| 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 |
Las bibliotecas se empaquetan en el JAR como antes. Aspose.OCR 26.10.0 es nueva y llega como dependencia en el POM.
Cómo obtener la actualización
Maven
Agrega el repositorio GroupDocs y la dependencia a tu 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>
Si no utilizas la comparación OCR, puedes excluir Aspose.OCR y sus 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>
Descarga directa
Descarga el JAR desde la página de descarga de GroupDocs.Comparison for Java 26.11.