Giới thiệu dự án

Bối cảnh và thực trạng ngành

Ngành công nghiệp truyện tranh Nhật Bản (Manga) đã trở thành một hiện tượng văn hóa toàn cầu với quy mô thị trường kỹ thuật số đạt hàng tỷ USD mỗi năm. Cùng với sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0, xu hướng đọc truyện tranh của độc giả toàn cầu đã dịch chuyển mạnh mẽ từ các ấn bản giấy truyền thống sang nền tảng số hóa (Digital Manga/Webtoon). Hàng trăm tập truyện tranh được phát hành định kỳ hàng tuần tại Nhật Bản cần được dịch thuật sang nhiều ngôn ngữ như tiếng Anh, tiếng Việt để phục vụ độc giả quốc tế.

Tuy nhiên, quy trình bản địa hóa (Scanlation/Localization) hiện nay vẫn phụ thuộc gần như 100% vào nhân lực thủ công: biên dịch viên phải tự đọc từng trang ảnh, gõ lại văn bản tiếng Nhật, dịch nghĩa, xóa chữ gốc (cleaning/redraw) và chèn chữ dịch (typesetting). Điều này tạo ra điểm nghẽn lớn về thời gian và chi phí phát hành.

Vấn đề nghiên cứu (Problem Statement)

Việc tự động hóa trích xuất và nhận dạng văn bản tiếng Nhật từ trang truyện tranh đối mặt với các thách thức kỹ thuật phức tạp:

  • Đa dạng bố cục và hình thái bóng thoại: Khung thoại có vô số kích thước, hình dạng (tròn, oval, gai nhọn, viền đứt đoạn) hoặc văn bản nằm tự do đè trực tiếp lên ngoại cảnh và nhân vật.
  • Đặc thù ngôn ngữ và kiểu chữ (Typography): Tiếng Nhật trong Manga chủ yếu được trình bày theo chiều dọc (tatechūyoko), sử dụng nhiều phông chữ cách điệu nghệ thuật, chữ viết tay biến dạng hoặc từ tượng thanh (onomatopoeia).
  • Hiện tượng nhiễu đồ họa và chữ phụ chú (Furigana): Các ký tự nhỏ (ruby characters) đặt cạnh chữ Hán (Kanji) để giải thích cách đọc thường bị hệ thống nhận dạng nhầm lẫn thành ký tự chính, làm sai lệch cấu trúc câu. Ngoài ra, nền ảnh chứa nhiều họa tiết lưới (screentone/halftone), hoa văn và độ tương phản phức tạp (chữ trắng trên nền đen).
[Trang Manga Gốc] ➔ [Phát hiện Bounding Box (YOLOv3)] ➔ [Phân đoạn & Xóa nền (U-Net)] ➔ [Nhận dạng Ký tự (Tesseract)] ➔ [Dịch tự động (Google API)] ➔ [Ảnh đã dịch]

Mục tiêu dự án

  1. Nghiên cứu, đánh giá các mô hình học sâu hiện đại trong bài toán phát hiện vật thể để áp dụng vào phát hiện vùng chứa văn bản trong truyện tranh.
  2. Xây dựng và tinh chỉnh mô hình YOLOv3 trên tập dữ liệu chuẩn Manga109, tối ưu hóa khả năng định vị văn bản đa kích thước.
  3. Phát triển quy trình tiền xử lý phân đoạn ngữ nghĩa bằng U-Net nhằm loại bỏ triệt để nền phức tạp bên trong vùng văn bản.
  4. Tích hợp công cụ Tesseract OCR (jpn_vert) để nhận dạng văn bản tiếng Nhật dạng dọc và kết nối API dịch thuật tự động, tạo nên đường ống (pipeline) hoàn chỉnh.

Giải pháp đề xuất và phạm vi

  • Giải pháp: Sử dụng mạng tích chập sâu YOLOv3 với khung xương Darknet-53 và mạng kim tự tháp đặc trưng (FPN) để phát hiện vùng chứa văn bản; kết hợp mô hình U-Net để phân tách ký tự khỏi nền đồ họa, tạo đầu vào nhị phân tối ưu cho engine Tesseract 4.x.
  • Kết quả kỳ vọng: Độ chính xác phát hiện (Precision) đạt trên 90%, độ phủ (Recall) trên 80%, cải thiện độ chính xác nhận dạng OCR lên hơn 20 lần so với xử lý ảnh thô.
  • Phạm vi nghiên cứu: Giới hạn trên tập dữ liệu chuẩn Manga109 (109 tập truyện tranh đen trắng của các tác giả chuyên nghiệp Nhật Bản).

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

Phân tích hiện trạng

Trước đây, các nghiên cứu xử lý ảnh truyện tranh chủ yếu sử dụng các đặc trưng cấp thấp hoặc các mô hình học sâu đời đầu:

Phương pháp Tác giả & Năm Ưu điểm Nhược điểm
Dựa trên vùng & kết cấu ảnh Kohei Arai & Herman Tolle (2011) Thuật toán đơn giản, tốc độ xử lý nhanh dựa trên độ sáng/màu sắc. Tỷ lệ dương tính giả cao; chỉ áp dụng được với bóng thoại nền trắng hoàn chỉnh.
RPN + CNN Classification Wei-ta Chu & Chih-chi Yu (2017) Kết hợp mạng đề xuất vùng và phân loại sâu. Độ chính xác chỉ đạt mức 62% theo chuẩn đánh giá ICDAR 2013.
VGG-16 + U-Net David Dubray & Jochen Laubrock (2019) Hoạt động tốt trên tập dữ liệu truyện tranh phương Tây (GNC). Khả năng tổng quát hóa kém trên Manga Nhật Bản do đặc thù phân khung phức tạp.
SSD300-fork (SOTA 2018) Ogawa et al. (2018) Giải quyết hiện tượng chồng chéo nhãn thông qua phân nhánh anchor box. Tốc độ hạn chế, độ chính xác dừng ở 84.1%, gặp khó khăn với văn bản siêu nhỏ.

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must-Have: Phát hiện chính xác tọa độ bounding box của văn bản; tách nền ảnh bằng U-Net; xuất ra văn bản tiếng Nhật chuẩn UTF-8.
  • Should-Have: Nhận diện đúng chữ tiếng Nhật xếp theo chiều dọc; tích hợp API dịch thuật tự động; xử lý được cả văn bản không nằm trong bóng thoại.
  • Could-Have: Tự động phát hiện và loại trừ chú thích Furigana nhỏ để tránh rác ký tự; hỗ trợ inpainting xóa chữ gốc trên ảnh.
  • Won't-Have (giai đoạn này): Nhận diện trực tiếp chữ viết tay nghệ thuật dạng hiệu ứng âm thanh (SFX/Onomatopoeia) phức tạp nằm ngoài khung hình.

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

+-----------------------------------------------------------------------------------+
|                              KIẾN TRÚC ĐƯỜNG ỐNG HỆ THỐNG                        |
+-----------------------------------------------------------------------------------+
|  [Đầu vào: Trang truyện Manga109 (PNG/JPG)]                                       |
+-----------------------------------------------------------------------------------+

Thông số kỹ thuật (Technology Stack)

  • Ngôn ngữ: Python 3.7+
  • Deep Learning Frameworks: TensorFlow 1.15.0 / Keras 2.2.4
  • Computer Vision: OpenCV 4.2.0, Pillow 7.0.0
  • OCR Engine: Tesseract OCR v4.1.0 (tessdata/jpn_vert.traineddata)
  • Phần cứng huấn luyện: GPU NVIDIA GeForce GTX 1080 Ti / Tesla P100 (16GB VRAM)

Implementation và kết quả

Quy trình phát triển và chi tiết thuật toán

1. Mô hình YOLOv3 cho phát hiện vùng văn bản

Mạng sử dụng khung xương Darknet-53 gồm 53 lớp tích chập không sử dụng MaxPooling mà sử dụng các lớp Convolutional với stride = 2 để giảm chiều dữ liệu (downsampling), giúp bảo toàn tối đa các đặc trưng biên của văn bản nhỏ.

Mô hình dự đoán vùng bao dựa trên 3 thang đo (scales) khác nhau tương ứng với kích thước bản đồ đặc trưng:

  • $13 \times 13$ (độ trượt 32): phát hiện bóng thoại kích thước lớn.
  • $26 \times 26$ (độ trượt 16): phát hiện vùng văn bản kích thước trung bình.
  • $52 \times 52$ (độ trượt 8): kết hợp tính năng chi tiết (Fine-grained feature) và kỹ thuật Reorg để nhận diện các cụm chữ nhỏ và chú thích rời rạc.

Thay vì dùng hàm Softmax (vốn giả định các lớp loại trừ lẫn nhau), mô hình áp dụng các bộ phân loại Logistic Classifiers độc lập kết hợp hàm mất mát Binary Cross-Entropy, phù hợp cho bài toán văn bản có thể xuất hiện đồng thời trong hoặc ngoài khung thoại:

$$\text{Loss}{\text{conf}} = - \sum{i} \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right]$$

import cv2
import numpy as np
import pytesseract

def preprocess_for_tesseract(cropped_image, unet_model):
    """
    Tiền xử lý ảnh vùng chứa văn bản bằng U-Net trước khi đưa vào Tesseract OCR.
    """
    # Chuẩn hóa kích thước đầu vào cho U-Net
    img_resized = cv2.resize(cropped_image, (256, 256))
    img_normalized = img_resized / 255.0
    img_input = np.expand_dims(img_normalized, axis=0)
    
    # Dự đoán mặt nạ phân đoạn ký tự (Character Mask)
    pred_mask = unet_model.predict(img_input)[0]
    pred_mask = (pred_mask > 0.5).astype(np.uint8) * 255
    pred_mask = cv2.resize(pred_mask, (cropped_image.shape[1], cropped_image.shape[0]))
    
    # Áp dụng trừ nền: Giữ nguyên nét chữ đen, thay toàn bộ nền bằng màu trắng
    cleaned_image = np.full_like(cropped_image, 255)
    cleaned_image[pred_mask == 255] = cropped_image[pred_mask == 255]
    
    return cleaned_image

def recognize_manga_text(cleaned_image):
    """
    Nhận dạng ký tự tiếng Nhật xếp dọc bằng Tesseract jpn_vert.
    """
    custom_config = r'--oem 1 --psm 5 -l jpn_vert'
    text = pytesseract.image_to_string(cleaned_image, config=custom_config)
    return text.strip()

Thiết lập tập dữ liệu và thực nghiệm

Tập dữ liệu Manga109 được chia theo tỷ lệ khoa học nhằm đảm bảo tính khách quan:

  • Tập huấn luyện (Training Set): 90 tập truyện (~8,400 trang).
  • Tập kiểm chuẩn (Validation Set): 9 tập truyện (~840 trang) dùng để tinh chỉnh siêu tham số và ngưỡng anchor box.
  • Tập thử nghiệm (Test Set): 10 tập truyện độc lập hoàn toàn (~890 trang với tổng cộng 12,542 vùng chứa văn bản thực tế).

Kết quả đo lường và đánh giá định lượng

Độ đo đánh giá phát hiện vật thể tuân theo chuẩn Intersection over Union (IoU $\ge 0.1$):

$$\text{Precision} = \frac{TP}{TP + FP}, \quad \text{Recall} = \frac{TP}{TP + FN}$$

Bảng 1: Hiệu suất phát hiện vùng chứa văn bản trên tập kiểm thử Manga109

Phương pháp / Mô hình Độ chính xác (Precision) Độ phủ (Recall) Ghi chú kỹ thuật
SSD300-fork (SOTA 2018) 84.10% Chưa công bố Phương pháp phân nhánh anchor
YOLOv2 Baseline 64.00% 58.20% Kiến trúc Darknet-19, 1 scale
YOLOv3 (Mô hình đề xuất) 91.64% 82.46% Darknet-53 + FPN + Reorg 3 scales

Bảng 2: Hiệu suất nhận dạng ký tự (OCR Accuracy) trên 12,542 vùng văn bản

Phương pháp thực thi OCR Độ chính xác nhận dạng (Accuracy) Nhận xét chi tiết
Tesseract 4.x (Không xử lý nền) 1.50% Nhiễu họa tiết screentone làm sai lệch hoàn toàn nhận dạng
Tesseract 4.x + U-Net Xóa nền đề xuất 36.32% Tăng độ chính xác lên +34.82%, khôi phục rõ nét cấu trúc chữ
Tesseract Trực Tiếp (1.50%)   ██
Tesseract + U-Net (36.32%)    █████████████████████████████████████
                               0%   5%   10%   15%   20%   25%   30%   35%   40%

Phân tích các trường hợp lỗi (Error Analysis)

Qua quá trình kiểm thử, đề tài đã phân loại 6 dạng lỗi điển hình trong phát hiện và nhận dạng:

  1. Bỏ sót chú thích ngoài khung: Các dòng chữ dẫn truyện nhỏ nằm sát mép trang giấy dễ bị lớp downsampling bỏ qua.
  2. Ký tự tương phản nghịch (Chữ trắng nền đen): Bị phát hiện sai do phân bố cường độ điểm ảnh trái ngược với phân phối huấn luyện thông thường.
  3. Văn bản chèn trực tiếp trên nhân vật: Nét vẽ chi tiết của tóc và trang phục gây nhiễu cho bước phân đoạn.
  4. Vùng phát hiện bị lệch biên (Bounding box misalignment): Làm cắt mất một phần ký tự đầu/cuối của chuỗi chữ dọc.
  5. Dương tính giả (False Positive): Nhầm lẫn các nét vẽ hoạt họa đơn giản (mắt nhắm, đường kẻ tốc độ) thành chữ cái.
  6. Nhiễu Furigana: Nhận diện ký tự nhỏ chú thích thành các chữ cái vô nghĩa xen giữa chuỗi văn bản chính.

Đổi mới và đóng góp kỹ thuật

  1. Vượt qua đỉnh cao công nghệ (Outperforming Prior SOTA): Mô hình YOLOv3 tinh chỉnh cho truyện tranh đạt Precision 91.64%, vượt trội hơn +7.54% so với mô hình SOTA trước đó là SSD300-fork (84.10%) và cải tiến vượt bậc so với YOLOv2 (+27.64%).
  2. Chiến lược tiền xử lý hai tầng (Detection-Segmentation Pipeline): Đề xuất giải pháp kết hợp phân đoạn U-Net để "lọc sạch" nhiễu nền manga trước khi đưa vào engine OCR, tạo ra bước nhảy vọt về tỷ lệ nhận dạng từ 1.50% lên 36.32% (mức tăng trưởng tương đối hơn 24 lần).
  3. Đóng góp dữ liệu và chuẩn hóa: Đã hoàn thiện quy trình chuyển đổi và chuẩn hóa cấu trúc nhãn phức tạp của tập dữ liệu Manga109 (hơn 527,000 annotations) sang định dạng bounding box phục vụ huấn luyện các mô hình Object Detection hiện đại.

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

Kịch bản ứng dụng (Real-World Use Cases)

  • Hệ thống hỗ trợ biên dịch truyện tranh bán tự động: Tự động phát hiện vị trí thoại, dịch thô và xuất file phụ đề giúp giảm 60-70% thời gian dịch thuật cho các nhóm biên tập.
  • Tìm kiếm ngữ nghĩa trong kho lưu trữ Manga kỹ thuật số: Lập chỉ mục (indexing) toàn bộ nội dung văn bản trong hàng triệu trang truyện tranh, cho phép độc giả tìm kiếm theo tên nhân vật, câu thoại hoặc tình huống.
  • Công cụ hỗ trợ học tiếng Nhật qua truyện tranh: Ứng dụng đọc truyện tương tác trên điện thoại, cho phép người học chạm vào từng bóng thoại để tra từ điển tức thì và hiển thị Furigana chuẩn hóa.

Chiến lược triển khai và yêu cầu phần cứng

  • Môi trường đề xuất: Docker container chạy trên nền Linux (Ubuntu 18.04/20.04 LTS), sử dụng NVIDIA Container Toolkit.
  • Yêu cầu phần cứng Production: GPU tối thiểu 6GB VRAM (NVIDIA GTX 1660 Super / RTX 3060) cho phép xử lý thời gian thực từ 15-25 trang truyện/giây.
  • Khả năng mở rộng (Scalability): Dễ dàng chia tách giai đoạn Detection (YOLOv3) và giai đoạn OCR thành hai microservices độc lập giao tiếp qua RabbitMQ hoặc Redis Queue để cân bằng tải.

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

Hạn chế kỹ thuật

  • Độ chính xác nhận dạng OCR tổng thể ở mức 36.32% vẫn chưa đủ điều kiện để tự động hóa hoàn toàn 100% quy trình xuất bản (vẫn cần con người hiệu đính).
  • Chưa có mô-đun chuyên biệt để tách biệt hoàn toàn chữ Furigana siêu nhỏ ra khỏi chữ Kanji chính.
  • Tốc độ xử lý của chuỗi tiền xử lý U-Net còn tốn tài nguyên tính toán khi chạy trên các trang truyện có độ phân giải lớn (4K/Scan 600 DPI).

Hướng phát triển tiếp theo

  • Thay thế OCR Engine: Chuyển đổi từ Tesseract sang các kiến trúc Transformer chuyên sâu cho chữ tiếng Nhật như CRNN + CTC Loss, Vision Transformer (ViT) hoặc Manga-OCR để tăng độ chính xác lên trên 85%.
  • Tự động xóa chữ và vẽ lại nền (Inpainting): Tích hợp mạng sinh đối kháng (GAN / DeepFillv2) để tự động xóa chữ tiếng Nhật gốc và tái tạo lại họa tiết nền của trang truyện.
  • Xử lý toàn diện hướng đọc: Phát hiện và tự động sắp xếp thứ tự đọc bóng thoại theo chuẩn Manga truyền thống (từ phải sang trái, từ trên xuống dưới).

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

  • Sinh viên & Học viên CNTT: Nắm bắt được phương pháp luận nghiên cứu khoa học, cách áp dụng các mạng học sâu (YOLOv3, U-Net) vào bài toán xử lý thị giác máy tính phi cấu trúc.
  • Kỹ sư AI & Computer Vision: Tham khảo mã nguồn, cấu trúc đường ống kết hợp giữa Object Detection và Semantic Segmentation để giải quyết các bài toán OCR tài liệu phức tạp.
  • Doanh nghiệp xuất bản & Phát hành số: Sở hữu giải pháp tự động hóa giúp tối ưu hóa chi phí nhân sự, rút ngắn chu kỳ phát hành truyện tranh đa ngôn ngữ ra thị trường.
  • Cộng đồng nghiên cứu NLP & Vision: Được cung cấp các số liệu thực nghiệm chuẩn xác, phân tích các trường hợp lỗi chi tiết trên bộ dữ liệu Manga109.

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 là gì?

Hệ thống yêu cầu máy tính chạy hệ điều hành Linux/Windows, CPU tối thiểu 4 nhân, 8GB RAM. Đối với GPU, khuyến nghị sử dụng GPU NVIDIA có tối thiểu 4GB VRAM để đảm bảo tốc độ suy diễn (inference) dưới 200ms mỗi trang truyện.

2. Tại sao lại chọn YOLOv3 thay vì các phiên bản mới hơn như YOLOv4 hay YOLOv5?

Tại thời điểm nghiên cứu (2020), YOLOv3 là kiến trúc ổn định nhất, hỗ trợ mạng trích xuất Darknet-53 mạnh mẽ và cấu trúc FPN 3 tỷ lệ, cho phép giải quyết triệt để bài toán nhận dạng văn bản nhỏ mà không đòi hỏi tài nguyên phần cứng quá đắt đỏ.

3. Tại sao Tesseract OCR chạy trực tiếp trên ảnh cắt từ YOLOv3 chỉ đạt 1.5%?

Do các vùng ảnh cắt từ YOLOv3 vẫn giữ nguyên nền truyện tranh (chứa các chấm tram, đường nét vẽ, bóng đổ). Engine Tesseract được thiết kế tối ưu cho tài liệu văn phòng (nền trắng chữ đen phẳng), do đó các hoa văn phức tạp của Manga bị Tesseract nhận định nhầm là các nét ký tự, gây sụp đổ thuật toán trích xuất đường viền.

4. Hệ thống có khả năng nhận diện các âm thanh tượng thanh (SFX) vẽ tay không?

Hiện tại, hệ thống chủ yếu tập trung vào các đoạn hội thoại có cấu trúc ngữ pháp. Các chữ tượng thanh vẽ cách điệu nghệ thuật dạng hình vẽ tự do có tỷ lệ nhận diện thấp và cần một mô hình học sâu chuyên biệt dạng Scene Text Recognition để xử lý.

5. Làm cách nào để tích hợp hệ thống này vào quy trình dịch truyện sẵn có?

Hệ thống cung cấp giao diện lập trình thông qua API Python. Các studio hoặc nhóm dịch thuật có thể tích hợp API này vào Photoshop hoặc các phần mềm làm truyện chuyên dụng để tự động điền bản dịch thô vào layer văn bản.


Kết luận

Khóa luận tốt nghiệp "Trích xuất tự động văn bản từ truyện tranh" đã giải quyết thành công bài toán tự động hóa đọc và xử lý văn bản tiếng Nhật trong Manga. Bằng việc kết hợp sáng tạo giữa mạng phát hiện vật thể YOLOv3 (đạt độ chính xác ấn tượng 91.64%, vượt qua SOTA 2018) và mạng phân đoạn U-Net để xóa nền, nghiên cứu đã nâng cao hiệu suất nhận dạng của Tesseract OCR lên 36.32%.

Công trình không chỉ mang giá trị học thuật cao trong việc xử lý ảnh tài liệu phức tạp mà còn mở ra tiềm năng thương mại hóa mạnh mẽ cho ngành công nghiệp xuất bản truyện tranh kỹ thuật số, đặt nền móng vững chắc cho các hệ thống dịch thuật truyện tranh tự động hóa hoàn toàn trong tương lai.