Số lượng dịch không ít mà lại bị mất đơn vị: việc kiểm tra nên chia làm 2 cấp độ
Bài viết này đề xuất một chiến lược xác minh theo thứ bậc để giải quyết điểm khó khăn trong việc ghép số lượng với các đơn vị trong việc chấp nhận bản dịch. Thông qua mô-đun thập phân của thư viện chuẩn Python, nó được trình bày cách phân tích và so sánh chính xác các giá trị số lượng và tránh bẫy chính xác của dấu phẩy động; nó cũng xác định ranh giới trách nhiệm của việc xác minh mã tự động và xem xét ngữ nghĩa thủ công, đồng thời kết hợp OmniDoc để minh họa đường dẫn chấp nhận thực tế của việc phân phối bản dịch tài liệu.
Những con số trong bản dịch dường như không bị thiếu nhưng có thể các đơn vị đã bị mất một cách âm thầm. Khi số lượng hoặc số lượng trong báo giá, báo cáo và dữ liệu kỹ thuật không chính xác, ý nghĩa kinh doanh thực tế sẽ bị ảnh hưởng, do đó các con số cần được kiểm tra riêng trước khi giao hàng.
Bài viết này dành cho những người chịu trách nhiệm nghiệm thu tài liệu dịch thuật, đặc biệt là những người thường xuyên làm việc với các báo giá, báo cáo tài chính và bảng thông số kỹ thuật. Bài viết sẽ giải thích tại sao 1,234.50 có thể trở thành 1.234,50 trong bản dịch, cách khai báo quy tắc đầu vào trước rồi so sánh các giá trị và những nhận định nào vẫn phải thực hiện thủ công. Sau khi đọc, bạn có thể xây dựng một bộ kiểm tra hai lớp: mã tự động chịu trách nhiệm về các định dạng và giá trị, còn con người chịu trách nhiệm về ngữ nghĩa và các lĩnh vực kinh doanh.
Các ví dụ trong bài viết này sử dụng các mẫu tổng hợp và mã đã vượt qua quá trình kiểm tra mẫu trong môi trường biệt lập nhưng điều này không thể hiện sự đảm bảo về tất cả các tệp thực hoặc hiệu ứng sản phẩm. Vui lòng giữ lại bản gốc trước khi xử lý các tài liệu quan trọng.
Số lượng bản dịch không hề nhỏ, làm sao chấp nhận được? Một câu kết luận
Để xác minh bằng số, các quy tắc đầu vào phải được khai báo trước và sau đó là các giá trị chuẩn hóa được so sánh. Tiền tệ và đơn vị được giữ lại dưới dạng các trường độc lập.
| hoàn cảnh của bạn | Các phương pháp được đề xuất | lý do |
|---|---|---|
| Cùng giá trị, khác loại tiền tệ | Kiểm tra xem thẻ tiền tệ đã được thay đổi chưa | không nên được coi là tương đương theo mặc định |
| Định dạng không phù hợp với câu lệnh | Kiểm tra ngôn ngữ nguồn hoặc quá trình trích xuất | Tất cả các dấu câu không nên được loại bỏ vô điều kiện |
| Dấu âm biến mất | Kết hợp kiểm tra ngữ cảnh văn bản nguồn và bản dịch | Giá trị tuyệt đối không nên được lấy tự động |
| Giảm độ chính xác | Làm tròn và ghi theo quy định | Những khác biệt không nên bị bỏ qua một cách tùy tiện |
Khai báo quy tắc đầu vào trước
1,234.50 và 1.234,50 lần lượt đại diện cho số lượng giống nhau hoặc khác nhau trong phong tục tập quán của các vùng khác nhau. Nếu không chỉ định trước định dạng nào sẽ sử dụng, chương trình không thể biết liệu số được dịch có chính xác hay không.
Chỉ xử lý hai định dạng rõ ràng
Bài viết này chỉ bao gồm hai định dạng sau:
- Dấu phẩy hàng nghìn, dấu chấm thập phân: Ví dụ
1,234.50 - Chấm hàng nghìn, dấu phẩy thập phân: Ví dụ
1.234,50
Khoảng trắng ở hàng nghìn, dấu ngoặc cho số âm, ký hiệu khoa học và các phương pháp viết khác không được bao gồm trong phạm vi. Khi các quy tắc nguồn không rõ ràng, nên chống lại việc phỏng đoán thay vì quyết định nó.
Xác minh định dạng trước, sau đó thực hiện chuyển đổi thập phân
Đầu tiên, chuỗi được kiểm tra theo định dạng đã khai báo, sau đó được chuyển thành Thập phân sau khi truyền nó.
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")
Các giá trị giống nhau là không đủ
Mã này nhận chuỗi số tiền đã được định vị và sẽ không tự động tìm số tiền từ bất kỳ tài liệu nào. Khi định vị các trường, nhãn, tiền tệ và vị trí nguồn phải được giữ nguyên. Cùng một con số nhưng thay đổi từ kilôgam sang bảng Anh, hoặc tổng giá sang đơn giá, không phải là cách kiểm tra chính xác.
| So sánh kết quả | nên được kiểm tra | không nên được thực hiện tự động |
|---|---|---|
| Cùng giá trị, khác loại tiền tệ | Liệu nhãn hiệu tiền tệ có bị thay đổi hay không | Được coi là tương đương theo mặc định |
| Định dạng không phù hợp với câu lệnh | Vùng nguồn hoặc lỗi trích xuất | Xóa vô điều kiện tất cả các dấu câu |
| Dấu âm biến mất | Văn bản nguồn và bối cảnh dịch thuật | Tự động lấy giá trị tuyệt đối |
| Giảm độ chính xác | Có làm tròn theo quy định không | Bỏ qua mọi khác biệt |
Số thập phân chỉ giải quyết được một phần vấn đề
Số thập phân có thể giúp bạn làm điều đó
- Tránh một số lỗi biểu diễn dấu phẩy động nhị phân nhất định
- So sánh số cơ sở trên kết quả chuẩn hóa rõ ràng
Số thập phân không thể làm điều đó cho bạn
- Chọn quy tắc làm tròn
- Giải thích số thuế
- Thực hiện chuyển đổi tỷ giá hối đoái
Bất cứ khi nào bạn thực hiện bất kỳ chuyển đổi nào thành giá trị số, bạn nên giữ các giá trị trước và sau chuyển đổi cũng như lý do chuyển đổi trong danh sách kiểm tra.
Các số trong file dịch cần được chấp nhận riêng
Khi sử dụng OmniDoc (cổng thông tin sản phẩm) để xử lý báo giá, báo cáo hoặc dữ liệu kỹ thuật, bạn có thể chấp nhận chúng theo thứ tự sau:
- Đầu tiên hãy phân loại các mục kiểm tra về số lượng, đơn vị và liệt kê các lĩnh vực kinh doanh tương ứng với từng số.
- Đối chiếu từng mục kiểm tra với bản thảo dịch thuật, ghi lại những khác biệt về hình thức, đơn vị tiền tệ, dấu âm và độ chính xác.
- Đối với các mục đáng ngờ, hãy quay lại văn bản nguồn để xác nhận nó đại diện cho lĩnh vực kinh doanh nào.
Kiểm tra kỹ thuật số có trách nhiệm phát hiện những nghi ngờ và phán quyết cuối cùng vẫn cần được hoàn thành bằng cách quay lại văn bản nguồn.
Tham khảo: Python decimal.
📊 So sánh cốt lõi
| Định dạng | Ví dụ | Phương pháp xử lý |
|---|---|---|
| dấu phẩy hàng nghìn, dấu chấm thập phân | 1,234.50 | Trong phạm vi, được phân tích cú pháp theo quy tắc khai báo |
| Dấu chấm, hàng nghìn, dấu phẩy, số thập phân | 1.234,50 | Trong phạm vi, được phân tích cú pháp theo quy tắc khai báo |
| Dấu cách hàng nghìn, dấu ngoặc cho số âm, ký hiệu khoa học | Không áp dụng cho bài viết này | Không nằm trong phạm vi, từ chối đoán khi không rõ quy tắc nguồn |
🎯 Phương pháp nào phù hợp với bạn?
Nếu bạn xử lý báo giá hoặc báo cáo
Đầu tiên hãy sắp xếp các mục kiểm tra về số lượng và đơn vị, sau đó kiểm tra từng mục một với bản thảo bản dịch.
Nếu file của bạn sử dụng phương pháp ghi số khác
Bài viết này không bao gồm các khoảng trắng trong hàng nghìn, số âm trong ngoặc hoặc ký hiệu khoa học. Hãy xác nhận quy tắc nguồn trước, đừng để chương trình đoán.
Nếu bạn cần thực hiện chuyển đổi tỷ giá hối đoái
Decimal sẽ không thực hiện việc chuyển đổi cho bạn, hãy ghi lại các giá trị trước và sau khi chuyển đổi và lý do vào danh sách.
❓ Câu hỏi thường gặp (FAQ)
1. Tại sao không so sánh số lượng trực tiếp bằng số dấu phẩy động?
Sử dụng Decimal có thể tránh được một số lỗi biểu diễn dấu phẩy động nhị phân nên phù hợp hơn cho việc so sánh số.
2. Nếu số lượng giống nhau nhưng đơn vị tiền tệ khác nhau thì có được coi là tương đương không?
Theo mặc định, không được coi là tương đương, trước tiên hãy kiểm tra xem thẻ tiền tệ có bị thay đổi hay không.
3. Giá trị tuyệt đối có thể tự động lấy khi dấu âm biến mất không?
Giá trị tuyệt đối không được lấy tự động mà phải được kiểm tra cùng với ngữ cảnh của văn bản nguồn và bản dịch.
4. Mã có thể tự động tìm số tiền từ bất kỳ tài liệu nào không?
không thể. Mã nhận chuỗi số lượng đã được định vị. Nhãn, tiền tệ và vị trí nguồn phải được giữ lại khi định vị trường.
📝 Tóm tắt
Chìa khóa để xác minh số là khai báo các quy tắc định dạng trước tiên, sau đó so sánh các giá trị được chuẩn hóa và giữ đơn vị tiền tệ và đơn vị dưới dạng các trường độc lập. Kiểm tra tự động được sử dụng để phát hiện những điểm nghi ngờ và ý nghĩa kinh doanh vẫn cần được xác nhận bằng cách quay lại văn bản nguồn.
Thử ngay: Tải tài liệu lên để bắt đầu dịch, giữ nguyên bố cục ban đầu


