Die Anzahl der Übersetzungen ist nicht gering, aber die Einheit geht verloren: Die Inspektion sollte in zwei Ebenen unterteilt werden
In diesem Artikel wird eine hierarchische Verifizierungsstrategie vorgeschlagen, um das Problem der Paarung von Betragszahlen mit Einheiten bei der Übersetzungsakzeptanz anzugehen. Anhand des Dezimalmoduls der Python-Standardbibliothek wird gezeigt, wie Betragswerte genau analysiert und verglichen werden und Gleitkomma-Präzisionsfallen vermieden werden. Es definiert auch die Verantwortungsgrenzen der automatisierten Codeüberprüfung und der manuellen semantischen Überprüfung und kombiniert OmniDoc, um den praktischen Akzeptanzpfad der Bereitstellung von Dokumentübersetzungen zu veranschaulichen.
Die Zahlen in der Übersetzung scheinen nicht zu fehlen, aber die Einheiten könnten stillschweigend verloren gegangen sein. Sobald die Mengenangaben in Angeboten, Abrechnungen und technischen Daten fehlerhaft sind, hat dies Auswirkungen auf die tatsächlichen geschäftlichen Auswirkungen. Daher müssen die Zahlen vor der Lieferung individuell überprüft werden.
Dieser Artikel richtet sich an diejenigen, die für die Annahme übersetzter Dokumente verantwortlich sind, insbesondere an diejenigen, die häufig mit Angeboten, Finanzberichten und technischen Datenblättern zu tun haben. Der Artikel erklärt, warum 1,234.50 in der Übersetzung möglicherweise zu 1.234,50 wird, wie man zuerst Eingaberegeln deklariert und dann Werte vergleicht und welche Beurteilungen noch manuell vorgenommen werden müssen. Nach dem Lesen können Sie eine Reihe zweistufiger Prüfungen erstellen: Automatisierter Code ist für Formate und Werte verantwortlich, und Menschen sind für Semantik und Geschäftsfelder verantwortlich.
In den Beispielen in diesem Artikel werden synthetische Beispiele verwendet, und der Code hat Beispielprüfungen in einer isolierten Umgebung bestanden. Dies stellt jedoch keine Garantie für alle echten Dateien oder Produkteffekte dar. Bitte bewahren Sie die Originale auf, bevor Sie mit wichtigen Dokumenten umgehen.
Die Anzahl der Übersetzungen ist nicht gering. Wie kann man das akzeptieren? Fazit in einem Satz
Zur numerischen Verifizierung müssen zunächst die Eingaberegeln deklariert und anschließend die normalisierten Werte verglichen werden. Währung und Einheit bleiben als unabhängige Felder erhalten.
| Ihre Situation | Empfohlene Praktiken | Grund |
|---|---|---|
| Gleicher Wert, andere Währung | Überprüfen Sie, ob das Währungskennzeichen geändert wurde | sollten standardmäßig nicht als gleichwertig angesehen werden |
| Format entspricht nicht der Anweisung | Überprüfen Sie das Quellgebietsschema oder den Extraktionsprozess | Sämtliche Satzzeichen sollten nicht bedingungslos entfernt werden |
| Das negative Vorzeichen verschwindet | Kombination von Quelltext- und Übersetzungskontextprüfung | Absolute Werte sollten nicht automatisch übernommen werden |
| Verminderte Genauigkeit | Den Regeln entsprechend runden und aufzeichnen | Unterschiede sollten nicht ignoriert werden |
Deklarieren Sie zuerst die Eingaberegeln
1,234.50 und 1.234,50 repräsentieren jeweils gleiche oder unterschiedliche Mengen im Zoll verschiedener Regionen. Ohne vorherige Angabe des zu verwendenden Formats kann das Programm nicht feststellen, ob die übersetzten Zahlen korrekt sind.
Behandelt nur zwei explizite Formate
Dieser Artikel behandelt nur die folgenden zwei Formate:
- Komma Tausender, Punkt Dezimal: Zum Beispiel
1,234.50 - Punkt Tausender, Komma Dezimal: Zum Beispiel
1.234,50
Tausender-Leerzeichen, Klammern für negative Zahlen, wissenschaftliche Schreibweise und andere Schreibweisen sind nicht im Bereich enthalten. Wenn die Quellenregeln unklar sind, sollten Vermutungen vermieden werden, anstatt sich dafür zu entscheiden.
Überprüfen Sie zuerst das Format und führen Sie dann die Dezimalkonvertierung durch
Die Zeichenfolge wird zunächst gemäß dem deklarierten Format überprüft und nach der Übergabe in eine Dezimalzahl konvertiert.
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")
Die gleichen Werte reichen nicht aus
Dieser Code empfängt die positionierte Betragszeichenfolge und findet den Betrag nicht automatisch aus einem Dokument. Bei der Positionierung von Feldern sollten Beschriftung, Währung und Quellort erhalten bleiben. Die gleiche Zahl, aber die Änderung von Kilogramm zu Pfund oder vom Gesamtpreis zum Stückpreis ist keine korrekte Prüfung.
| Ergebnisse vergleichen | sollte überprüft werden | sollte nicht automatisch erfolgen |
|---|---|---|
| Gleicher Wert, andere Währung | Ob die Währungsmarkierung geändert wurde | Wird standardmäßig als gleichwertig behandelt |
| Format entspricht nicht der Anweisung | Quellregion oder Extraktionsfehler | Löschen Sie unbedingt alle Satzzeichen |
| Das negative Vorzeichen verschwindet | Quelltext und Übersetzungskontext | Nimmt automatisch den absoluten Wert an |
| Verminderte Genauigkeit | Ob gemäß den Regeln gerundet werden soll | Ignorieren Sie alle Unterschiede |
Decimal löst nur einen Teil des Problems
Decimal kann Ihnen dabei helfen
- Vermeiden Sie bestimmte Fehler bei der binären Gleitkommadarstellung
- Basieren Sie numerische Vergleiche auf explizit normalisierten Ergebnissen
Decimal kann das nicht für Sie erledigen
- Wählen Sie Rundungsregeln aus
- Erklären Sie den Steuerbetrag
- Führen Sie eine Wechselkursumrechnung durch
Wann immer Sie eine Konvertierung in einen numerischen Wert vornehmen, sollten Sie die Werte vor und nach der Konvertierung sowie den Grund dafür in einer Checkliste festhalten.
Zahlen in Übersetzungsdateien bedürfen einer gesonderten Abnahme
Wenn Sie OmniDoc (Produktportal) zur Bearbeitung von Angeboten, Berichten oder technischen Daten nutzen, können Sie diese in der folgenden Reihenfolge annehmen:
- Sortieren Sie zunächst die Scheckpositionen nach Betrag und Einheit und listen Sie die Geschäftsfelder auf, die jeder Nummer entsprechen.
- Vergleichen Sie die Prüfpunkte einzeln mit dem Übersetzungsmanuskript und notieren Sie die Unterschiede in Format, Währung, negativem Vorzeichen und Genauigkeit.
- Kehren Sie bei verdächtigen Elementen zum Quelltext zurück, um zu bestätigen, um welches Geschäftsfeld es sich handelt.
Für die Aufdeckung von Zweifeln ist die digitale Prüfung zuständig, die endgültige Beurteilung muss noch durch Rückgriff auf den Ausgangstext vervollständigt werden.
Quellen: Python decimal.
📊 Kernvergleich
| Format | Beispiel | Verarbeitungsmethode |
|---|---|---|
| Komma Tausender, Punkt Dezimalzahl | 1,234.50 | Innerhalb des Gültigkeitsbereichs, analysiert gemäß den Deklarationsregeln |
| Punkt, Tausender, Komma, Dezimalzahl | 1.234,50 | Innerhalb des Gültigkeitsbereichs, analysiert gemäß den Deklarationsregeln |
| Leerzeichen für Tausender, Klammern für negative Zahlen, wissenschaftliche Notation | Gilt nicht für diesen Artikel | Nicht innerhalb des Geltungsbereichs, weigern Sie sich, zu raten, wenn die Quellregeln unbekannt sind |
🎯 Welche Methode ist für Dich geeignet?
Wenn Sie Angebote oder Berichte bearbeiten
Sortieren Sie zunächst die Scheckpositionen nach Betrag und Einheit und vergleichen Sie sie dann einzeln mit dem Übersetzungsmanuskript.
Wenn Ihre Datei andere Zahlenschreibmethoden verwendet
In diesem Artikel werden keine Tausender-Leerzeichen, negative Zahlen in Klammern oder die wissenschaftliche Notation behandelt. Bestätigen Sie zuerst die Quellregeln und lassen Sie das Programm nicht raten.
Wenn Sie eine Wechselkursumrechnung durchführen müssen
Decimal führt die Konvertierung nicht für Sie durch. Bitte notieren Sie die Werte vor und nach der Konvertierung sowie den Grund in der Liste.
❓ Häufig gestellte Fragen (FAQ)
1. Warum Beträge nicht direkt mit Gleitkommazahlen vergleichen?
Durch die Verwendung von Decimal können einige Fehler bei der binären Gleitkommadarstellung vermieden werden, sodass sie besser für numerische Vergleiche geeignet ist.
2. Wenn die Zahlen gleich, aber die Währungen unterschiedlich sind, können sie dann als gleichwertig angesehen werden?
Sollte standardmäßig nicht als gleichwertig angesehen werden, prüfen Sie zunächst, ob das Währungskennzeichen geändert wurde.
3. Kann der Absolutwert automatisch übernommen werden, wenn das negative Vorzeichen verschwindet?
Der absolute Wert sollte nicht automatisch übernommen, sondern im Zusammenhang mit dem Kontext des Ausgangstextes und der Übersetzung überprüft werden.
4. Kann der Code den Betrag automatisch aus jedem Dokument ermitteln?
kann nicht. Der Code erhält den platzierten Betragsstring. Beim Auffinden des Feldes sollten die Bezeichnung, die Währung und der Quellort beibehalten werden.
📝 Zusammenfassung
Der Schlüssel zur Zahlenüberprüfung besteht darin, zuerst die Formatregeln zu deklarieren, dann die normalisierten Werte zu vergleichen und die Währung und die Einheit als unabhängige Felder beizubehalten. Um zweifelhafte Punkte aufzudecken, wird eine automatisierte Prüfung eingesetzt, wobei die geschäftliche Bedeutung noch durch eine Rückbesinnung auf den Ausgangstext bestätigt werden muss.


