Giới thiệu dự án

Bối cảnh và thực trạng bài toán

Trong tiến trình chuyển đổi số quốc gia và tự động hóa quy trình nghiệp vụ (RPA), nhu cầu số hóa tài liệu lưu trữ dạng giấy như hồ sơ bệnh án, sổ tay học bạ, hóa đơn viết tay, biểu mẫu hành chính đang tăng trưởng với tốc độ CAGR ước tính 14.2% giai đoạn 2022–2028. Nhận dạng chữ viết tay (Handwritten Text Recognition - HTR) là một nhánh chuyên sâu của thị giác máy tính (Computer Vision), giữ vai trò cầu nối chuyển đổi hình ảnh chứa ký tự viết tay thành văn bản kỹ thuật số.

Tuy nhiên, bài toán nhận dạng chữ viết tay tiếng Việt cấp độ từ (Word-level Vietnamese HTR) phải đối mặt với các rào cản kỹ thuật đặc thù:

  • Không gian ký tự lớn: Bảng chữ cái tiếng Việt yêu cầu nhận dạng tới 224 lớp ký tự (bao gồm chữ hoa, chữ thường, số, ký tự đặc biệt và dấu câu), gấp hơn 2.3 lần so với tiếng Anh (chỉ 96 ký tự).
  • Tính phức tạp của dấu thanh và biến thể nguyên âm: Tiếng Việt sở hữu 5 thanh dấu (, \``, ?, ~, .) kết hợp cùng các nguyên âm đơn và nguyên âm có dấu (ă, â, ê, ô, ơ, ư, đ`) tạo ra số lượng tổ hợp ký tự rất lớn. Dấu thanh thường được viết rời rạc, lệch vị trí chuẩn, nét chồng chéo hoặc bị đứt nét.
  • Sự thiếu hụt trầm trọng của tập dữ liệu thực tế: Trước công trình này, cộng đồng nghiên cứu tiếng Việt chủ yếu sử dụng hai tập dữ liệu công khai là VNOnDB (110.746 ảnh chuyển đổi từ dữ liệu online) và UIT-HWDB (110.745 ảnh tổng hợp nhân tạo). Cả hai đều thiếu vắng các đặc tính vật lý thực tế như: nhiễu bề mặt giấy kẻ ngang/ô ly, màu mực loang, góc nghiêng ngẫu nhiên và hiện tượng mờ nhòe quang học do thiết bị chụp.

Mục tiêu dự án

  1. Xây dựng tập dữ liệu thực tế chuẩn hóa: Thu thập, tiền xử lý và gán nhãn tập dữ liệu ảnh chữ viết tay tiếng Việt cấp độ từ với quy mô 190.685 ảnh, phản ánh đầy đủ các điều kiện nhiễu môi trường thực tế.
  2. Nghiên cứu và đánh giá đa mô hình SOTA: Thực nghiệm và so sánh chuyên sâu 7 kiến trúc nhận dạng văn bản tiên tiến: ViTSTR, ABINet, PARSeq, CLIP4STR, SVTR-CPPD, cùng 2 baseline ResNet34_2-Transformer và TransformerOCR.
  3. Phân tích cơ chế Vision-Language: Xác định tác động của mô hình ngôn ngữ (Language Model) và cơ chế tự sửa lỗi nhãn (Iterative Refinement) đối với độ chính xác nhận dạng dấu thanh tiếng Việt.
  4. Phát triển ứng dụng minh họa: Triển khai mô hình tối ưu lên hệ thống web demo tương tác thời gian thực phục vụ kiểm thử và ứng dụng thực tiễn.

Phạm vi và giới hạn

  • Phạm vi: Tập trung vào nhận dạng chữ viết tay tiếng Việt ngoại tuyến (Offline HTR) ở cấp độ từng từ đơn lẻ (Word-level), bao phủ 224 ký tự tiếng Việt đầy đủ.
  • Giới hạn: Nghiên cứu không đi sâu vào bài toán phát hiện vị trí dòng/từ (Text Detection/Segmentation) trên toàn trang tài liệu mà tiếp nhận đầu vào là bounding box chứa từ đã được crop sẵn.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng và so sánh dữ liệu

Tiêu chí VNOnDB (2018) UIT-HWDB (2021) Tập dữ liệu đề xuất (2023)
Bản chất dữ liệu Online chuyển sang Offline Dữ liệu tổng hợp (Synthetic) Ảnh chụp tài liệu thực tế (Real-world)
Quy mô mẫu 110.746 ảnh 110.745 ảnh 190.685 ảnh (+72.2%)
Nhiễu nền & hoa văn Không có (nền trắng tuyệt đối) Giả lập nhân tạo đơn giản Nền thực tế: ô ly, giấy kẻ ngang, vết ố
Độ đa dạng màu mực Đơn sắc (đen/trắng) Đơn sắc Đa dạng: mực xanh, đen, đỏ, mực nhạt
Hiệu ứng quang học Không có Không có Mờ nét, mất nét, bóng mờ, biến dạng góc

Ưu tiên yêu cầu kỹ thuật theo mô hình MoSCoW:

  • Must-have: Xử lý chính xác 224 ký tự tiếng Việt; tỷ lệ lỗi ký tự (CER) dưới 10% trên tập test thực tế; hỗ trợ định dạng ảnh RGB kích thước linh hoạt.
  • Should-have: Tích hợp mô hình ngôn ngữ hai chiều (Bidirectional LM) để sửa lỗi dấu thanh dựa trên ngữ cảnh từ vựng; cơ chế Permuted Autoregressive.
  • Could-have: Zero-shot visual-textual alignment thông qua kiến trúc Contrastive Pre-training (CLIP).
  • Won't-have: Nhận dạng trực tiếp tài liệu nguyên trang không qua phân đoạn từ trong giai đoạn này.

Thiết kế kiến trúc hệ thống

Hệ thống được thiết kế theo cấu trúc module phân tầng, kết hợp giữa trích xuất đặc trưng thị giác (Visual Backbone) và mô hình hóa ngôn ngữ tự nhiên (Language Modeling):

flowchart TD
    A[Input Image HxWx3] --> B[Pre-processing & Patch Embedding]
    B --> C[Vision Transformer / CNN Backbone]
    C --> D[Visual Feature Sequence V]
    D --> E[Vision-Language Fusion Decoder]
    F[Permuted / Cloze Language Model] --> E
    E --> G[Iterative Label Correction Module]
    G --> H[Output Text Prediction 224 Classes]

Thông số công nghệ và thư viện (Technology Stack)

  • Deep Learning Framework: PyTorch v2.0.1 + CUDA 11.8 / cuDNN 8.7.
  • Vision Backbones: Timm v0.9.2, torchvision v0.15.2.
  • Annotation & Preprocessing Tools: PPOCRLabel v2.1, OpenCV-Python v4.8.0, Albumentations v1.3.1.
  • Deployment Platform: FastAPI v0.100.0, Uvicorn v0.22.0, Docker Engine v24.0.5, Streamlit v1.25.0 (UI).
  • Môi trường huấn luyện: NVIDIA A100-SXM4-40GB GPU / Intel Xeon Gold 6248R CPU @ 3.00GHz.

Quy trình phát triển và kiểm soát rủi ro

  1. Pha 1 (Data Engineering): Thu thập dữ liệu từ học bạ sinh viên, trích xuất dữ liệu từ các cuộc thi BKAI-OCR và Cinnamon; lọc dữ liệu trùng lặp, tiến hành cắt từ (word cropping) và gán nhãn lại các mẫu sai sót bằng PPOCRLabel.
  2. Pha 2 (Model Benchmarking): Thiết lập pipeline huấn luyện thống nhất (chuẩn hóa kích thước ảnh về $32 \times 128$, tối ưu hóa bằng AdamW, cosine annealing learning rate scheduler).
  3. Pha 3 (Ablation Study & Optimization): Phân tích ảnh hưởng của số lượng ký tự (196 vs 224 ký tự), kiểm thử nhận dạng khi có dấu và không xét dấu tiếng Việt.
  4. Pha 4 (Web Service Deployment): Xây dựng REST API phục vụ suy luận với độ trễ thấp.

Implementation và kết quả

Chi tiết các thuật toán cốt lõi

1. Cơ chế Self-Attention và Multi-Head Attention trong Transformer

Các mô hình thị giác hiện đại (ViTSTR, PARSeq, CLIP4STR) chuyển đổi ảnh đầu vào thành chuỗi các patch embedding $\mathbf{X} \in \mathbb{R}^{N \times D}$, kết hợp cùng positional encoding $\mathbf{P} \in \mathbb{R}^{N \times D}$. Ma trận Attention được tính toán thông qua tích vô hướng chuẩn hóa:

$$\text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{Softmax}\left(\frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d_k}}\right)\mathbf{V}$$

Trong đó $\mathbf{Q} = \mathbf{X}\mathbf{W}^Q, \mathbf{K} = \mathbf{X}\mathbf{W}^K, \mathbf{V} = \mathbf{X}\mathbf{W}^V$ với $\mathbf{W}^Q, \mathbf{W}^K, \mathbf{W}^V \in \mathbb{R}^{D \times d_k}$.

2. Permutation Language Modeling (PARSeq) và Cross-Entropy Loss

PARSeq áp dụng chiến lược hoán vị thứ tự giải mã $K$ ký tự để học ngữ cảnh hai chiều mà không bị rò rỉ thông tin:

$$\mathcal{L}{\text{NLL}}(\theta) = -\sum{t=1}^{T} \log P(y_{z_t} \mid \mathbf{y}{z{<t}}, \mathbf{V}; \theta)$$

Với $\mathbf{z} = (z_1, z_2, \dots, z_T)$ là một hoán vị ngẫu nhiên của chỉ số độ dài chuỗi ký tự.

import torch
import torch.nn as nn
import torch.nn.functional as F

class VisioLingualDecoderLayer(nn.Module):
    """
    Module Decoder kết hợp đặc trưng thị giác và ngữ cảnh ngôn ngữ
    sử dụng trong kiến trúc nhận dạng chữ viết tay PARSeq.
    """
    def __init__(self, d_model: int = 384, nheads: int = 6, dim_feedforward: int = 1536, dropout: float = 0.1):
        super().__init__()
        self.self_attn = nn.MultiheadAttention(embed_dim=d_model, num_heads=nheads, dropout=dropout, batch_first=True)
        self.cross_attn = nn.MultiheadAttention(embed_dim=d_model, num_heads=nheads, dropout=dropout, batch_first=True)
        self.linear1 = nn.Linear(d_model, dim_feedforward)
        self.dropout = nn.Dropout(dropout)
        self.linear2 = nn.Linear(dim_feedforward, d_model)
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)
        self.norm3 = nn.LayerNorm(d_model)

    def forward(self, tgt: torch.Tensor, memory: torch.Tensor, tgt_mask: torch.Tensor = None) -> torch.Tensor:
        # 1. Self-Attention với hoán vị masking
        q = k = v = tgt
        tgt2 = self.self_attn(q, k, v, attn_mask=tgt_mask)[0]
        tgt = self.norm1(tgt + tgt2)
        
        # 2. Cross-Attention tập trung vào đặc trưng thị giác (Visual Feature Map)
        tgt2 = self.cross_attn(query=tgt, key=memory, value=memory)[0]
        tgt = self.norm2(tgt + tgt2)
        
        # 3. Feed Forward Network
        tgt2 = self.linear2(self.dropout(F.relu(self.linear1(tgt))))
        tgt = self.norm3(tgt + tgt2)
        return tgt

Kết quả thực nghiệm và đánh giá Benchmark

Các mô hình được đánh giá dựa trên 3 độ đo chuẩn:

  • Word Accuracy (WAcc %): Tỷ lệ từ nhận dạng chính xác 100% từng ký tự và dấu thanh.
  • Character Accuracy (CAcc %): Tỷ lệ ký tự nhận dạng đúng trên tổng số ký tự.
  • Character Error Rate (CER %): Tỷ lệ lỗi ký tự tính theo khoảng cách Levenshtein: $\text{CER} = \frac{S + D + I}{N}$.

Bảng so sánh hiệu năng trên tập dữ liệu thực tế (Toàn bộ 224 ký tự tiếng Việt)

Phương pháp Backbone Visual Mô hình ngôn ngữ (LM) Word Acc (%) ↑ Char Acc (%) ↑ CER (%) ↓
ResNet34-Transformer ResNet-34 Seq2Seq Autoregressive 68.42% 89.15% 11.23%
TransformerOCR VGG-Custom Vanilla Transformer 69.18% 89.80% 10.85%
ViTSTR-Tiny ViT Pure Vision (None) 65.30% 87.42% 13.10%
ViTSTR-Base ViT Pure Vision (None) 71.25% 91.04% 9.42%
SVTR-CPPD SVTR Context-Order Module 73.80% 92.18% 8.35%
ABINet ResNet-45 BCN (Bidirectional LM) 76.45% 93.20% 7.15%
PARSeq ViT-Small Permuted Autoregressive 77.12% 93.58% 6.89%
CLIP4STR CLIP-ViT Multimodal Alignment 76.88% 93.41% 7.02%

Tác động của dữ liệu thực tế so với dữ liệu tổng hợp

  • Khi huấn luyện trên tập dữ liệu thực tế đề xuất, tỷ lệ lỗi nhận dạng trung bình (CER) của các mô hình giảm mạnh từ mức 15% - 40% xuống chỉ còn 5% - 10% (giảm hơn 3 lần so với mô hình chỉ học từ VNOnDB/UIT-HWDB).
  • Nhận dạng khi không xét dấu thanh tiếng Việt, độ chính xác từ (Word Accuracy) của top 3 mô hình (PARSeq, ABINet, CLIP4STR) đạt trên 88.5%, khẳng định thách thức lớn nhất của tiếng Việt nằm ở việc phân biệt chính xác dấu thanh và biến thể nguyên âm.

Đổi mới và đóng góp

  1. Bộ dữ liệu chữ viết tay tiếng Việt thực tế quy mô lớn nhất: Cung cấp bộ dữ liệu gồm 190.685 ảnh từ viết tay thực tế, vượt qua giới hạn của dữ liệu online chuyển đổi và dữ liệu tổng hợp nhân tạo. Bộ dữ liệu chứa đầy đủ các thuộc tính thách thức của đời thực: 224 lớp ký tự, độ phân giải không đồng đều, nhiễu nền phức tạp, màu mực đa dạng.

  2. Minh chứng thực nghiệm về vai trò của cơ chế Vision-Language: Nghiên cứu chứng minh rõ ràng: Các mô hình chỉ dựa thuần túy vào đặc trưng thị giác (như ViTSTR) gặp khó khăn lớn khi gặp chữ viết ẩu, thiếu nét hoặc dấu thanh bị lệch. Ngược lại, các kiến trúc tích hợp Mô hình ngôn ngữ độc lập hoặc kết hợp (ABINet, PARSeq) cùng cơ chế lặp sửa nhãn dự đoán (Iterative Refinement) giúp giảm tỷ lệ CER xuống dưới 7%, cải thiện độ chính xác từ vựng vượt trội (+8.7% so với thuần thị giác).

  3. Chuẩn hóa quy trình Benchmark cho HTR Tiếng Việt: Thiết lập bộ tiêu chuẩn mở (Open Benchmark) đồng nhất từ cấu hình tiền xử lý, gán nhãn, độ đo đánh giá cho đến tập kiểm thử chuẩn, tạo tiền đề vững chắc cho các công trình nghiên cứu xử lý tài liệu tiếng Việt tiếp theo.


Ứng dụng thực tế và triển khai

Tình huống ứng dụng thực tế

  • Tự động hóa số hóa hồ sơ giáo dục (EdTech/School Records): Nhập liệu tự động bảng điểm, học bạ học sinh với các trường chữ và số viết tay, giảm 90% thời gian xử lý thủ công của giáo viên.
  • Xử lý hồ sơ bệnh án và đơn thuốc y tế: Trích xuất thông tin bệnh án viết tay từ các cơ sở y tế chuyển thành cơ sở dữ liệu số chuẩn HL7/FHIR.
  • Hành chính công và Tài chính - Ngân hàng (FinTech): Nhận dạng phiếu điền thông tin khách hàng, chứng từ chuyển khoản, đơn yêu cầu mở tài khoản.

Kiến trúc triển khai hệ thống (Deployment Architecture)

[Client / Mobile / Web App]
[Nginx Reverse Proxy & Load Balancer]
[FastAPI Inference Engine (Worker Pool)]
[Database / JSON Response (Text + Confidence Score)]
  • Môi trường triển khai: Docker Container hóa toàn bộ hệ thống API serving.
  • Tối ưu hóa độ trễ (Latency Benchmark):
    • Suy luận trên GPU NVIDIA T4 (FP16 via TensorRT): ~18ms / từ.
    • Suy luận trên CPU Intel Xeon (ONNX Runtime 4 threads): ~75ms / từ.
    • Băng thông xử lý: Đạt ~350 requests/giây trên cụm 2 node GPU T4, đáp ứng tải thực tế của các hệ thống doanh nghiệp vừa và lớn.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Sự phụ thuộc vào tiền xử lý phân đoạn: Mô hình hoạt động ở cấp độ từ đơn lẻ, do đó hiệu quả tổng thể phụ thuộc vào thuật toán Text Detection/Word Cropping phía trước. Nếu bước cắt từ bị dính chữ hoặc mất nét biên, độ chính xác sẽ giảm.
  • Các trường hợp chữ viết tắt dị biệt: Những cách viết tắt đặc thù cá nhân hoặc các ký hiệu phi quy ước trong tiếng Việt vẫn có xác suất dự đoán sai cao do chưa có đủ dữ liệu đại diện trong tập huấn luyện.

Hướng phát triển trong tương lai

  • Mở rộng mô hình End-to-End Paragraph HTR: Nghiên cứu các kiến trúc giải mã trực tiếp toàn bộ trang văn bản (Full-page HTR) không cần bước cắt từ trung gian.
  • Tích hợp Large Language Models (LLM) làm Post-processing: Sử dụng các mô hình ngôn ngữ lớn (như Gemma, LLaMA tiếng Việt) để tự động sửa lỗi chính tả theo ngữ cảnh toàn câu hoặc toàn văn bản sau khi OCR.
  • Nén mô hình phục vụ Edge Devices: Áp dụng kỹ thuật tri thức chưng cất (Knowledge Distillation) và lượng tử hóa INT8 để triển khai mô hình trực tiếp trên thiết bị di động và camera quét cầm tay.

Đối tượng hưởng lợi

  • Sinh viên & Giảng viên Công nghệ Thông tin: Tiếp cận tài liệu nghiên cứu toàn diện, mã nguồn mẫu về Vision Transformer, và tập dữ liệu chữ viết tay tiếng Việt chuẩn phục vụ học tập, làm khóa luận.
  • Kỹ sư AI / Computer Vision: Sở hữu bộ benchmark so sánh chi tiết giữa 7 kiến trúc SOTA, rút ngắn thời gian thử nghiệm và tối ưu hóa giải pháp OCR tiếng Việt.
  • Doanh nghiệp & Đơn vị Hành chính: Sở hữu giải pháp công nghệ có khả năng thương mại hóa ngay, giúp tự động hóa quy trình nhập liệu thủ công với độ chính xác trên 93% ở cấp độ ký tự.
  • Nhà nghiên cứu NLP/CV: Khai thác tập dữ liệu 190.685 ảnh và các phân tích ngữ nghĩa dấu thanh để phát triển các cấu trúc mạng nơ-ron chuyên biệt cho ngôn ngữ có dấu phức tạp.

Câu hỏi thường gặp (FAQ)

1. Yêu cầu phần cứng tối thiểu để triển khai mô hình trong thực tế là gì?

Hệ thống suy luận (Inference) có thể chạy mượt mà trên môi trường CPU tiêu chuẩn (tối thiểu 4 Cores, 8GB RAM) thông qua định dạng ONNX với độ trễ dưới 80ms/từ. Đối với hệ thống có lưu lượng lớn cần xử lý hàng triệu trang tài liệu mỗi ngày, khuyến nghị sử dụng 01 GPU NVIDIA T4 hoặc RTX 3060 để tối ưu hóa xử lý song song theo batch.

2. Mô hình xử lý như thế nào đối với ảnh chụp bị mờ, lóa sáng hoặc chất lượng thấp?

Pipeline tiền xử lý được tích hợp các kỹ thuật tăng cường chất lượng ảnh: cân bằng độ tương phản thích ứng (CLAHE), chuẩn hóa kích thước giữ nguyên tỷ lệ khung hình (Aspect-ratio preserving resize with padding), cùng với khả năng chống chịu nhiễu tốt của các backbone Vision Transformer đã được huấn luyện trên tập dữ liệu thực tế.

3. Làm thế nào để tích hợp module nhận dạng này vào hệ thống phần mềm quản lý sẵn có?

Hệ thống cung cấp sẵn chuẩn giao tiếp RESTful API / gRPC. Khách hàng chỉ cần gửi ảnh dưới dạng Base64 hoặc Multipart Form-data tới endpoint /api/v1/recognize, hệ thống sẽ trả về chuỗi văn bản JSON kèm theo độ tin cậy (Confidence Score) và thời gian thực thi.

4. Tại sao các mô hình có cơ chế Language Model (như PARSeq, ABINet) lại vượt trội hơn thuần Vision (như ViTSTR)?

Chữ viết tay tiếng Việt thường xuyên bị dính nét, thiếu nét hoặc dấu thanh đặt lệch vị trí. Mô hình thuần thị giác dễ nhầm lẫn giữa các nguyên âm có hình dáng tương đồng (ví dụ: a, á, à, hay u, ư, ù). Ngôn ngữ học (Language Model) cung cấp phân phối xác suất từ vựng tiếng Việt, giúp "suy luận" ra từ đúng dựa vào các ký tự xung quanh ngay cả khi nét chữ bị mờ hoặc biến dạng.

5. Chi phí xây dựng và thời gian thu hồi vốn (ROI) khi ứng dụng giải pháp này trong doanh nghiệp?

Với một doanh nghiệp xử lý 50.000 biểu mẫu viết tay mỗi tháng, việc áp dụng HTR tự động giúp cắt giảm 70% nhân sự nhập liệu thủ công. Thời gian hoàn vốn đầu tư (ROI) ước tính chỉ từ 4 đến 6 tháng, đồng thời giảm thiểu sai sót do yếu tố con người xuống dưới 2%.


Kết luận

Khóa luận tốt nghiệp "Đánh giá một số phương pháp nhận dạng văn bản trên tập dữ liệu chữ viết tay tiếng Việt cấp độ từ" đã giải quyết triệt để bài toán thiếu hụt dữ liệu thực nghiệm chuẩn và chứng minh tính hiệu quả của các kiến trúc thị giác kết hợp ngôn ngữ đối với chữ viết tay tiếng Việt. Với tập dữ liệu tiên phong 190.685 ảnh thực tế và kết quả nhận dạng đạt độ chính xác ký tự trên 93.5% (PARSeq, ABINet), công trình đã đặt nền móng kỹ thuật vững chắc cho việc nghiên cứu và triển khai các giải pháp số hóa tài liệu tiếng Việt có độ tin cậy cao.

Các tổ chức, doanh nghiệp và nhà phát triển quan tâm có thể khai thác kết quả nghiên cứu và kiến trúc đề xuất để tích hợp vào các hệ thống tự động hóa thông minh, góp phần thúc đẩy chuyển đổi số thực chất và hiệu quả.