Le nombre de traductions n'est pas petit, mais l'unité est perdue : l'inspection doit être divisée en deux niveaux
Cet article propose une stratégie de vérification hiérarchique pour résoudre le problème de l'association des nombres de montants avec des unités dans l'acceptation de la traduction. Grâce au module décimal de la bibliothèque standard Python, il est démontré comment analyser et comparer avec précision les valeurs de montant et éviter les pièges de précision en virgule flottante ; il définit également les limites de responsabilité en matière de vérification automatisée du code et de révision sémantique manuelle, et combine OmniDoc pour illustrer le chemin d'acceptation pratique de la livraison de traduction de documents.
Les chiffres dans la traduction ne semblent pas manquer, mais les unités ont peut-être été discrètement perdues. Une fois que les montants ou les quantités dans les devis, les déclarations et les données techniques sont incorrects, les implications commerciales réelles seront affectées, de sorte que les chiffres doivent être vérifiés individuellement avant la livraison.
Cet article s'adresse à ceux qui sont responsables de l'acceptation des documents traduits, en particulier ceux qui traitent fréquemment des devis, des états financiers et des fiches techniques. L'article expliquera pourquoi 1,234.50 peut devenir 1.234,50 dans la traduction, comment déclarer d'abord les règles de saisie, puis comparer les valeurs, et quels jugements doivent encore être effectués manuellement. Après lecture, vous pouvez créer un ensemble de contrôles à deux niveaux : le code automatisé est responsable des formats et des valeurs, et les humains sont responsables de la sémantique et des domaines métier.
Les exemples de cet article utilisent des échantillons synthétiques et le code a passé avec succès des contrôles d'échantillons dans un environnement isolé, mais cela ne représente pas une garantie de tous les fichiers réels ou effets du produit. Veuillez conserver les originaux avant de manipuler des documents importants.
Le nombre de traductions n'est pas petit, comment l'accepter ? Conclusion en une phrase
Pour la vérification numérique, les règles de saisie doivent d'abord être déclarées puis les valeurs normalisées comparées. La devise et l'unité sont conservées comme champs indépendants.
| votre situation | Pratiques recommandées | raison |
|---|---|---|
| Même valeur, devise différente | Vérifiez si l'étiquette de devise a été modifiée | ne doit pas être considéré comme équivalent par défaut |
| Le format n'est pas conforme à la déclaration | Vérifiez les paramètres régionaux source ou le processus d'extraction | Toute ponctuation ne doit pas être supprimée sans condition |
| Le signe négatif disparaît | Combiner le texte source et la vérification du contexte de traduction | Les valeurs absolues ne doivent pas être automatiquement prises |
| Diminution de la précision | Arrondir et enregistrer selon les règles | Les différences ne doivent pas être ignorées |
Déclarez d'abord les règles de saisie
1,234.50 et 1.234,50 représentent respectivement des quantités identiques ou différentes dans les douanes de différentes régions. Sans spécifier au préalable le format à utiliser, le programme ne peut pas dire si les nombres traduits sont corrects.
Ne gère que deux formats explicites
Cet article couvre uniquement les deux formats suivants :
- Virgule en milliers, point décimal : Par exemple
1,234.50 - Milles de points, virgule décimale : Par exemple
1.234,50
Les espaces en milliers, les parenthèses pour les nombres négatifs, la notation scientifique et les autres méthodes d'écriture ne sont pas inclus dans la plage. Lorsque les règles relatives aux sources ne sont pas claires, il convient de résister aux conjectures plutôt que de se décider.
Vérifiez d'abord le format, puis effectuez la conversion décimale
La chaîne est d'abord vérifiée selon le format déclaré, puis convertie en décimal après l'avoir transmise.
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")
Les mêmes valeurs ne suffisent pas
Ce code reçoit la chaîne de montant qui a été positionnée et ne trouvera automatiquement le montant dans aucun document. Lors du positionnement des champs, l'étiquette, la devise et l'emplacement source doivent être conservés. Le même nombre, mais en passant des kilogrammes aux livres, ou du prix total au prix unitaire, ne constitue pas un contrôle correct.
| Comparer les résultats | devrait être vérifié | ne devrait pas se faire automatiquement |
|---|---|---|
| Même valeur, devise différente | Si la marque monétaire a été modifiée | Traité comme équivalent par défaut |
| Le format n'est pas conforme à la déclaration | Aire de la source ou erreur d’extraction | Supprimer sans condition toute ponctuation |
| Le signe moins a disparu | Texte source et contexte de traduction | Prend automatiquement des valeurs absolues |
| Précision réduite | Si l’arrondi se fait selon les règles | Ignorez toutes les différences |
La décimale ne résout qu’une partie du problème
Ce que Decimal peut faire pour toi
- Éviter les erreurs dans certaines représentations binaires en virgule flottante
- Que les comparaisons numériques soient basées sur des résultats clairs et standardisés
Decimal ne peut pas le faire pour toi
- Choisir des règles d’arrondi
- Expliquer le montant de l’impôt
- Effectuer la conversion du taux de change
Lors de la conversion de valeurs, les valeurs avant et après la conversion ainsi que les raisons doivent être conservées dans la liste de contrôle.
Les numéros dans les documents traduits méritent une acceptation séparée
Lors de l’utilisation de OmniDoc (entrée produit) pour traiter des devis, des rapports ou des documents techniques, l’acceptation peut être effectuée dans l’ordre suivant :
- Premièrement, organiser la liste de contrôle pour les montants et les unités, en listant les champs métier correspondant à chaque numéro.
- Comparez les éléments de la liste de contrôle avec la traduction un par un, en notant les différences de format, de monnaie, de signe moins et de précision.
- Retourner l’élément suspect dans le texte source pour confirmer le champ métier qu’il représente.
Les vérifications numériques sont responsables d’identifier les doutes, mais le jugement final doit encore être accompli en revenant au texte source.
Références : Python decimal.
📊 Comparaison des noyaux
| Format | Exemple | Méthodes de manipulation |
|---|---|---|
| Virgules en milliers et décimales à points | 1,234.50 | Dans cette plage, analyser selon les règles de déclaration |
| Points en milliers et décimales à virgule | 1.234,50 | Dans cette plage, analyser selon les règles de déclaration |
| Espaces dans les milliers, parenthèses pour les nombres négatifs, notation scientifique | Non applicable à cet article | Pas dans le cadre du cadre, refusant de spéculer quand les règles sources sont floues |
🎯 Quelle méthode te convient ?
Si vous gérez des citations ou des rapports
Commencez par organiser le montant et les listes de contrôle de l’unité, puis comparez chaque élément au manuscrit traduit.
Si vos documents utilisent d’autres notations numériques
Cet article ne couvre pas les espaces en milliers, les nombres négatifs entre parenthèses, ni la notation scientifique. D’abord, confirmez les règles sources et ne laissez pas le programme deviner.
Si vous devez faire des conversions de taux de change
Decimal ne réalisera pas la conversion pour vous ; veuillez noter les valeurs avant et après la conversion ainsi que les raisons dans la liste de contrôle.
❓ Foire aux questions (FAQ)
1. Pourquoi ne pas comparer directement les montants en utilisant des chiffres à virgule flottante ?
L’utilisation de Decimal peut éviter les erreurs dans certaines représentations binaires en virgule flottante, ce qui la rend plus adaptée à la comparaison numérique.
2. Le nombre peut-il être le même mais la monnaie différente, et cela peut-il être considéré comme équivalent ?
Il ne faut pas supposer qu’il est considéré comme équivalent ; vérifiez d’abord si le marquage de la monnaie a été modifié.
3. Les valeurs absolues peuvent-elles être prises automatiquement lorsque le signe négatif disparaît ?
Les valeurs absolues ne doivent pas être prises automatiquement ; vérifiez plutôt en conjonction avec le contexte des textes sources et traduits.
4. Le code peut-il automatiquement trouver le montant à partir d’un document ?
Non. Le code reçoit une chaîne de quantité prépositionnée ; lors de la localisation des champs, l’étiquette, la monnaie et la localisation source doivent être conservées.
📝 Résumé
La clé de la vérification numérique est d’abord de déclarer les règles de formatage, puis de comparer les valeurs standardisées, et de garder la monnaie et l’unité comme champs indépendants. Des vérifications automatisées sont utilisées pour identifier les points suspects, mais la signification commerciale doit encore être confirmée dans le texte source.


