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ón | Prácticas recomendadas | razón |
|---|---|---|
Ambos documentos se llaman final.pdf. | Compare resúmenes SHA-256, no nombres de archivos | El contenido de archivos con el mismo nombre puede ser diferente. |
| El archivo ha sido renombrado | Utilice el resumen para confirmar si se trata del mismo contenido de bytes | El 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 metadatos | Volver a grabar como contenido de bytes nuevos | Los 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ón | Cómo podría cambiar el hash | Cómo explicarlo |
|---|---|---|
| Solo cambia el nombre del archivo | y no cambió | Los nombres no participan en los resúmenes de bytes |
| Los metadatos del PDF fueron reescritos | Cambio | La página puede parecer igual o diferente |
| Volver a guardar el archivo comprimido | Cambio | Los parámetros de compresión o las marcas de tiempo pueden afectar a los bytes |
| Traducir a otro idioma | Normalmente, las cosas cambian | La 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 archivos | Solo significa que los nombres son iguales | Si el contenido es consistente |
| Comparación del resumen de SHA-256 | Comprueba si el contenido de ByteDance es exactamente el mismo | Si 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


