El número de traducciones no es pequeño, pero se pierde la unidad: la inspección debe dividirse en dos niveles

Este artículo propone una estrategia de verificación jerárquica para abordar el problema de emparejar números de cantidad con unidades en la aceptación de la traducción. A través del módulo decimal de la biblioteca estándar de Python, se demuestra cómo analizar y comparar con precisión valores de cantidad y evitar trampas de precisión de punto flotante; también define los límites de responsabilidad de la verificación automatizada del código y la revisión semántica manual, y combina OmniDoc para ilustrar el camino práctico de aceptación de la entrega de traducción de documentos.

Los números en la traducción no parecen faltar, pero es posible que las unidades se hayan perdido silenciosamente. Una vez que los montos o cantidades en las cotizaciones, declaraciones y datos técnicos sean incorrectos, las implicaciones comerciales reales se verán afectadas, por lo que los números deben verificarse individualmente antes de la entrega.

Este artículo está escrito para quienes son responsables de la aceptación de documentos traducidos, especialmente aquellos que frecuentemente tratan con cotizaciones, estados financieros y hojas de datos técnicos. El artículo explicará por qué 1,234.50 puede convertirse en 1.234,50 en la traducción, cómo declarar primero las reglas de entrada y luego comparar valores, y qué juicios aún deben hacerse manualmente. Después de leer, puede crear un conjunto de comprobaciones de dos capas: el código automatizado es responsable de los formatos y valores, y los humanos son responsables de la semántica y los campos comerciales.

Los ejemplos de este artículo utilizan muestras sintéticas y el código ha pasado comprobaciones de muestra en un entorno aislado, pero esto no representa una garantía de todos los archivos o efectos del producto reales. Conserve los originales antes de manipular documentos importantes.

El número de traducciones no es pequeño, ¿cómo aceptarlo? Conclusión de una frase

Para la verificación numérica, primero se deben declarar las reglas de entrada y luego comparar los valores normalizados. La moneda y la unidad se conservan como campos independientes.

tu situaciónPrácticas recomendadasrazón
Mismo valor, diferente monedaCompruebe si la etiqueta de moneda ha sido cambiadano debe considerarse equivalente por defecto
El formato no se ajusta a la declaración.Verifique la ubicación de origen o el proceso de extracciónNo se debe eliminar toda puntuación incondicionalmente.
El signo negativo desapareceCombinando el texto fuente y la verificación del contexto de traducciónLos valores absolutos no deben tomarse automáticamente
Precisión disminuidaRonda y registro según las reglas.No se deben ignorar las diferencias

Declarar primero las reglas de entrada

1,234.50 y 1.234,50 representan respectivamente cantidades iguales o diferentes en las aduanas de diferentes regiones. Sin especificar primero qué formato usar, el programa no puede decir si los números traducidos son correctos.

Solo maneja dos formatos explícitos

Este artículo solo cubre los dos formatos siguientes:

  • Coma miles, punto decimal: por ejemplo 1,234.50
  • Punto miles, coma decimal: por ejemplo 1.234,50

Los espacios en miles, paréntesis para números negativos, notación científica y otros métodos de escritura no están incluidos en el rango. Cuando las reglas fuente no están claras, se debe resistir a las conjeturas en lugar de decidirse por ellas.

Primero verifique el formato y luego realice la conversión decimal.

La cadena primero se verifica según el formato declarado y luego se convierte a decimal después de pasarla.

import re
from decimal import Decimal

def amount(text, style):
    rules = {
        "comma_group": (r"-?(?:[0-9]{1,3}(?:,[0-9]{3})+|[0-9]+)(?:\.[0-9]+)?", ",", "."),
        "dot_group": (r"-?(?:[0-9]{1,3}(?:\.[0-9]{3})+|[0-9]+)(?:,[0-9]+)?", ".", ",")
    }
    if style not in rules:
        raise ValueError("unknown number convention")
    pattern, grouping, decimal = rules[style]
    if re.fullmatch(pattern, text) is None:
        raise ValueError("number does not match declared convention")
    return Decimal(text.replace(grouping, "").replace(decimal, "."))

assert amount("1,234.50", "comma_group") == amount("1.234,50", "dot_group")
assert amount("-12.50", "comma_group") == Decimal("-12.50")
assert (amount("12.50", "comma_group"), "USD") != (amount("12.50", "comma_group"), "EUR")
for bad in ["12,34.50", "1,234.50 USD", "NaN"]:
    try:
        amount(bad, "comma_group")
    except ValueError:
        pass
    else:
        raise AssertionError("invalid number accepted")

Los mismos valores no son suficientes

Este código recibe la cadena de monto que se ha posicionado y no encontrará automáticamente el monto de ningún documento. Al posicionar los campos, se deben conservar la etiqueta, la moneda y la ubicación de origen. El mismo número pero cambiando de kilogramos a libras, o de precio total a precio unitario, no es una verificación correcta.

Comparar resultadosdebe ser revisadono debe hacerse automáticamente
Mismo valor, diferente monedaSi se ha cambiado el tipo de monedaTratado como equivalente por defecto
El formato no se ajusta a la declaración.Región de origen o error de extracciónEliminar incondicionalmente toda la puntuación
El signo negativo desapareceTexto fuente y contexto de traducciónToma automáticamente el valor absoluto
Precisión disminuidaYa sea para redondear según las reglasIgnora todas las diferencias

Decimal solo resuelve parte del problema

Decimal puede ayudarte a hacerlo

  • Evitar ciertos errores de representación binaria en coma flotante.
  • Comparaciones numéricas basadas en resultados normalizados explícitos.

Decimal no puede hacerlo por ti

  • Seleccionar reglas de redondeo
  • Explique el monto del impuesto.
  • Realizar la conversión del tipo de cambio.

Siempre que realice una conversión a un valor numérico, debe mantener los valores antes y después de la conversión y el motivo de la misma en una lista de verificación.

Los números en los archivos de traducción merecen aceptación por separado

Al utilizar OmniDoc (portal de productos) para procesar cotizaciones, informes o datos técnicos, podrá aceptarlos en el siguiente orden:

  1. Primero clasifique las partidas del cheque por monto y unidad, y enumere los campos comerciales correspondientes a cada número.
  2. Compare los elementos de inspección con el manuscrito de traducción uno por uno y registre las diferencias en formato, moneda, signo negativo y precisión.
  3. Para elementos sospechosos, regrese al texto fuente para confirmar qué campo comercial representa.

La inspección digital es responsable de descubrir dudas y el juicio final aún debe completarse regresando al texto fuente.

Referencias: Python decimal.

📊 Comparación central

FormatoEjemploMétodo de procesamiento
coma miles, punto decimal1,234.50Dentro del alcance, analizado según las reglas de declaración
Punto, miles, coma, decimal1.234,50Dentro del alcance, analizado según las reglas de declaración
Espacio de miles, paréntesis para números negativos, notación científicaNo aplicable a este artículo.No está dentro del alcance, niéguese a adivinar cuando se desconocen las reglas fuente

🎯 ¿Qué método es el adecuado para ti?

Si procesas cotizaciones o informes

Primero clasifique las partidas de cheque por monto y unidad, y luego verifíquelas una por una con el manuscrito de traducción.

Si su archivo utiliza otros métodos de escritura de números

Este artículo no cubre espacios en miles, números negativos entre corchetes ni notación científica. Primero confirme las reglas fuente, no deje que el programa adivine.

Si necesita realizar una conversión del tipo de cambio

Decimal no realizará la conversión por usted; registre los valores antes y después de la conversión y el motivo en la lista.

❓ Preguntas frecuentes (FAQ)

1. ¿Por qué no comparar cantidades directamente usando números de punto flotante?

El uso de Decimal puede evitar algunos errores de representación de punto flotante binario, por lo que es más adecuado para comparaciones numéricas.

2. Si los números son iguales pero las monedas son diferentes, ¿se pueden considerar equivalentes?

No debe considerarse equivalente de forma predeterminada; verifique primero si la etiqueta de moneda ha sido modificada.

3. ¿Se puede tomar automáticamente el valor absoluto cuando desaparece el signo negativo?

El valor absoluto no debe tomarse automáticamente, sino que debe verificarse junto con el contexto del texto fuente y la traducción.

4. ¿Puede el código encontrar automáticamente el monto de cualquier documento?

no puedo. El código recibe la cadena de cantidad que se ha posicionado. La etiqueta, la moneda y la ubicación de origen deben conservarse al ubicar el campo.

📝 Resumen

La clave para la verificación numérica es declarar primero las reglas de formato, luego comparar los valores normalizados y mantener la moneda y la unidad como campos independientes. La verificación automatizada se utiliza para descubrir puntos dudosos y el significado comercial aún debe confirmarse volviendo al texto fuente.

Pruébelo ahora: cargue el documento para comenzar la traducción, conservando el diseño original

Actualizado 2026-11-14