Phase 7: Hoàn thiện Modular RAG Backend với FastAPI và Đa LLM Provider

This commit is contained in:
2026-05-08 07:30:30 +00:00
commit 26d1298cf6
51 changed files with 5360 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
# 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.*