Độ chính xác của OCR thường được đo bằng tỷ lệ lỗi ký tự (CER): lấy số ký tự phải thay, xoá hoặc chèn để biến kết quả máy thành bản chuẩn, chia cho tổng số ký tự của bản chuẩn. CER bằng 2% nghĩa là cứ 100 ký tự có khoảng hai chỗ sai. Song song là tỷ lệ lỗi từ (WER), tính theo đơn vị từ; với tiếng Việt, "từ" thường được hiểu là âm tiết cách nhau bởi khoảng trắng. Vì một âm tiết chỉ cần sai một dấu là cả âm tiết sai, WER tiếng Việt luôn cao hơn CER khá nhiều.
Hai con số này chỉ có nghĩa khi đo đúng cách: có bản chuẩn đáng tin, chuẩn hoá văn bản trước khi so, chọn mẫu trang đại diện và hiểu rằng một con số trung bình có thể che đi đúng loại lỗi bạn quan tâm nhất. Với tiếng Việt, nên đo thêm một chỉ số nữa là lỗi dấu, để biết công cụ hỏng ở khung chữ hay ở dấu thanh. Bài này hướng dẫn cả ba, kèm ví dụ tính tay.
CER tính thế nào: khoảng cách sửa chữa giữa hai chuỗi
Cốt lõi của CER là khoảng cách Levenshtein, do nhà toán học Vladimir Levenshtein đề xuất năm 1965: số thao tác tối thiểu để biến chuỗi này thành chuỗi kia, với ba loại thao tác là thay một ký tự, xoá một ký tự và chèn một ký tự. Công thức CER viết gọn là (S + D + I) / N, trong đó S là số lần thay, D là số lần xoá, I là số lần chèn và N là số ký tự của bản chuẩn.
Ví dụ giả định: bản chuẩn là "Hà Nội mùa thu", máy đọc ra "Ha Nôi mùa thu". Đếm cả khoảng trắng, bản chuẩn có 14 ký tự. Có hai phép thay: "à" thành "a" và "ộ" thành "ô". CER bằng 2 chia 14, khoảng 14,3%. Cùng ví dụ đó, tính theo âm tiết thì bản chuẩn có bốn âm tiết, sai hai ("Hà" và "Nội"), WER bằng 50%. Một câu ngắn đã cho thấy khoảng cách lớn giữa hai chỉ số khi lỗi chỉ nằm ở dấu.
Vì có phép chèn, CER có thể vượt 100% khi máy sinh ra rất nhiều ký tự thừa, chẳng hạn đọc nhiễu nền thành hàng loạt dấu chấm phẩy. Do đó "độ chính xác ký tự" hay được báo cáo bằng 1 trừ CER chỉ là cách nói gần đúng. Khi đọc báo cáo của ai đó, hãy hỏi họ tính trên ký tự nào, có tính khoảng trắng và dấu câu không, và đã chuẩn hoá văn bản ra sao, vì mỗi lựa chọn có thể làm con số lệch đáng kể.
Đo riêng lỗi dấu: tách bệnh "khung chữ" khỏi bệnh "dấu thanh"
Một công cụ có CER 3% có thể sai theo hai kiểu rất khác nhau. Kiểu thứ nhất là sai khung chữ: đọc "rn" thành "m", nhầm "l" với "1", rơi mất cả từ. Kiểu thứ hai là đọc đúng khung nhưng sai dấu: "của" thành "cua", "nghĩ" thành "nghỉ". Hai kiểu cần cách chữa khác nhau: kiểu đầu thường do ảnh, bố cục hoặc phông chữ lạ; kiểu sau thường do độ phân giải và do công cụ không được huấn luyện đủ với tiếng Việt.
Cách tách đơn giản: tính CER hai lần. Lần một trên văn bản nguyên vẹn. Lần hai sau khi bỏ hết dấu ở cả bản chuẩn lẫn kết quả máy, tức "Hà Nội" và "Ha Nôi" đều về "Ha Noi". Hiệu số giữa hai lần xấp xỉ phần lỗi do dấu. Nếu CER có dấu là 6% mà CER bỏ dấu chỉ 1%, gần như toàn bộ vấn đề nằm ở dấu thanh và dấu phụ, và việc nên làm là nâng chất lượng ảnh hoặc chọn công cụ hỗ trợ tiếng Việt tốt hơn, chứ không phải chỉnh bố cục.
Có thể đi thêm một bước: tách dấu phụ (mũ, trăng, móc, gạch ngang của đ) khỏi dấu thanh (huyền, sắc, hỏi, ngã, nặng). Khi chuẩn hoá về dạng tổ hợp, mỗi dấu thành một ký tự riêng, nên đếm được công cụ hay nhầm cặp nào. Kinh nghiệm chung của người làm OCR tiếng Việt là cặp hỏi và ngã, cùng dấu nặng bị bỏ, thường là nhóm lỗi nhiều nhất; nhưng số đếm trên tài liệu của bạn mới là câu trả lời, vì mỗi loại phông và giấy cho một bức tranh riêng.
Làm bản chuẩn (ground truth) để chấm điểm: các bước
Mọi phép đo chỉ tốt bằng bản chuẩn. Bản chuẩn là văn bản được người gõ lại hoặc sửa tay, coi là đúng tuyệt đối để so với máy. Làm sai bước này thì mọi con số phía sau đều sai.
- Chọn mẫu trang. Lấy ngẫu nhiên từ từng loại tài liệu, đừng chỉ lấy trang đẹp. Ví dụ giả định: kho có 2.000 trang gồm ba loại, mỗi loại lấy 10 đến 15 trang.
- Viết hướng dẫn gõ. Quy định trước: giữ nguyên lỗi chính tả của bản gốc hay sửa; chữ đọc không ra ghi bằng ký hiệu gì; ngắt dòng theo bản gốc hay ghép đoạn; dấu câu kiểu ngoặc kép nào.
- Gõ độc lập hai lần. Hai người gõ cùng trang, không xem bản của nhau; hoặc một người sửa trên kết quả máy và người khác soát lại. Gõ từ đầu tốn công hơn nhưng tránh được việc người sửa "quen mắt" bỏ qua lỗi máy.
- Đối chiếu và giải quyết khác biệt. Chỗ hai bản khác nhau được người thứ ba xem ảnh gốc và quyết định. Tỷ lệ khác biệt giữa hai người gõ cũng cho biết độ khó thật của tài liệu.
- Chuẩn hoá Unicode về một dạng. Đưa cả bản chuẩn và kết quả máy về dạng dựng sẵn (NFC) trước khi so, nếu không cùng một chữ "ệ" có thể bị tính là khác nhau.
- Thống nhất khoảng trắng và dấu câu. Gộp nhiều khoảng trắng liên tiếp, thống nhất ngoặc kép thẳng và cong, dấu gạch ngang các loại, tuỳ mục đích có tính hay bỏ.
- Lưu kèm ảnh và hướng dẫn. Bản chuẩn không kèm ảnh gốc và quy ước gõ sẽ khó dùng lại cho lần đánh giá sau.
Nếu bản gốc chứa thông tin cá nhân, người gõ cũng đang tiếp xúc với dữ liệu đó. Hãy giới hạn người tham gia, không chuyển ảnh qua kênh công cộng, và cân nhắc dùng trang có nội dung ít nhạy cảm làm mẫu đánh giá.
Đọc con số cho đúng: một phần trăm trên giấy là bao nhiêu chữ sai
Con số phần trăm nghe nhỏ nhưng quy ra trang giấy thì không nhỏ. Bảng dưới là ví dụ giả định cho một trang văn bản khoảng 2.000 ký tự, tương đương chừng 450 âm tiết.
| CER | Số ký tự sai mỗi trang (xấp xỉ) | Cảm nhận khi đọc | Thường đủ cho việc gì |
|---|---|---|---|
| 0,5% | khoảng 10 | Đọc trôi, thỉnh thoảng gặp lỗi | Tìm kiếm toàn văn, đọc tham khảo; xuất bản vẫn cần soát |
| 2% | khoảng 40 | Gần như câu nào cũng có thể có một lỗi | Tìm kiếm theo từ khoá, phân loại tài liệu |
| 5% | khoảng 100 | Đọc vấp liên tục | Lập chỉ mục thô; không dùng để trích dẫn |
| 10% trở lên | khoảng 200 trở lên | Khó đọc, phải nhìn ảnh gốc | Gần như chỉ dùng để biết trang nói về chủ đề gì |
Mức "đủ" phụ thuộc mục đích. Hệ thống tìm kiếm chịu được lỗi khá cao vì người dùng gõ nhiều từ khoá và chỉ cần một từ khớp. Ngược lại, trích số tiền trên hoá đơn hay họ tên trên hồ sơ cần gần như tuyệt đối ở đúng những trường đó, dù phần còn lại sai nhiều cũng không sao. Vì vậy, ngoài CER toàn trang, hãy đo riêng độ chính xác trên các trường quan trọng.
Những cái bẫy khiến phép đo trông đẹp hơn thực tế
Mẫu thiên về trang đẹp. Người làm đánh giá hay chọn trang dễ gõ lại, vô tình loại những trang khó nhất, nơi lỗi thật sự dồn về. Lấy mẫu ngẫu nhiên có phân tầng theo loại tài liệu là cách chống lại thiên lệch này.
Không tách vùng không phải chữ. Nếu bản chuẩn bỏ qua số trang, tiêu đề lặp đầu trang hay chữ trong ảnh minh hoạ, còn máy lại đọc chúng, phép đo sẽ phạt máy oan; ngược lại, nếu bản chuẩn có mà máy bỏ, có thể đó chính là lỗi cần thấy. Cần quy định trước vùng nào được tính.
Thứ tự đọc. Trang nhiều cột, máy có thể đọc đúng từng chữ nhưng nối sai cột. CER theo chuỗi sẽ phạt rất nặng lỗi thứ tự này, trong khi với tìm kiếm thì gần như vô hại. Nếu chỉ quan tâm nội dung chữ, có thể so theo từng dòng hoặc từng khối thay vì cả trang.
Công cụ "sửa trơn". Một số công cụ dùng mô hình ngôn ngữ để làm mượt kết quả. Văn bản đọc rất trơn tru, nhưng có chỗ máy đã thay từ khó đọc bằng từ nghe hợp lý. CER vẫn bắt được các thay đổi này, nhưng chỉ khi bản chuẩn được gõ từ ảnh, không phải từ kết quả máy.
Dùng phép đo để chọn công cụ và theo dõi chất lượng lâu dài
Khi so hai, ba công cụ, điều quan trọng là so trên cùng một tập trang, cùng bản chuẩn, cùng quy tắc chuẩn hoá. Đừng so con số do nhà cung cấp công bố trên bộ dữ liệu của họ với con số bạn đo trên tài liệu của mình: tài liệu khác, phông khác, cách tính khác. Một công cụ đứng đầu với chữ in hiện đại có thể kém hẳn với sách in typo thập niên 1950 hay biểu mẫu viết tay.
Ngoài con số trung bình, hãy xem phân bố: bao nhiêu phần trăm trang có CER dưới 1%, bao nhiêu trang trên 10%. Những trang tệ nhất thường có chung một nguyên nhân, chẳng hạn ảnh chụp lệch, giấy có dấu đỏ đè chữ, hay bảng biểu dày đặc, và xử lý nguyên nhân đó cho hiệu quả hơn là đổi công cụ.
Với dự án kéo dài, giữ cố định một bộ trang chuẩn làm "thước đo" và chấm lại mỗi khi đổi phiên bản phần mềm, đổi thiết bị chụp hay đổi cài đặt xử lý ảnh. Cách làm này giống kiểm thử hồi quy trong phần mềm: phát hiện sớm khi một thay đổi tưởng vô hại lại làm lỗi dấu tăng vọt. Ghi kết quả vào một bảng theo ngày, phiên bản và cài đặt để cả nhóm cùng nhìn thấy.
Khi nào con số không quan trọng bằng việc người đọc có tin được hay không
CER và WER là thước đo kỹ thuật, còn người dùng cuối quan tâm câu hỏi khác: đoạn này có tin được để trích dẫn, để nhập vào sổ sách hay không. Vì vậy, nhiều dự án số hoá công khai kèm mức độ tin cậy cho từng trang hoặc từng đoạn, hoặc ghi rõ văn bản "chưa được soát". Người đọc biết mà dè chừng, thay vì vô tình dẫn lại một con số sai do máy đọc nhầm.
Một cách thực tế là phân ba mức: văn bản máy chưa soát, văn bản đã soát lướt, và văn bản đã đối chiếu đầy đủ với ảnh gốc. Mỗi mức đi kèm cách dùng khác nhau. Trích dẫn trong nghiên cứu, văn bản pháp lý, số liệu tài chính chỉ nên dựa trên mức cao nhất, và tốt nhất vẫn kèm ảnh gốc để ai cũng kiểm lại được.
Nói cách khác, phép đo giúp bạn biết cần đầu tư công soát ở đâu và bao nhiêu. Nó không thay thế việc soát, nhất là với tài liệu mà một dấu thanh sai có thể đổi nghĩa, như tên người, địa danh hay con số.
Câu hỏi thường gặp
CER bao nhiêu thì được coi là tốt cho tiếng Việt?
Không có ngưỡng chung. Với chữ in hiện đại, ảnh tốt, nhiều công cụ đạt CER dưới 1 đến 2%; với sách cũ, chữ viết tay, con số có thể lên hàng chục phần trăm. Quan trọng là đủ cho mục đích: tìm kiếm chịu được lỗi cao, còn trích dẫn hay nhập liệu thì cần soát tay dù CER thấp.
Vì sao WER tiếng Việt cao hơn CER nhiều như vậy?
Vì đơn vị từ trong tiếng Việt thường là âm tiết ngắn, và chỉ cần sai một ký tự, kể cả một dấu thanh, là cả âm tiết bị tính sai. Một trang có CER 2% có thể có WER vài lần cao hơn. Do đó khi so với số liệu tiếng Anh, nên so CER với CER thay vì WER.
Có công cụ nào tính sẵn CER không hay phải tự viết?
Nhiều thư viện mã nguồn mở về xử lý văn bản và nhận dạng giọng nói có sẵn hàm tính khoảng cách sửa chữa, CER và WER. Điều cần tự làm là chuẩn hoá văn bản cho đúng tiếng Việt trước khi gọi hàm, đặc biệt đưa Unicode về một dạng và thống nhất khoảng trắng, dấu câu.
Có thể dùng chatbot để kiểm kết quả OCR thay cho bản chuẩn không?
Không nên coi đó là bản chuẩn. Chatbot có thể gợi ý chỗ nghi sai rất hữu ích, nhưng nó đoán dựa trên ngữ cảnh và đôi khi tự sửa thành chữ nghe hợp lý mà không có trên giấy. Bản chuẩn để chấm điểm cần được người gõ hoặc soát từ ảnh gốc.
Cần bao nhiêu trang mẫu để đánh giá cho đáng tin?
Tuỳ độ đa dạng của kho. Với kho đồng nhất, vài chục trang ngẫu nhiên thường đủ để thấy khác biệt lớn giữa công cụ. Kho nhiều loại tài liệu nên lấy mẫu theo từng loại. Nếu hai công cụ cho con số rất sát nhau, cần thêm mẫu trước khi kết luận cái nào tốt hơn.
Lỗi thứ tự đọc có được tính vào CER không?
Có, nếu so cả trang như một chuỗi: đọc đúng chữ nhưng nối sai cột sẽ sinh rất nhiều phép xoá và chèn. Nếu mục đích chỉ là nội dung chữ, nên đánh giá theo dòng hoặc theo khối, và đo thứ tự đọc bằng một chỉ số riêng.