Los archivos con el mismo nombre no representan la misma copia: use hash de contenido para identificar la entrada

El cliente envió dos documentos, ambos llamados `final.pdf`, ¿cuál fue traducido? Es peligroso confiar en los nombres de archivos para responder esta pregunta. Los archivos con el mismo nombre pueden tener contenidos diferentes y los archivos con nombres cambiados pueden tener los mismos bytes. Los hashes de contenido son adecuados para establecer correspondencias de versiones, pero no se les debe dar un significado que no tienen.

Los archivos con el mismo nombre no son necesariamente iguales y los archivos con nombres cambiados pueden tener exactamente el mismo contenido. Si un equipo depende de los nombres de los archivos para realizar un seguimiento de las traducciones, es fácil obtener la versión incorrecta. Este artículo explica cómo utilizar el hash de contenido para dejar huellas digitales de entrada y salida a nivel de bytes, y lo que el hash puede y no puede probar.

Los ejemplos utilizan muestras sintéticas para demostrar métodos de procesamiento. El código sólo ha sido probado en un entorno aislado y no representa una garantía de todos los archivos reales o efectos del producto. Antes de procesar documentos importantes, conserve los originales y revíselos de acuerdo con los límites y elementos de aceptación del texto.

¿Por qué los nombres de archivos no son confiables? Conclusión de una frase

Utilice el hash de contenido para corresponder a la versión y el nombre del archivo es solo como referencia. La siguiente tabla explica qué hacer en situaciones comunes.

tu situaciónPrácticas recomendadasrazón
Ambos documentos se llaman final.pdf.Compare resúmenes SHA-256, no nombres de archivosEl contenido de archivos con el mismo nombre puede ser diferente.
El archivo ha sido renombradoUtilice el resumen para confirmar si se trata del mismo contenido de bytesEl nombre no participa en el resumen de bytes.
Es necesario confirmar a qué entrada corresponde la traducción.Registre resúmenes de entradas y salidas por separado.La entrada y la salida son contenidos de bytes diferentes.
Los archivos se pueden volver a guardar o se pueden sobrescribir los metadatosVolver a grabar como contenido de bytes nuevosLos cambios en los metadatos o los parámetros de compresión pueden afectar los hashes

Deje una huella digital de bytes para la entrada

SHA-256 calcula el resumen en función de los bytes del archivo. Los archivos grandes se pueden leer en fragmentos sin tener que cargarlos en la memoria a la vez. El resultado del hash no tiene nada que ver con el tamaño del fragmento, el fragmento es solo una estrategia de lectura y no parte de la identidad del archivo. Los flujos de memoria a continuación son muestras sintéticas y no contienen documentos reales.

Utilice el mismo contenido y diferentes bloques para verificar la implementación.

import hashlib
from io import BytesIO

def digest(stream, chunk_size=65536):
    if type(chunk_size) is not int or chunk_size <= 0:
        raise ValueError("positive chunk size required")
    h = hashlib.sha256()
    while block := stream.read(chunk_size):
        h.update(block)
    return h.hexdigest()

raw = b"synthetic document version A\n"
a = digest(BytesIO(raw), 3)
assert a == digest(BytesIO(raw), 4096)
assert a == hashlib.sha256(raw).hexdigest()
assert a != digest(BytesIO(raw.replace(b"A", b"B")))
assert digest(BytesIO(b"")) == hashlib.sha256(b"").hexdigest()
try:
    digest(BytesIO(raw), 0)
except ValueError:
    pass
else:
    raise AssertionError("zero chunk must be rejected")

La función comienza a leer desde la posición actual de la transmisión. Antes de realizar la llamada formal, se debe tener claro si la transmisión está al inicio. Si el analizador ya ha leído parte del contenido, el resultado del cálculo directo no es el "hash completo del archivo". El enfoque más seguro es activar la entrada de solo lectura individualmente o restablecerla explícitamente antes de calcularla en una secuencia objetivo.

¿Cuál es la diferencia entre los mismos bytes y el mismo contenido?

El hash solo refleja si los bytes son consistentes y diferentes operaciones tienen diferentes efectos en ellos.

SituaciónCómo podría cambiar el hashCómo explicarlo
Solo cambia el nombre del archivoy no cambióLos nombres no participan en los resúmenes de bytes
Los metadatos del PDF fueron reescritosCambioLa página puede parecer igual o diferente
Volver a guardar el archivo comprimidoCambioLos parámetros de compresión o las marcas de tiempo pueden afectar a los bytes
Traducir a otro idiomaNormalmente, las cosas cambianLa entrada y la salida deben registrarse por separado

📊 Comparación de núcleos

Métodos de juicio¿Qué puede decir?No prueba nada
Comparar nombres de archivosSolo significa que los nombres son igualesSi el contenido es consistente
Comparación del resumen de SHA-256Comprueba si el contenido de ByteDance es exactamente el mismoSi tienes derecho a usar el documento o si eres propietario de los derechos de autor

🎯 ¿Qué método te conviene?

Si necesitas confirmar si los dos documentos son consistentes

Comparando los resúmenes de SHA-256, los resúmenes son los mismos pero el mismo contenido de bytes instruccionales, por lo que el nombre del archivo no se usa como referencia.

Si necesitas rastrear el origen de tu traducción

Registra por separado los resúmenes de entrada y salida, y luego asocia versiones de lenguaje y terminología.

Si planeas usar hash para determinar los permisos de archivo

No hagas eso. Un hash no es una credencial de permiso y requiere un control de acceso separado.

❓ Preguntas frecuentes (FAQ)

1. ¿Cambiar el nombre del archivo cambia el hash?

No. El nombre no participa en el resumen del byte; solo se cambia el nombre del archivo y el hash permanece sin cambios.

2. ¿Solo porque la página se vea igual, el hash tiene que ser siempre idéntico?

No necesariamente. Cuando se reescriben los metadatos del PDF, el hash puede cambiar incluso si la página se muestra igual.

3. ¿Pueden los hashes determinar si los usuarios tienen derecho a descargar archivos?

No. Conocer el resumen del archivo no significa que tengas derecho a descargarlo, ni que poseas los derechos de autor.

4. ¿Cuáles son los riesgos de la deduplicación entre inquilinos?

Puede filtrar información sobre "si un archivo ya existe", por lo que el control de acceso debe aplicarse incluso después de que la caché se active.

La lista de traducciones empieza aquí

Antes de enviar el archivo a OmniDoc (Entrada de producto), registra el resumen de entrada; Tras descargar la traducción, registra el resumen de salida y asócialo con las versiones del idioma y la terminología. Si un compañero luego informa de "el resultado es incorrecto", ambas partes pueden primero confirmar que se está comprobando el mismo conjunto de archivos, en lugar de adivinar repetidamente entre varios nombres de archivos final.

Referencias: Python hashlib.

📝 Resumen

El mismo nombre no significa la misma copia; los nombres de los archivos son solo para referencia. Utilizar hashes de contenido para registrar entrada y salida permite a los equipos alinear primero el archivo y luego discutir los resultados de la traducción.

Experiencia ahora: Sube tu documento para empezar a traducir, conservando el formato original

Actualizado 2026-11-11