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 Anda | Praktik yang direkomendasikan | alasan |
|---|---|---|
| Nilai sama, mata uang berbeda | Periksa apakah tag mata uang telah diubah | tidak boleh dianggap setara secara default |
| Format tidak sesuai dengan pernyataan | Periksa lokal sumber atau proses ekstraksi | Semua tanda baca tidak boleh dihapus tanpa syarat |
| Tanda negatifnya hilang | Menggabungkan teks sumber dan pemeriksaan konteks terjemahan | Nilai absolut tidak boleh diambil secara otomatis |
| Akurasi menurun | Bulatkan dan catat sesuai aturan | Perbedaan 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 hasilnya | harus diperiksa | tidak boleh dilakukan secara otomatis |
|---|---|---|
| Nilai sama, mata uang berbeda | Apakah tanda mata uang telah diubah | Diperlakukan setara secara default |
| Format tidak sesuai dengan pernyataan | Wilayah sumber atau kesalahan ekstraksi | Hapus semua tanda baca tanpa syarat |
| Tanda negatifnya hilang | Teks sumber dan konteks terjemahan | Secara otomatis mengambil nilai absolut |
| Akurasi menurun | Apakah akan membulatkan sesuai aturan | Abaikan 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:
- Pisahkan terlebih dahulu item cek berdasarkan jumlah dan satuannya, dan buat daftar bidang usaha yang sesuai dengan setiap nomor.
- Bandingkan item pemeriksaan dengan naskah terjemahan satu per satu, dan catat perbedaannya dalam format, mata uang, tanda negatif dan keakuratannya.
- 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
| Format | Contoh | Metode pemrosesan |
|---|---|---|
| koma ribuan, titik desimal | 1,234.50 | Dalam ruang lingkup, diurai menurut aturan deklarasi |
| Titik, ribuan, koma, desimal | 1.234,50 | Dalam ruang lingkup, diurai menurut aturan deklarasi |
| Spasi ribuan, tanda kurung untuk bilangan negatif, notasi ilmiah | Tidak berlaku untuk artikel ini | Di 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.


