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

  1. 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).
  2. 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.
  3. Diseño PDF. Los resultados PDF se disponen de forma diferente: cada componente permanece donde estaba en la página de origen.
  4. 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.
  5. 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. TEXT muestra solo el texto reconocido, con los cambios marcados en él.
  • Detalles del cambio. Cada cambio es un OcrChangeInfo con los recuadros que cubre en ambas imágenes (getSourceBoxes(), getTargetBoxes()) y la confianza del reconocimiento (getConfidence()). Los recuadros están vacíos en modo TEXT.
  • Idioma. setLanguage(OcrLanguage) selecciona el idioma o guion; el predeterminado es LATIN. Otros idiomas requieren un modelo de reconocimiento que se descarga en el primer uso. setDisableResourceDownloads(true) y setResourcesPath(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.setHighlightColor ahora 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.

Recursos