Jumlah terjemahannya tidak sedikit, tetapi satuannya hilang: pemeriksaan harus dibagi menjadi dua tingkatan

Artikel ini mengusulkan strategi verifikasi hierarki untuk mengatasi kesulitan dalam memasangkan angka jumlah dengan unit dalam penerimaan terjemahan. Melalui modul desimal dari pustaka standar Python, ditunjukkan cara mengurai dan membandingkan nilai jumlah secara akurat dan menghindari jebakan presisi floating point; ini juga mendefinisikan batasan tanggung jawab verifikasi kode otomatis dan tinjauan semantik manual, dan menggabungkan OmniDoc untuk menggambarkan jalur penerimaan praktis pengiriman terjemahan dokumen.

Angka-angka dalam terjemahannya tampaknya tidak hilang, tetapi unit-unitnya mungkin telah hilang secara diam-diam. Jika jumlah atau jumlah dalam kutipan, pernyataan, dan data teknis salah, implikasi bisnis sebenarnya akan terpengaruh, sehingga jumlahnya perlu diperiksa satu per satu sebelum pengiriman.

Artikel ini ditulis untuk mereka yang bertanggung jawab atas penerimaan dokumen terjemahan, terutama mereka yang sering berurusan dengan kutipan, laporan keuangan, dan lembar data teknis. Artikel ini akan menjelaskan mengapa 1,234.50 bisa menjadi 1.234,50 dalam terjemahannya, cara mendeklarasikan aturan input terlebih dahulu lalu membandingkan nilainya, dan penilaian apa yang masih perlu dilakukan secara manual. Setelah membaca, Anda dapat membuat serangkaian pemeriksaan dua lapis: kode otomatis bertanggung jawab atas format dan nilai, dan manusia bertanggung jawab atas semantik dan bidang bisnis.

Contoh dalam artikel ini menggunakan sampel sintetis, dan kode telah melewati pemeriksaan sampel di lingkungan yang terisolasi, namun ini tidak mewakili jaminan atas semua file atau efek produk yang sebenarnya. Harap simpan dokumen asli sebelum menangani dokumen penting.

Jumlah terjemahannya tidak sedikit, bagaimana cara menerimanya? Kesimpulan satu kalimat

Untuk verifikasi numerik, aturan input harus dideklarasikan terlebih dahulu dan kemudian nilai yang dinormalisasi dibandingkan. Mata uang dan satuan dipertahankan sebagai bidang independen.

situasi AndaPraktik yang direkomendasikanalasan
Nilai sama, mata uang berbedaPeriksa apakah tag mata uang telah diubahtidak boleh dianggap setara secara default
Format tidak sesuai dengan pernyataanPeriksa lokal sumber atau proses ekstraksiSemua tanda baca tidak boleh dihapus tanpa syarat
Tanda negatifnya hilangMenggabungkan teks sumber dan pemeriksaan konteks terjemahanNilai absolut tidak boleh diambil secara otomatis
Akurasi menurunBulatkan dan catat sesuai aturanPerbedaan tidak boleh diabaikan

Deklarasikan aturan masukan terlebih dahulu

1,234.50 dan 1.234,50 masing-masing mewakili jumlah yang sama atau berbeda dalam bea cukai daerah yang berbeda. Tanpa terlebih dahulu menentukan format mana yang akan digunakan, program tidak dapat mengetahui apakah angka yang diterjemahkan sudah benar.

Hanya menangani dua format eksplisit

Artikel ini hanya mencakup dua format berikut:

  • Koma ribuan, titik desimal: Misalnya 1,234.50
  • Titik ribuan, koma desimal: Misalnya 1.234,50

Spasi dalam ribuan, tanda kurung untuk bilangan negatif, notasi ilmiah dan cara penulisan lainnya tidak termasuk dalam rentang tersebut. Ketika aturan sumber tidak jelas, dugaan-dugaan harus ditolak, bukan diputuskan begitu saja.

Verifikasi formatnya terlebih dahulu, lalu lakukan konversi Desimal

String tersebut pertama-tama diperiksa sesuai dengan format yang dideklarasikan, dan kemudian dikonversi ke Desimal setelah meneruskannya.

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")

Nilai yang sama saja tidak cukup

Kode ini menerima string jumlah yang telah diposisikan dan tidak akan secara otomatis menemukan jumlah tersebut dari dokumen mana pun. Saat menentukan posisi bidang, label, mata uang, dan lokasi sumber harus dipertahankan. Angka yang sama tetapi berubah dari kilogram ke pound, atau harga total ke harga satuan, bukanlah pemeriksaan yang benar.

Bandingkan hasilnyaharus diperiksatidak boleh dilakukan secara otomatis
Nilai sama, mata uang berbedaApakah tanda mata uang telah diubahDiperlakukan setara secara default
Format tidak sesuai dengan pernyataanWilayah sumber atau kesalahan ekstraksiHapus semua tanda baca tanpa syarat
Tanda negatifnya hilangTeks sumber dan konteks terjemahanSecara otomatis mengambil nilai absolut
Akurasi menurunApakah akan membulatkan sesuai aturanAbaikan semua perbedaan

Desimal hanya menyelesaikan sebagian masalah

Desimal dapat membantu Anda melakukannya

  • Hindari kesalahan representasi floating point biner tertentu
  • Dasarkan perbandingan numerik pada hasil normalisasi eksplisit

Desimal tidak dapat membantu Anda

  • Pilih aturan pembulatan
  • Jelaskan jumlah pajaknya
  • Lakukan konversi nilai tukar

Setiap kali Anda melakukan konversi apa pun ke nilai numerik, Anda harus menyimpan nilai sebelum dan sesudah konversi serta alasannya dalam daftar periksa.

Angka dalam file terjemahan layak mendapat penerimaan terpisah

Saat menggunakan OmniDoc (portal produk) untuk memproses penawaran, laporan, atau data teknis, Anda dapat menerimanya dengan urutan berikut:

  1. Pisahkan terlebih dahulu item cek berdasarkan jumlah dan satuannya, dan buat daftar bidang usaha yang sesuai dengan setiap nomor.
  2. Bandingkan item pemeriksaan dengan naskah terjemahan satu per satu, dan catat perbedaannya dalam format, mata uang, tanda negatif dan keakuratannya.
  3. Untuk item yang mencurigakan, kembali ke teks sumber untuk mengonfirmasi bidang bisnis mana yang diwakilinya.

Inspeksi digital bertanggung jawab untuk menemukan keraguan, dan penilaian akhir masih perlu diselesaikan dengan kembali ke teks sumber.

Referensi: Python decimal.

📊 Perbandingan inti

FormatContohMetode pemrosesan
koma ribuan, titik desimal1,234.50Dalam ruang lingkup, diurai menurut aturan deklarasi
Titik, ribuan, koma, desimal1.234,50Dalam ruang lingkup, diurai menurut aturan deklarasi
Spasi ribuan, tanda kurung untuk bilangan negatif, notasi ilmiahTidak berlaku untuk artikel iniDi luar cakupannya, menolak menebak ketika aturan sumbernya tidak diketahui

🎯 Metode mana yang cocok untuk Anda?

Jika Anda memproses penawaran atau laporan

Pisahkan terlebih dahulu barang cek jumlah dan satuannya, kemudian dicocokkan satu per satu dengan naskah terjemahan.

Jika file Anda menggunakan metode penulisan angka lain

Artikel ini tidak membahas spasi dalam ribuan, angka negatif dalam tanda kurung, atau notasi ilmiah. Konfirmasikan aturan sumbernya terlebih dahulu, jangan biarkan program menebak-nebak.

Jika Anda perlu melakukan konversi nilai tukar

Desimal tidak akan melakukan konversi untuk Anda, harap catat nilai sebelum dan sesudah konversi serta alasannya dalam daftar.

❓ Pertanyaan yang Sering Diajukan (FAQ)

1. Mengapa tidak membandingkan jumlah secara langsung menggunakan angka floating point?

Penggunaan Desimal dapat menghindari beberapa kesalahan representasi floating point biner, sehingga lebih cocok untuk perbandingan numerik.

2. Jika angkanya sama tetapi mata uangnya berbeda, apakah bisa dianggap setara?

Seharusnya tidak dianggap setara secara default, periksa terlebih dahulu apakah tag mata uang telah diubah.

3. Bisakah nilai absolut diambil secara otomatis ketika tanda negatifnya hilang?

Nilai absolutnya tidak boleh diambil secara otomatis, tetapi harus diperiksa hubungannya dengan konteks teks sumber dan terjemahannya.

4. Bisakah kode secara otomatis menemukan jumlah dari dokumen apa pun?

tidak bisa. Kode tersebut menerima string jumlah yang telah diposisikan. Label, mata uang, dan lokasi sumber harus dipertahankan saat mencari lokasi bidang.

📝 Ringkasan

Kunci verifikasi angka adalah mendeklarasikan aturan format terlebih dahulu, lalu membandingkan nilai yang dinormalisasi, dan menjaga mata uang dan unit sebagai kolom independen. Pemeriksaan otomatis digunakan untuk menemukan poin-poin yang meragukan, dan makna bisnis masih perlu dikonfirmasi dengan kembali ke teks sumber.

Coba sekarang: Unggah dokumen untuk memulai penerjemahan, dengan tetap mempertahankan tata letak aslinya

Diperbarui 2026-11-14