5.2 KiB
9.Appendix-Vietnamese-OCR-Strategy.md
Phụ lục chiến lược OCR Tiếng Việt cho toàn bộ hệ thống SharePoint → Search → RAG.
⚠️ LƯU Ý QUAN TRỌNG
- File này là phụ lục độc lập, KHÔNG chỉnh sửa các file 1–6.
- Dùng để:
- Thống nhất nhận thức kỹ thuật về OCR tiếng Việt
- Làm tài liệu tham chiếu khi triển khai / audit / mở rộng
- Tránh tranh luận lại từ đầu khi đổi AI agent hoặc dev
1. Khẳng định phạm vi ngôn ngữ
- ~99% tài liệu là Tiếng Việt (có dấu)
- Chủ yếu: văn bản hành chính, hợp đồng, quy định, scan nhiều đời
- Yêu cầu:
- Giữ đúng dấu tiếng Việt
- Chấp nhận được với search ngữ nghĩa & RAG
➡️ OCR tiếng Việt được coi là constraint nền, không phải optional.
2. Vì sao OCR tiếng Việt khó hơn OCR tiếng Anh?
- Tiếng Việt có:
- Dấu thanh (sắc, huyền, hỏi, ngã, nặng)
- Dấu phụ (â, ê, ô, ă, ơ, ư, đ)
- Sai dấu = đổi nghĩa hoàn toàn
- Các engine OCR chung thường:
- Nhận đúng chữ cái
- Sai hoặc rơi dấu trong scan mờ
Nghiên cứu về Vietnamese Document Recognition chỉ ra đây là vấn đề cố hữu nhiều năm citeturn12search39.
3. Đánh giá các engine OCR phổ biến cho tiếng Việt (2025–2026)
3.1 Tesseract (vie.traineddata)
- ✅ Dễ triển khai, chạy CPU
- ❌ Độ chính xác dấu không ổn định với scan thực tế
- ❌ Không phù hợp cho văn bản pháp lý, hợp đồng
Kết luận: KHÔNG đủ làm engine chính cho hệ thống này citeturn12search43turn12search44.
3.2 EasyOCR
- ✅ Setup nhanh
- ❌ Nhận dạng tiếng Việt chỉ ở mức trung bình
- ❌ Không tối ưu cho tài liệu nhiều trang
Kết luận: chỉ dùng thử nghiệm, không dùng production cho tiếng Việt.
3.3 PaddleOCR (base model)
- ✅ Text detection rất tốt
- ✅ Xử lý layout, xoay, nghiêng tốt
- ❌ Text recognition tiếng Việt chưa tối ưu nếu dùng model mặc định
Được đánh giá cao hơn Tesseract nhưng cần nâng cấp recognition citeturn12search43turn12search46.
3.4 PaddleOCR + VietOCR (Khuyến nghị chính)
Cấu hình thực tế được cộng đồng Việt Nam sử dụng nhiều nhất:
Text Detection : PaddleOCR (DB / SAST)
Text Recognition : VietOCR (Transformer, tiếng Việt có dấu)
Ưu điểm:
- ✅ Nhận dạng tiếng Việt có dấu tốt nhất trong open‑source
- ✅ Chạy on‑prem
- ✅ Có thể fine‑tune theo domain
Đây là pipeline được dùng trong nhiều dự án OCR tiếng Việt thực tế citeturn12search36turn12search41.
3.5 Fine‑tuned PaddleOCR cho tiếng Việt (Advanced)
- Fine‑tune detection + recognition bằng dataset tiếng Việt
- Có thể đạt độ chính xác rất cao cho từng domain (hành chính, y tế…)
Nghiên cứu và repo gần đây cho thấy hiệu quả rõ rệt khi fine‑tune PaddleOCR cho VN citeturn12search52turn12search54.
⚠️ Tuy nhiên:
- Tốn effort huấn luyện
- KHÔNG cần làm ngay ở phase đầu
4. Mức độ chính xác thực tế có thể kỳ vọng
| Chất lượng scan | OCR tiếng Việt tốt |
|---|---|
| Scan rõ, font chuẩn | 97–99% |
| Scan nhiều đời | 90–95% |
| Scan rất xấu | Không OCR nào cứu hoàn toàn |
➡️ Vì vậy hệ thống không được phụ thuộc 100% vào OCR.
5. OCR Tiếng Việt trong kiến trúc hiện tại (đã được tính trước)
Kiến trúc hệ thống không giả định OCR hoàn hảo:
| Vấn đề OCR | Cách kiến trúc xử lý |
|---|---|
| Sai 1 từ | Chunk nhỏ, search vẫn trúng |
| Sai dấu | Search hybrid + semantic |
| OCR fail | File bị đánh cờ, không đưa vào RAG |
| OCR kém | Người dùng mở file gốc |
➡️ Đây là thiết kế có chủ đích, không phải workaround.
6. Chiến lược triển khai OCR tiếng Việt theo phase
Phase 1 – An toàn, triển khai nhanh
- PaddleOCR (Detection) + VietOCR (Recognition)
- OCR page‑wise
- Lưu confidence theo trang
Phase 2 – Tối ưu dần
- Tune preprocessing (deskew, binarization)
- Dictionary post‑process tiếng Việt
Phase 3 – Khi thực sự cần
- Fine‑tune PaddleOCR/VietOCR theo domain
7. Nguyên tắc vận hành bắt buộc
- OCR < threshold → KHÔNG đưa vào RAG Chat
- OCR output luôn link về file gốc
- OCR có log & audit
8. Kết luận phụ lục
- ✅ OCR tiếng Việt đã được tính đến từ đầu
- ✅ Có giải pháp đủ tốt cho production
- ❌ Không có OCR tiếng Việt "100% đúng cho mọi trường hợp"
- ✅ Kiến trúc đã được thiết kế để chịu sai có kiểm soát
Phụ lục này dùng để tham chiếu lâu dài khi nói về OCR tiếng Việt trong hệ thống.