Files
poc_system/doc/9.Appendix-Vietnamese-OCR-Strategy.md

164 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 16.
> - 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 citeturn12search39.
---
## 3. Đánh giá các engine OCR phổ biến cho tiếng Việt (20252026)
### 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 citeturn12search43turn12search44.
---
### 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** citeturn12search43turn12search46.
---
### 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 opensource**
- ✅ Chạy onprem
- ✅ Có thể finetune theo domain
Đây là pipeline được dùng trong nhiều dự án OCR tiếng Việt thực tế citeturn12search36turn12search41.
---
### 3.5 Finetuned PaddleOCR cho tiếng Việt (Advanced)
- Finetune 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 finetune PaddleOCR cho VN citeturn12search52turn12search54.
⚠️ 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 | 9799% |
| Scan nhiều đời | 9095% |
| 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 pagewise
- Lưu confidence theo trang
### Phase 2 Tối ưu dần
- Tune preprocessing (deskew, binarization)
- Dictionary postprocess tiếng Việt
### Phase 3 Khi thực sự cần
- Finetune 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.*