# Quy Trình 03A — Hiệu Đính Myanmar Sau OCR

> **Dành cho Editor Agent** — Kiến thức tham khảo khi thiết kế prompt cho editor
> Cập nhật: 2026-06-27 | Phiên bản: **6.2** (tinh gọn — quy tắc 3 dòng đầu trang, bỏ verification phức tạp)

---

> ⛔ **RED LINES — 3 ĐIỀU CẤM TUYỆT ĐỐI (đọc trước khi làm gì khác)**
>
> 1. **KHÔNG GỘP QUA BARRIER `## PAGE X`** — dù câu bị cắt giữa chừng, giữ nguyên. Mỗi trang là 1 ốc đảo.
> 2. **KHÔNG BỊA CHỮ** — nếu cuối trang câu cụt (VD: `အရေအဆင်း`), GIỮ NGUYÊN. Không tự điền tiếp dù đoán được nghĩa.
> 3. **THÀ THIẾU CÒN HƠN SAI** — mọi sự tự ý thêm thắt nội dung là làm giả văn bản gốc.

---

## I. NGUYÊN TẮC CỐT LÕI

> 🛑 **TÔN TRỌNG NGUYÊN TÁC**
>
> Editor CHỈ sửa:
> - Lỗi OCR (ký tự sai, thiếu dấu, sai chính tả)
> - Lỗi bố cục (text bị OCR đặt sai vị trí)
> - Nhiễu OCR (ký tự rác, artifact từ quá trình scan — cần xóa bỏ)
>
> **KHÔNG** tự ý:
> - Viết đầy đủ các từ viết tắt
> - Chỉnh sửa câu văn, từ ngữ của bản gốc
> - Thêm bớt chữ để "cải thiện" văn phong
> - Mở rộng chú giải viết tắt
> - Thêm dấu câu (`၊`, `။`) không có trong bản gốc
 >- **Đổi dấu câu gốc** — `၊` trong bản gốc → `=` hoặc `။` → **SAI!** Giữ nguyên dấu câu file gốc

---

## II. QUY TẮC SỬA LỖI OCR (A→G)

### A. PĀLI — SỬA NẾU CHẮC CHẮN

Các lỗi phổ biến trên từ Pāli:

| Lỗi | Sửa thành | Ghi chú |
|-----|----------|---------|
| `သြဃ` | `သံဃ` | saṅgha |
| `ဥတ` | `ဥတ္တ` | utta |
| Thiếu `ံ` cuối từ Pāli | Thêm `ံ` | VD: `ဘိက္ခ` → `ဘိက္ခံ` |
| `သြင` | `သံဃ` | |
| `တထာဂတ` | `တထာဂတော` | |
| Sai dấu Pāli | Tra SQLite-vec patterns từ Phase 1 | |

**Nguyên tắc:** Chỉ sửa khi CHẮC CHẮN đó là lỗi OCR. Nếu nghi ngờ → ghi vào notes, không sửa.

### B. TRỢ TỪ — LUÔN SỬA

Đây là lỗi OCR hệ thống, xuất hiện thường xuyên:

| Lỗi | Sửa thành | Ghi chú |
|-----|----------|---------|
| `လျင်` | `လျှင်` | Trợ từ điều kiện |
| `ငှါ` | `ငှာ` | Trợ từ mục đích |
| `သူတပါး` | `သူတစ်ပါး` | Người khác |
| `တခါ` | `တစ်ခါ` | Một lần |
| `တချို့` | `တစ်ချို့` | Một số |
| `တခု` | `တစ်ခု` | Một cái |
| `တကြောင်း` | `တစ်ကြောင်း` | Một lý do |
| `တနည်း` | `တစ်နည်း` | Một cách |

### C. SỐ ĐẾM — LUÔN SỬA

| Lỗi | Sửa thành | Ghi chú |
|-----|----------|---------|
| `တထောင်` | `တစ်ထောင်` | Một nghìn |
| `တဆယ်` / `တဆဲ့` | `တစ်ဆယ့်` | Mười... |
| `တရာ` | `တစ်ရာ` | Một trăm |
| `၁ဝ` | `၁၀` | Số 10 |
| `၂ဝ` | `၂၀` | Số 20 |
| `၃ဝ` | `၃၀` | Số 30 |
| `ဝ.၅` | `၀.၅` | Số thập phân |

### D. SAI NGHĨA — SỬA THEO CONTEXT

Lỗi OCR khiến từ bị sai nghĩa hoàn toàn. Cần đọc context để xác nhận:

| Lỗi | Sửa thành | Context clue |
|-----|----------|-------------|
| `သမီးခင်ပွန်း` | `ဇနီးခင်ပွန်း` | Vợ chồng |
| `ထိုသမီး` | `ထိုသို့` | Như vậy |
| `တမင်္ဂလာ` | `တမင်တကာ` | Cố ý |
| `သစ္စာတော်` | `သစ္စာတရား` | Sự thật |
| `ဧကစေ့` | `ဧကစ္စေ` | Một số (Pāli: ekacce) |
| `ထွတ်မြောက်` | `ထွက်မြောက်` | Thoát khỏi (thiếu dấu) |

### E. NGHI NGỜ — GHI CHÚ, KHÔNG SỬA

Nếu không chắc chắn một chỗ có phải lỗi OCR không:
- **Không sửa**
- Ghi vào edited-notes với Loại = `Nghi ngờ`
- Mô tả lý do nghi ngờ

### F. FORMAT

- **Gộp dòng bị ngắt** — dòng không kết thúc bằng `။` hoặc `၊` là câu bị OCR cắt ngang → nối với dòng sau (cách 1 dấu cách). Dòng kết thúc bằng `။` hoặc `၊` → giữ nguyên, xuống dòng. Xem chi tiết [Mục IV - Gộp dòng](#1-gộp-dòng-bị-ngắt-line-merging). ⚠️ **Không cần ghi vào notes** (thay đổi thuần layout, không đổi ký tự).
- **Thêm dòng trống** giữa các đoạn văn khác nhau (khác chủ đề, khác ý). ⚠️ **Không cần ghi vào notes.**
- **Bold** các terms quan trọng theo ngữ cảnh với `**...**` (xem [Mục IV](#iv-định-dạng-markdown)). ⚠️ **Không cần ghi vào notes** (thêm `**` để định dạng, không sửa chữ).
- **Giữ `## PAGE X` markers** — không xóa, không thay đổi
- **Không thêm dòng ghi chú model** vào output (xem [Mục VI](#vi-danh-sách-cấm))

### G. KHÔNG TỰ Ý THÊM/BỚT NỘI DUNG GỐC

- Chỉ sửa chữ sai → chữ đúng
- Chỉ sắp xếp lại vị trí khi OCR làm sai bố cục
- Không "cải thiện" văn phong
- Không mở rộng từ viết tắt
- Không thêm dấu câu không có trong bản gốc
- **Ngoại lệ:** Nhiễu OCR (artifact) không phải "nội dung gốc" → được phép xóa (xem Rule H)

> 🚨 **CẤM GHÉP NỘI DUNG QUA RANH GIỚI TRANG**
>
> Mỗi trang là một đơn vị độc lập. **TUYỆT ĐỐI KHÔNG** nối nội dung từ cuối trang này sang đầu trang sau, kể cả khi câu bị cắt ngang giữa chừng. `## PAGE X` là barrier tuyệt đối — không merge, không di chuyển text qua barrier này. Nếu cuối trang câu chưa hoàn chỉnh → **giữ nguyên, không thêm gì, không ghép với trang sau**.

### H. NHIỄU OCR — LUÔN XÓA

Đây là ký tự rác do quá trình scan/OCR tạo ra, **không phải một phần của văn bản gốc**. Phải xóa bỏ, không giữ lại.

| Dạng nhiễu | Ví dụ | Cách xử lý |
|-----------|-------|----------|
| **Ký tự lạc** | `က`, `3` đứng một mình cuối trang | **XÓA** (số trang/chữ cái artifact) |
| **Dấu câu rác** | `!! -`, `"` đứng lẻ loi giữa các đoạn | **XÓA** |
| **Chữ Latin rác** | `KELI KITU KĶU VAU` cuối file | **XÓA** (footer/text ngoại lai không thuộc văn bản Myanmar) |
| **Ký hiệu lạ** | `$`, `%`, `@` không có ý nghĩa trong context | **XÓA** |
| **Dấu cách thừa** | Nhiều space liên tiếp, space đầu dòng | **XÓA** (chuẩn hóa về 1 space) |

**Nguyên tắc:**
- ✅ Xóa nếu CHẮC CHẮN là artifact (không ảnh hưởng nghĩa)
- ✅ Ghi vào notes: Loại = `Nhiễu`, mô tả ngắn gọn đã xóa gì
- ❌ Không xóa nếu nghi ngờ đó là một phần của văn bản → giữ + flag `Nghi ngờ`

> 🚨 **CẢNH BÁO FALSE POSITIVE:** Không phải từ nào đứng riêng ở đầu dòng cũng là nhiễu. Từ Myanmar ngắn (1-2 âm tiết) như `လျက်` (= từ/qua), `လည်း` (= cũng), `သော်` (= nếu), `၏` (= của), `မူ` (= thì), `တာ၍` (= để mà)... là **từ vựng thật**, không phải artifact. **Trước khi xóa một từ đơn đứng riêng, phải kiểm tra: đây có phải từ Myanmar có nghĩa không? Nếu có → GIỮ.** Chỉ xóa khi là ký tự đơn lẻ vô nghĩa (`က`, `3`, `$`) hoặc chữ Latin lạc.

> 🚨 **KHÔNG XÓA CẢ ĐOẠN KHI CHỈ NGHI NGỜ 1 TỪ:** Nếu nghi ngờ 1 từ ở đầu dòng là nhiễu → **chỉ flag từ đó là `Nghi ngờ`, giữ nguyên toàn bộ dòng và đoạn văn phía sau.** Tuyệt đối không xóa cả đoạn vì 1 từ đáng ngờ. Mất 1 từ còn hơn mất cả đoạn văn.

---

## III. XỬ LÝ LỖI BỐ CỤC OCR (Text Displacement)

> 🆕 Editor cần chủ động phát hiện và sắp xếp lại nội dung khi OCR làm chữ chạy sai vị trí.

### Các dạng lỗi bố cục

| Dạng | Mô tả | Dấu hiệu |
|------|-------|---------|
| **Nhiều cột** | Text cột A → B bị trộn | Đang đọc bỗng sang chủ đề khác, rồi quay lại |
| **Footnote lạc** | Chú thích cuối trang chui vào body | Số nhỏ giữa câu, đoạn ngắn khác giọng |
| **Số trang** | Số trang PDF lẫn vào văn bản | Số lẻ loi giữa 2 câu, không liên quan nội dung |
| **Header/Footer** | Tên chương/sách lặp trong text | Dòng ngắn lặp lại giữa các đoạn |
| **Marginal note** | Ghi chú bên lề bị nhét vào câu | Đoạn trong ngoặc đơn lạc chỗ, giọng khác |
| **Bảng biểu** | Nội dung bảng tuần tự hóa sai | Số liệu rời rạc không theo hàng/cột |

### Cách phát hiện

1. **Đứt mạch văn** — đang chủ đề A, bỗng 1-2 câu chủ đề B, rồi quay lại A
2. **Con số lạc lõng** — số đứng một mình giữa 2 câu văn (số trang artifact)
3. **Đoạn ngắn bất thường** — 1 dòng ngắn, khác giọng văn với xung quanh
4. **Lặp pattern** — cùng cụm từ ngắn xuất hiện nhiều lần (header/footer leaks)
5. **Dấu ngoặc không khớp** — mở ngoặc trang này, đóng ngoặc trang khác

### Cách xử lý

```
PHÁT HIỆN → XÁC ĐỊNH VỊ TRÍ ĐÚNG → DI CHUYỂN → GHI NOTES
```

1. **Phát hiện** block text sai vị trí
2. **Xác định vị trí đúng:**
   - Footnote → cuối trang hiện tại (sau `## PAGE X`)
   - Số trang → xóa (artifact) hoặc ghi chú
   - Text cột lạc → ghép vào đoạn có nội dung liên quan
   - Header/footer → xóa (xem quy trình phát hiện header bên dưới)
   - Marginal note → đưa vào `[chú thích]` hoặc xuống cuối trang
3. **Di chuyển** text về đúng vị trí
4. **Ghi notes** — Loại = `Bố cục`, mô tả rõ block nào di chuyển từ đâu đến đâu

> 🚨 **CHỈ SẮP XẾP TRONG CÙNG MỘT TRANG.** TUYỆT ĐỐI KHÔNG DI CHUYỂN NỘI DUNG QUA RANH GIỚI `## PAGE X`.

### 🧠 Xóa Header — Quy Tắc "3 DÒNG ĐẦU TRANG"

> 🛑 **Làm bước này TRƯỚC KHI GỘP DÒNG.** Header đứng riêng 1 dòng — nếu gộp dòng trước, header bị nối vào câu → không phát hiện được → sót.

Với **MỖI** trang (`## PAGE X`), kiểm tra 3 dòng text đầu tiên (bỏ qua dòng trống):

1. **Dòng ngắn, lặp pattern header?** (tên sách, tên chương, kết thúc `ခဏ်း`, `အခန်း`) → **XÓA NGAY**
2. **Số đứng riêng 1 dòng?** (Myanmar/Ả-rập) → **XÓA NGAY** — số trang artifact
3. **Dòng giống tiêu đề nhưng KHÔNG rõ có phải header?** → kiểm tra raw file: có số trang gần (±5 dòng) → header → XÓA. Không có → heading thật → GIỮ, format `##`/`###`

**Pattern thường gặp:**
```
## PAGE X
ဆရာများအတွက် မှတ်ဘွယ်    ← XÓA (header — dòng ngắn, lặp pattern)
၁၅၇                        ← XÓA (số trang)
Nội dung thật...              ← GIỮ
```
```
## PAGE X
၁၅၈                        ← XÓA (số trang)
ရုပ်ပုံ ရှင်ကျင့်ဝတ်          ← XÓA (header — tên sách)
Nội dung thật...              ← GIỮ
```

**Không suy nghĩ, không phân tích "có phải content không?"** — nếu khớp pattern → xóa. Ghi notes: Loại=`Header`.

### Các dạng nhiễu OCR thường gặp (xóa bỏ)

Khác với lỗi bố cục (cần sắp xếp lại), đây là **ký tự rác** — không thuộc về văn bản gốc, cần **xóa thẳng**. Quét sau khi đã xử lý bố cục.

| Dạng nhiễu | Dấu hiệu | Ví dụ thực tế |
|-----------|---------|-------------|
| **Số trang lạc** | Số đứng 1 mình trên 1 dòng | `3` hoặc `၁၂၅` giữa 2 đoạn văn |
| **Chữ cái rác** | 1 ký tự Myanmar đứng riêng cuối trang | `က` ở cuối PAGE 2 |
| **Dấu câu rác** | Ký hiệu không có trong context | `!! -`, `"` đứng lẻ loi |
| **Chữ Latin** | Text Latin không phải Pāli | `KELI KITU KĶU VAU` — footer từ bản in |
| **Footer/Header** | Text lặp lại qua nhiều trang | Tên sách, tên chương bị OCR nhặt |
| **Ký hiệu đặc biệt** | `$`, `%`, `@`, `~` không có nghĩa | Artifact từ font/encoding |

**Cách xử lý:**
1. Sau khi merge & sửa lỗi → quét toàn bộ output
2. Phát hiện dòng/ký tự đứng riêng lẻ, không liên quan nội dung
3. Xóa bỏ → ghi notes (Loại = `Nhiễu` hoặc `Header` tùy trường hợp)

**Ví dụ:**
```
Trước: ...စီစဉ်လိုက်ရပါသည်။\nက\n3\n\n## PAGE 3
Sau:  ...စီစဉ်လိုက်ရပါသည်။\n\n## PAGE 3
Notes: | 3 | 2 | `က` + `3` (số trang rác) | (đã xóa) | Nhiễu |
```

### Nguyên tắc vàng

- ✅ **Xóa header trước khi gộp dòng** — header đứng riêng dễ thấy, gộp rồi khó phát hiện
- ✅ **Chủ động xóa nhiễu** — artifact không phải nội dung gốc, xóa không do dự
- ✅ **Luôn ghi notes** — mọi thay đổi ký tự phải có trong edited-notes
- ✅ **Ưu tiên mạch văn** — text phải đọc xuôi, logic, sạch sẽ
- ❌ **Không tự xóa nội dung có nghĩa** — nghi ngờ → giữ lại + flag `Nghi ngờ`
- ❌ **Không thêm nội dung mới** — chỉ sắp xếp những gì đã có
- ❌ **Không vượt barrier `## PAGE X`** — mọi thao tác giới hạn trong 1 trang

---

## IV. ĐỊNH DẠNG MARKDOWN

### 1. Gộp Dòng Bị Ngắt (Line Merging)

> ⚠️ **Làm SAU khi đã xóa header** (Section III). Xóa header khi chúng còn đứng riêng, rồi mới gộp dòng.

OCR thường ngắt dòng theo layout PDF gốc, không theo câu → nhiều dòng bị cắt ngang giữa chừng. Cần gộp lại trước khi làm các bước khác.

> 🚨 **CHỈ GỘP TRONG CÙNG MỘT TRANG. TUYỆT ĐỐI KHÔNG GỘP QUA RANH GIỚI `## PAGE X`.**
>
> Dù câu bị cắt giữa chừng ở cuối trang → **giữ nguyên, không gộp với trang sau**. Mỗi trang là một đơn vị độc lập trong file gốc — gộp qua barrier là **thay đổi cấu trúc file**, không phải sửa lỗi OCR.
>
> **Ví dụ lỗi thường gặp:**
> ```
> ## PAGE 178                          ## PAGE 178
> ...အနက်အဓိပ္ပါယ်အား  ← câu cụt      ...အနက်အဓိပ္ပါယ်အားဖြင့်... ← SAI!
>                                         ↳ đã gộp từ trang 179 sang
> ## PAGE 179                          ## PAGE 179
> ဖြင့်လည်း ပြောပြသင့်၏...             ထို့ကြောင့်... ← mất dòng đầu
> ```

**Quy tắc:**
- Dòng **KHÔNG** kết thúc bằng `။` hoặc `၊` → câu chưa hoàn chỉnh → **nối với dòng sau** (thêm 1 dấu cách)
- Dòng **KẾT THÚC** bằng `။` hoặc `၊` → câu hoàn chỉnh → **giữ nguyên, xuống dòng**
- Dòng trống (chỉ có newline) → giữ nguyên (ngăn cách đoạn)
- Dòng bắt đầu bằng `## PAGE` → giữ nguyên (page marker — **barrier tuyệt đối**, dừng merge)

**Thứ tự thực hiện:** Xóa header (3 dòng đầu trang) → Gộp dòng → Sửa lỗi OCR → Xóa nhiễu → Định dạng

### 2. Cấu Trúc Sách

Mỗi dự án sách có cấu trúc riêng. Xác định và áp dụng nhất quán:

#### Heading Levels

| Cấp | Markdown | Dùng cho |
|-----|----------|---------|
| **Title** | `# Tên Sách` | Tên sách (chỉ 1 lần ở đầu file) |
| **Chương** | `## အခန်း — <tên>` hoặc `## <tên chương>` | Tên chương (heading thật, KHÔNG phải header) |
| **Mục con** | `### <tên mục>` | Phần phụ, mục lớn trong chương |
| **Tiểu mục** | `#### <tên tiểu mục>` | Tiêu đề phụ, chủ đề nhỏ |

**Quy tắc dùng `####`:**
- Tiêu đề phụ ngắn kết thúc bằng `။` (VD: `လှည်းဘီးလုပ်ပုံကို မေးခြင်း။`)
- Các phần như `ကြည့်ရှုရန်`, `မှတ်ချက်`, `သင်နည်း`
- Chỉ dùng khi heading là thật (không phải header) — xác nhận qua quy tắc "số trang làm chứng"

> ⚠️ **Phân biệt Header vs Heading:** `အခန်း (X)။` ở đầu trang + có số trang gần đó → **header (XÓA)**. `အခန်း (X)။` giữa nội dung, lần đầu giới thiệu chương, không có số trang gần → **heading (format `##`).** Section III (xóa header) LUÔN chạy trước Section IV (format).

#### Ví dụ từ các dự án

**Pali-Taykha (`သောဠသမကျမ်း`):**
```
# သောဠသမကျမ်း
## အခန်း — ပထမအခန်း
### ပါဠိစီရန်
### ကြည့်ရှုရန်
#### သင်နည်း
```

**Sadi (`ရုပ်ပုံ ရှင်ကျင့်ဝတ်`):**
```
# ရုပ်ပုံ ရှင်ကျင့်ဝတ်
## နိဒါန်း
## အခန်း (၁)။ ခေါင်းရိတ် ဆံချခဏ်း
### (က) ခေါင်းရိတ်နည်း
### (ခ) ဆံချနည်း
#### လှည်းဘီးလုပ်ပုံကို မေးခြင်း။
```

> 🛑 **LUÔN làm bước này trước khi format:** Quét toàn bộ PAGE, xóa tất cả header (theo Section III). **Chỉ format heading cho heading thật xuất hiện GIỮA nội dung**, không phải ở đầu trang cạnh số trang.

### 3. Pali & Dịch Nghĩa

Sách có cấu trúc: **câu Pali → dịch Myanmar → giải thích**

| Thành phần | Markdown | Ví dụ |
|-----------|----------|-------|
| Câu Pali ví dụ | `**câu_pali**` | `**၁။ ဧကံ သမယံ ဘဂဝါ...**` |
| Từ Pali đơn cần nhấn | `**pali**` | `**ဘိက္ခဝေ** = ရဟန်းတို့` |
| Dịch Myanmar | text thường (không bold) | `(က) အခါတစ်ပါးဝယ်...` |
| Giải thích ngữ pháp | text thường | `ပဝိသ-ဝင်။ ။ အဇ္ဈာဝသ-နေ။` |
| Gạch nối nghĩa | `=` | `သီလံ = သီလကို` |
| Chú thích trong ngoặc | `[chú thích]` | `[ ကိုရင်နှင့် သာမဏေ အတူတူပင် ]` |

**Quy tắc bold:**
- **Bold** câu Pali đầy đủ (có số thứ tự `၁။`, `၂။`...) — đây là ví dụ trong sách
- **Bold** từ Pali đơn khi đứng trước dấu `-` hoặc `=`  
- **KHÔNG bold** phần dịch Myanmar (dòng bắt đầu bằng `(က)`, `(ခ)`, v.v.)
- **KHÔNG bold** phần giải thích ngữ pháp, glossary
- **KHÔNG bold** toàn bộ đoạn văn — chỉ bọc từ khóa/câu Pali

> ⚠️ **Dấu `=` chỉ dùng trong cặp `<Pāli> = <nghĩa>`** — không thay thế `၊` gốc trong văn bản thường. Giữ nguyên dấu câu của bản gốc.

### 4. Phân Cách Nội Dung & Giải Thích (Horizontal Rule)

Mỗi trang sách thường có phần nội dung chính và phần giải thích/glossary riêng biệt. Thêm `---` để ngăn cách.

| Marker (đầu dòng) | Ý nghĩa | Mức độ |
|--------|--------|--------|
| `လင်္ကာ၏ အဓိပ္ပါယ်ပြ` (có/không dấu cách) | Giải nghĩa bài kệ | 🔴 **LUÔN thêm `---`** |
| `ပါဌ်အနက်` / `ပါဠိအနက်` | Giải nghĩa Pāli từng từ | 🔴 **LUÔN thêm `---`** |
| `ကြည့်ရှုရန်` / `ကြည့်ရှုရပ်` | Tham khảo thêm | 🟡 Nên thêm (nếu đứng riêng 1 dòng) |
| `ရှင်းလင်းချက်` | Giải thích | 🟡 Nên thêm |
| `မှတ်ချက်` | Ghi chú | 🟡 Nên thêm |

**Quy tắc:**
- Trước marker → thêm `---` trên 1 dòng riêng, có dòng trống trước và sau
- Trong cùng 1 PAGE có nhiều marker → chỉ thêm `---` ở lần đầu tiên
- 🔑 **Quy tắc đơn giản:** Hễ thấy `အဓိပ္ပါယ်ပြ` hoặc `ပါဌ်အနက်`/`ပါဠိအနက်` ở đầu dòng → thêm `---` ngay phía trước

### 5. Hình Ảnh

Một số sách có hình minh họa kèm chú thích:

- `[ရုပ်ပုံ]` hoặc text mô tả hình → giữ nguyên vị trí, bọc `[ ]`
- Text chú thích ảnh (ngắn, khác giọng văn) → để riêng dòng, thêm `**Chú thích ảnh:**`
- Không xóa mô tả hình — đó là một phần của bản gốc

### 6. Đoạn văn & Khoảng cách

- **1 dòng trống** giữa các đoạn khác ý/khác chủ đề
- **1 dòng trống** trước số thứ tự mới (`၁။`, `၂။`...)
- **1 dòng trống** trước tên chương/phần mới
- **1 dòng trống** trước `## PAGE X` marker tiếp theo
- Giữ nguyên `## PAGE X` markers — không xóa, không thay đổi

### Bảng tổng hợp quy tắc

| # | Quy tắc |
|---|---------|
| G1 | 1 dòng trống giữa các đoạn văn khác nhau |
| G2 | 1 dòng trống trước số thứ tự mới |
| G3 | `##` cho chương, `###` cho mục con, `####` cho tiểu mục |
| G4 | `---` (horizontal rule) ngăn cách nội dung chính và giải thích |
| G5 | `**câu Pali**` — bold câu ví dụ Pali có số thứ tự |
| G6 | `**từ Pali**` — bold từ Pali đơn trước dấu `-` hoặc `=` |
| G7 | `[chú thích]` cho ghi chú trong ngoặc dài |
| G8 | `=` cho gạch nối nghĩa (gloss Pāli–nghĩa), không thay `၊` gốc |
| G9 | KHÔNG bold phần dịch Myanmar `(က)`, `(ခ)`... |
| G10 | KHÔNG bold giải thích ngữ pháp/glossary |
| G11 | Header (có số trang gần) → **XÓA**, không format thành heading |
| G12 | KHÔNG gộp dòng/ di chuyển nội dung qua barrier `## PAGE X` |

---

## V. GHI CHÚ HIỆU ĐÍNH (EDITED NOTES)

**File:** `edited-notes/gemini-flash/{BATCH}-notes.md`

### Format bắt buộc

```markdown
# Edited Notes: {batch-name} (trang X-Y)

> Model: gemini-flash | Ngày: YYYY-MM-DD

## Thống kê
- Tổng số chỗ đã sửa: N
- Số lỗi bố cục đã sắp xếp: N
- Số chỗ nghi ngờ: N
- Pattern lỗi mới: N

## Danh sách chi tiết

| # | Trang | Lỗi (OCR) | Đã sửa thành | Loại |
|---|-------|-----------|-------------|------|
| 1 | X | `chữ_sai` | `chữ_đúng` | Pali |
| 2 | X | `chữ_sai` | `chữ_đúng` | Trợ từ |
| 3 | X | `chữ_sai` | `chữ_đúng` | Số đếm |
| 4 | X | (header `ရုပ်ပုံ`) | (đã xóa) | Header |
```

### Quy tắc

1. **Cột "Đã sửa thành" PHẢI chứa text CHÍNH XÁC như trong output** → script re-mark tự động tìm được
2. **Ghi TẤT CẢ lỗi làm thay đổi ký tự/nội dung** — mỗi lỗi 1 dòng, không gộp. **Không ghi** các thay đổi thuần layout (gộp dòng, thêm dòng trống, bold `**`).
3. **Phân loại đúng:** `Pali`, `Trợ từ`, `Số đếm`, `Sai nghĩa`, `Dấu phụ`, `Bố cục`, `Nhiễu`, `Header`, `Nghi ngờ`
4. **Không dùng `**` trong cột "Lỗi (OCR)"** (gây lỗi markdown table)
5. **Tiết kiệm token** — chỉ ghi lỗi thực sự (thay đổi ký tự). Formatting không cần notes.
6. **Loại `Header`:** dùng cho các dòng header/footer bị xóa. Cột "Đã sửa thành" để trống hoặc ghi `(đã xóa)`.

---

## VI. DANH SÁCH CẤM

### Cấm trong output file
- ❌ Dòng ghi chú model: `Model OCR:`, `Hậu xử lý bởi...`, `Model: Gemini Flash...`
- ❌ Thêm dấu câu không có trong bản gốc
- ❌ Xóa `## PAGE X` markers

### Cấm trong xử lý
- ❌ Tự ý mở rộng từ viết tắt
- ❌ "Cải thiện" văn phong
- ❌ Thay đổi trật tự từ cho "mượt" hơn
- ❌ Xóa nội dung có nghĩa khi xử lý bố cục (nghi ngờ → giữ + flag)
- ❌ Dùng `edit` tool để sửa — luôn dùng `write` toàn bộ
- ❌ **TỰ BỊA/THÊM NỘI DUNG** vào câu bị cắt ở cuối trang — chỉ merge, không sáng tác
- ❌ **GHÉP/DỜI NỘI DUNG QUA RANH GIỚI TRANG** — `## PAGE X` là barrier tuyệt đối
- ❌ **FORMAT HEADER THÀNH HEADING** — header (có số trang gần) phải xóa, không format
- ❌ **ĐỔI DẤU CÂU GỐC** — `၊` gốc không được đổi thành `=` hoặc `။`

### Cấm trong Phase 2
- ❌ Gọi tool tuần tự (1 tool rồi chờ kết quả rồi mới tool tiếp)

---

## VII. PHÂN BIỆT: SỬA vs CẢI THIỆN

| Loại | Ví dụ | Hành động |
|------|-------|----------|
| **Lỗi OCR** 🔧 | `ဧကစေ့` → `ဧကစ္စေ` | **SỬA** |
| **Lỗi OCR** 🔧 | `ထွတ်မြောက်` → `ထွက်မြောက်` | **SỬA** |
| **Lỗi bố cục** 🔧 | Footnote chui vào body | **SẮP XẾP LẠI** |
| **Lỗi bố cục** 🔧 | Text cột A → B bị trộn | **SẮP XẾP LẠI** |
| **Nhiễu OCR** 🗑️ | `!! -`, `က`, `3`, `KELI KITU...` | **XÓA** |
| **Nhiễu OCR** 🗑️ | Chữ Latin rác cuối file | **XÓA** |
| **Header** 🗑️ | Tên chương lặp + số trang gần | **XÓA** (không format) |
| **Viết tắt** 📝 | `ရဟန်း` (thay vì `ရဟန်းတို့`) | **GIỮ NGUYÊN** |
| **Viết tắt** 📝 | `ဥပမာ` (thay vì `ဥပမာအားဖြင့်`) | **GIỮ NGUYÊN** |
| **Cải thiện** ❌ | Thêm `၊` / `။` không có trong gốc | **KHÔNG LÀM** |
| **Cải thiện** ❌ | Đổi trật tự từ cho "mượt" | **KHÔNG LÀM** |
| **Cải thiện** ❌ | Format header thành `## heading` | **KHÔNG LÀM** |
| **Cải thiện** ❌ | Đổi `၊` gốc → `=` | **KHÔNG LÀM** |

---

---

> ⛔ **NHẮC LẠI — 3 RED LINES:**
> 1. Không gộp qua barrier `## PAGE X`
> 2. Không bịa chữ — câu cụt thì giữ nguyên
> 3. Thà thiếu còn hơn sai

## Tài Liệu Liên Quan

- [[01A-Dieu-Phoi-Editor-OCR]] — Architect: thiết lập cron + prompt editor
- [[OCR-Checklist]] — 90+ pattern lỗi OCR Myanmar (nguồn cho SQLite-vec DB)
- [[../huong-dan/Xu-Ly-Leaks]] — Xử lý header/footer leaks
- [[04-OCR-Pipeline]] — Quy trình OCR tổng hợp
