Trích xuất dữ liệu từ giấy tờ là bước sau OCR: máy không chỉ đọc chữ mà phải biết chữ nào là giá trị của trường nào, chẳng hạn "ngày lập", "tổng tiền", "mã số thuế", rồi chuẩn hoá về dạng máy dùng được và kiểm chéo để bắt lỗi. Với giấy tờ tiếng Việt, khó khăn nằm ở cách viết ngày tháng, số tiền dùng dấu chấm ngăn hàng nghìn, số tiền viết bằng chữ, con dấu đỏ đè lên chữ và vô số mẫu biểu khác nhau. Độ chính xác cuối cùng phụ thuộc vào khâu kiểm chéo nhiều hơn là vào độ giỏi của bộ đọc chữ.
Trước khi bắt tay làm, hãy hỏi một câu đơn giản: giấy tờ này có bản số gốc không? Hoá đơn điện tử ở Việt Nam có tệp dữ liệu gốc dạng XML theo quy định; nếu lấy được tệp đó thì đừng OCR bản in. Bài này dành cho phần còn lại: biểu mẫu giấy, phiếu thu chi, hợp đồng, giấy tờ cũ chưa có bản số, và cách thiết kế quy trình trích xuất đáng tin.
Từ "đọc chữ" đến "hiểu tài liệu": thêm hai tầng nữa
Kết quả OCR của một tờ phiếu chỉ là các dòng chữ kèm toạ độ. Để biết "1.250.000" là tổng tiền chứ không phải số lượng, máy cần tầng thứ nhất: phân tích bố cục, tức nhận ra vùng tiêu đề, bảng hàng hoá, khối thông tin người bán, ô chữ ký. Tầng thứ hai là liên kết khoá với giá trị: nhãn "Ngày lập" nằm bên trái, giá trị nằm bên phải hoặc ngay dưới; nhãn cột "Thành tiền" ở đầu bảng, giá trị nằm ở từng dòng phía dưới.
Có ba cách phổ biến để làm hai tầng này. Cách thứ nhất là mẫu cố định: với giấy tờ luôn cùng một mẫu, khai báo trước vị trí từng trường trên trang; nhanh, chính xác, nhưng gãy ngay khi mẫu đổi. Cách thứ hai là quy tắc theo nhãn: tìm chữ "Mã số thuế" rồi lấy chuỗi số gần nhất; linh hoạt hơn, nhưng phải viết nhiều quy tắc. Cách thứ ba là mô hình học máy hiểu tài liệu, kể cả mô hình thị giác–ngôn ngữ, nhận ảnh và trả về các trường theo một khuôn bạn định nghĩa; linh hoạt nhất, nhưng cần kiểm kỹ vì có thể điền giá trị không có trên giấy.
Trong thực tế, các hệ thống tốt thường trộn cả ba: mẫu cố định cho vài loại giấy tờ chiếm phần lớn khối lượng, mô hình cho phần còn lại, và quy tắc kiểm tra cho tất cả.
Bảng hàng hoá là phần khó nhất trong tầng bố cục. Bảng có thể không kẻ đường, một ô "tên hàng" xuống hai dòng, bảng dài tràn sang trang sau và tiêu đề cột chỉ in ở trang đầu. Nếu máy tách sai một dòng, mọi cột phía sau lệch theo: đơn giá của mặt hàng này nhảy sang mặt hàng kia. Vì thế, với chứng từ nhiều dòng hàng, nên kiểm số dòng và kiểm phép nhân số lượng với đơn giá ở từng dòng, thay vì chỉ nhìn tổng cuối.
Chuẩn hoá dữ liệu kiểu Việt: những chỗ máy hay hiểu sai
Đọc đúng chữ chưa có nghĩa là hiểu đúng giá trị. Bảng dưới liệt kê những cách viết đặc thù trong giấy tờ tiếng Việt và cách chuẩn hoá; ví dụ là giả định.
| Loại dữ liệu | Cách viết thường gặp | Bẫy | Chuẩn hoá về |
|---|---|---|---|
| Số tiền | 1.250.000 đ; 1,250,000 VNĐ | Dấu chấm ngăn hàng nghìn bị hiểu là dấu thập phân | Số nguyên đồng: 1250000 |
| Số thập phân | 12,5 kg | Dấu phẩy thập phân bị hiểu là ngăn hàng nghìn | Số có phần lẻ: 12.5 |
| Ngày tháng | ngày 05 tháng 3 năm 2026; 05/03/2026 | Hiểu nhầm thành tháng 5 ngày 3 theo kiểu Mỹ | Dạng năm-tháng-ngày: 2026-03-05 |
| Số tiền bằng chữ | Một triệu hai trăm năm mươi nghìn đồng | Lỗi dấu làm đổi số: "năm" và "nằm", "mươi" và "mười" | Đổi ra số để đối chiếu với số viết bằng chữ số |
| Mã số thuế | 10 chữ số, hoặc 10 chữ số kèm 3 chữ số đơn vị phụ thuộc | Nhầm 0 với O, 1 với l | Chuỗi chỉ gồm chữ số, kiểm độ dài |
| Họ tên | NGUYỄN VĂN AN; Nguyễn Văn An | Chữ in hoa nhỏ mất dấu | Viết hoa chữ cái đầu, giữ dấu, soát tay |
| Địa chỉ | Tên xã, phường, tỉnh trước và sau sáp nhập | Giấy tờ cũ còn ghi huyện và tỉnh cũ | Giữ nguyên văn, thêm trường địa danh hiện hành nếu cần |
Dòng cuối đáng chú ý trong giai đoạn này. Từ ngày 1/7/2025, Việt Nam còn 34 tỉnh, thành phố và không còn cấp huyện; giấy tờ lập trước đó vẫn ghi địa danh cũ. Hệ thống trích xuất không nên tự "sửa" địa chỉ cũ thành mới, mà nên giữ nguyên văn như trên giấy, và nếu cần thì thêm một trường riêng ghi địa danh hiện hành sau khi đối chiếu.
Con dấu đỏ, chữ ký, ô đánh dấu: những vật cản riêng của giấy tờ Việt
Giấy tờ hành chính và thương mại ở Việt Nam thường có con dấu đỏ đóng đè lên phần chữ ký và một phần tên người ký, chức danh. Với OCR, mực đỏ đè lên chữ đen làm nét chữ đứt đoạn hoặc dính thêm những vòng cung lạ. Một mẹo xử lý ảnh hữu ích là tách kênh màu: trên kênh màu đỏ của ảnh, mực dấu đỏ gần như trùng với nền giấy và biến mất, còn chữ đen vẫn giữ tương phản. Ngược lại, khi cần đọc chữ trong con dấu, lại dùng kênh khác để làm nổi mực đỏ.
Chữ ký thì không nên cố đọc thành chữ; điều cần biết thường chỉ là "có chữ ký hay không" ở vị trí quy định. Tương tự, ô đánh dấu trong biểu mẫu cần được nhận diện là đã đánh hay chưa, chứ không phải đọc ký hiệu bên trong. Những trường này nên được mô hình hoá thành dạng có hoặc không, kèm ảnh cắt để người kiểm xem nhanh khi máy không chắc.
Ảnh chụp giấy tờ còn mang những thông tin mà quy trình không cần: số căn cước, chữ ký, ảnh chân dung. Nguyên tắc tối thiểu dữ liệu nghĩa là chỉ trích những trường cần cho mục đích, che hoặc không lưu phần còn lại, và giới hạn người được xem ảnh gốc. Việc xác minh danh tính qua giấy tờ (eKYC) là một bài toán riêng với yêu cầu pháp lý riêng, không nên làm "kèm theo" trong một quy trình trích xuất dữ liệu thông thường.
Kiểm chéo: cách bắt lỗi mà không phải đọc lại từng tờ
Cộng lại các dòng. Tổng thành tiền của các dòng hàng phải bằng cộng tiền hàng; cộng thêm thuế phải bằng tổng thanh toán. Chênh lệch dù một chữ số là tín hiệu có ít nhất một số bị đọc sai, và thường chỉ ra luôn dòng nghi ngờ.
Đối chiếu số với chữ. Nhiều chứng từ ghi số tiền cả bằng chữ số lẫn bằng chữ. Đổi phần chữ ra số rồi so: hai nguồn độc lập cùng sai giống nhau là rất hiếm. Lưu ý lỗi dấu có thể đổi giá trị: "năm" là 5, "mười" và "mươi" khác vị trí hàng.
Kiểm khuôn dạng. Mã số thuế phải đủ độ dài và chỉ có chữ số; ngày tháng phải là ngày có thật và nằm trong khoảng hợp lý; số lượng nhân đơn giá phải ra thành tiền. Những phép kiểm này đơn giản nhưng bắt được phần lớn lỗi nhầm 0 với O, 1 với l.
Đối chiếu với danh mục có sẵn. Tên nhà cung cấp, mã hàng, tên tỉnh thành có thể so với danh mục nội bộ. Giá trị không khớp danh mục nào là ứng viên lỗi, hoặc là đối tác mới cần xác nhận.
Dùng độ tin cậy để gắn cờ. Trường nào có độ tin cậy nhận dạng thấp, hoặc do mô hình điền mà không tìm thấy vùng chữ tương ứng trên ảnh, được đưa vào hàng chờ cho người duyệt kèm ảnh cắt đúng vùng đó.
Dựng một quy trình trích xuất đáng tin: tám bước
Dù dùng công cụ nào, các bước dưới đây giúp quy trình có thể kiểm lại và cải tiến dần.
- Liệt kê loại giấy tờ và số lượng mỗi loại; ưu tiên tự động hoá loại chiếm nhiều nhất.
- Với mỗi loại, định nghĩa danh sách trường cần lấy, kiểu dữ liệu, trường nào bắt buộc, và quy tắc kiểm cho từng trường.
- Hỏi xem có bản số gốc không: hoá đơn điện tử có tệp XML, sao kê có tệp xuất từ ngân hàng. Có thì dùng bản số.
- Chụp hoặc quét theo chuẩn chung, che trước những vùng không cần thiết nếu ảnh sẽ rời khỏi máy.
- Chạy nhận dạng và trích xuất, lưu cả chữ thô, toạ độ, độ tin cậy và giá trị đã chuẩn hoá.
- Chạy toàn bộ phép kiểm chéo, gắn cờ trường lỗi hoặc thiếu.
- Người duyệt xử lý hàng chờ gắn cờ, mỗi lần sửa được ghi lại.
- Mỗi tháng lấy mẫu ngẫu nhiên vài phần trăm hồ sơ đã "qua" để soát lại toàn bộ, đo tỷ lệ lỗi lọt qua.
Bước cuối là bước hay bị cắt khi bận, nhưng nó trả lời câu hỏi quan trọng nhất: những hồ sơ máy cho là đúng có thật sự đúng không. Không có nó, sai sót có hệ thống có thể chạy hàng tháng trước khi ai đó phát hiện qua một khiếu nại.
Dùng mô hình thị giác–ngôn ngữ để trích trường: câu lệnh và giới hạn
Mô hình đọc ảnh rất tiện khi giấy tờ không theo mẫu cố định. Câu lệnh nên yêu cầu một khuôn trả lời rõ ràng và cấm phỏng đoán. Ví dụ câu lệnh mẫu: "Ảnh là một phiếu chi tiếng Việt. Trả về các trường: ngày lập, người nhận, nội dung, số tiền bằng số, số tiền bằng chữ. Chép đúng như trên giấy, không sửa chính tả, không tự tính toán. Trường nào không thấy hoặc không đọc rõ thì ghi là không rõ, không được đoán."
Sau đó, chính quy trình kiểm chéo ở trên mới là lưới an toàn: đổi số tiền bằng chữ ra số và so với số tiền bằng số mà mô hình đã chép. Nếu hai giá trị không khớp, đừng tin bên nào, mà mở ảnh ra xem. Nên tránh yêu cầu mô hình "tự sửa cho khớp", vì nó có thể sửa một bên cho khớp bên kia dù cả hai đều sai so với giấy.
Một giới hạn nữa là mô hình thường không trả về toạ độ đáng tin, nên khó hiện vùng ảnh cho người duyệt. Cách khắc phục là chạy song song một bộ OCR có toạ độ, rồi tìm chuỗi giá trị mô hình trả về trong kết quả OCR để định vị. Không tìm thấy chuỗi đó ở đâu trên trang là dấu hiệu giá trị có thể đã bị điền.
Câu hỏi thường gặp
Hoá đơn điện tử có cần OCR không?
Thường là không. Hoá đơn điện tử có tệp dữ liệu gốc dạng XML chứa đầy đủ các trường, chính xác hơn mọi phép đọc chữ từ bản in hay ảnh chụp. Chỉ nên OCR khi không lấy được tệp gốc, và khi đó vẫn nên tra cứu hoá đơn trên hệ thống chính thức để đối chiếu các trường quan trọng.
Vì sao máy hay đọc sai số tiền dù chữ số in rất rõ?
Lỗi thường không nằm ở việc đọc chữ số mà ở việc hiểu dấu ngăn cách. Tiếng Việt dùng dấu chấm ngăn hàng nghìn và dấu phẩy cho phần thập phân, ngược với cách viết tiếng Anh. Bộ chuẩn hoá không cấu hình theo quy ước Việt Nam có thể biến một triệu thành một phẩy hai lăm.
Có nên để máy tự sửa địa chỉ cũ theo đơn vị hành chính mới?
Không nên sửa đè. Giấy tờ là chứng cứ của thời điểm lập, nên giữ nguyên văn địa chỉ như trên giấy. Nếu nghiệp vụ cần địa danh hiện hành, thêm một trường riêng, điền sau khi đối chiếu với danh mục đơn vị hành chính chính thức, và ghi rõ đó là giá trị quy đổi.
Làm sao xử lý con dấu đỏ đè lên chữ?
Một kỹ thuật phổ biến là tách kênh màu của ảnh. Trên kênh đỏ, mực dấu đỏ gần như hoà vào nền giấy nên chữ đen phía dưới hiện rõ hơn. Ngoài ra nên chụp ở độ phân giải cao và tránh nhị phân hoá thô, vì vùng giao giữa mực đỏ và đen dễ bị cắt ngưỡng sai.
Tỷ lệ tự động hoá bao nhiêu là hợp lý?
Không có con số chung. Với giấy tờ cùng mẫu, in rõ, phần lớn hồ sơ có thể qua mà không cần người xem; với giấy tờ đa dạng, viết tay nhiều, hàng chờ duyệt sẽ lớn. Mục tiêu hợp lý là để máy làm phần dễ và gắn cờ chính xác phần khó, thay vì ép tỷ lệ tự động cao bằng cách nới các phép kiểm.
Ảnh giấy tờ sau khi trích xong có nên giữ lại không?
Tuỳ quy định lưu trữ của đơn vị và tính chất giấy tờ. Chứng từ kế toán có thời hạn lưu theo quy định riêng. Với giấy tờ chứa dữ liệu cá nhân không cần cho nghiệp vụ lâu dài, nguyên tắc tối thiểu dữ liệu khuyến khích chỉ giữ những gì cần và xoá đúng hạn, kèm phân quyền truy cập rõ ràng.