Benchmark docling OCR cho văn bản tiếng Việt

Mấy ngày trước IBM ra mắt mô hình mở Granite Docling VLM tích hợp vào thư viện Docling với kỳ vọng OCR “hiểu” được cấu trúc văn bản. Nhân dịp đó mình thử benchmark ba pipeline để xem tốc độ và độ phù hợp khi xử lý tài liệu pháp lý tiếng Việt.


Thỉnh thoảng mình thấy ai đó trong các nhóm mình tham gia hỏi: “Công cụ OCR nào tốt nhất?”

Mỗi người trả lời khác nhau. Có người nói về API đa phương thức của Google, có người giới thiệu dịch vụ chuyên như Llamaparse. Rồi có PaddleOCR, rất mạnh, nhưng không có model mã nguồn mở cho tiếng Việt tương thích. VietOCR thì bỏ rồi, lần cuối mình thử tải model từ AWS S3 cũng không được. Có khi nó vẫn sống, có khi không.

Thực tế mình dùng OCR chủ yếu cho văn bản pháp luật. Các tài liệu pháp lý ở Việt Nam đủ kiểu: form có bảng, hợp đồng nhiều trang, scan từ giấy, ảnh mờ… OCR phải xử được cả đống đó mà vẫn giữ được dấu tiếng Việt, cấu trúc, format.

Mấy ngày trước IBM mới công bố một mô hình VLM (vision language model) 258M parameter tích hợp vào thư viện docling với lời hứa hẹn về khả năng “hiểu” thực sự đối với cấu trúc văn bản cần được OCR.

Vì vậy mình làm thử benchmark ba pipeline sau:

  • ParaOCR — library mình tự viết , wrapper chạy song song (parallel) quanh EasyOCR
  • Docling Standard — pipeline có nhận diện layout, dựa trên EasyOCR
  • Docling VLM — thử nghiệm với Granite_docling, một vision-language model chưa được huấn luyện riêng cho tiếng Việt

Bài benchmark này mục đích không phải để tuyên bố công cụ nào thắng, mà để xem mấy cái này làm được gì, chỗ nào yếu, trong điều kiện thực tế.


So sánh pipeline

Cấu hình thử nghiệm: Intel i5 12400, 32GB RAM DDR4, RTX 3060 12GB

Dataset 1: 2 file tài liệu scan đơn giản (6 trang), 2 file vận đơn dạng bảng (1 trang mỗi file)

Dataset 2: 10 file tài liệu scan, tổng 60 trang

PipelineEngine OCRNhận dạng layoutĐầu ra (*)Hỗ trợ tiếng ViệtThời gian với 4 fileThời gian với 10 file
ParaOCREasyOCR❌ Chưa có (**)JSONL✅ Tạm ổn~ 30.46 giây~ 117.89 giây
Docling StandardEasyOCR✅ CóHTML✅ Trung bình~ 38.96 giây~ 326.83 giây
Docling VLMGranite_docling + EasyOCR✅ Nâng caoMarkdown❌ Kém~ 712.55 giâyKhông test

(*) Mình chọn mấy định dạng này cho benchmark thôi. Pipeline có thể xuất sang định dạng khác được.
(**) Lúc làm ParaOCR mình có để lại placeholder cho mục layout analysis, nhưng mình cũng chưa có thời gian triển khai phần đó.

Cũng xin nhắc lại: trong bài blog trước mình làm thử với 10 file, thì EasyOCR nguyên bản không parallel mất khoảng 179 giây để xử lý hết.


Nhận định nhanh

  • ParaOCR
    Nhanh, rõ ràng. Khi mình bật chế độ xử song song và dùng GPU batching, nó làm xong khá lẹ. Nếu chỉ cần đúng nội dung văn bản là được, không cần giữ layout nhiều, thì ParaOCR là lựa chọn tốt.
  • Docling Standard
    Thêm layout thì nhìn đỡ lộn hơn về mặt cấu trúc. Nhưng thực tế thì lỗi sai từ (WER) nhiều hơn ParaOCR, mặc dù cùng sử dụng một backend là EasyOCR. Có thể là do ảnh DPI lệch, hoặc cách chia layout không hợp lý. Khi lên tới 10 file với nhiều format khác nhau thì tổng thời gian mất hơn 5 phút, rõ ràng đó là cái giá phải trả để thực hiện thêm tác vụ phân tích document layout.
  • Docling VLM (Granite_docling)
    Đây đúng là thử xem nó chạy được không thôi. Vì chưa được huấn luyện cho tiếng Việt, nó lỗi rất nhiều: đối với vận đơn dạng bảng nó trả về ảnh nguyên, không OCR; hợp đồng nhiều trang thì lâu, chất lượng văn bản kém; dấu tiếng Việt bị lỗi nặng. Về mặt kỹ thuật thì pipeline có thể chạy, nhưng để dùng trong thực tế với văn bản Việt Nam thì phải chỉnh sửa, huấn luyện lại nhiều.

Những bài học rút ra

  • Tốc độ và cấu trúc thường là hai thứ phải đánh đổi nhau. ParaOCR nhanh hơn, Docling Standard giữ được layout tốt hơn, nhưng chưa có cái nào “chuẩn” tiếng Việt hoàn toàn.
  • Layout đẹp không có nghĩa là chính xác nếu OCR không hiểu ngôn ngữ.
  • Model VLM tổng quát chưa phải là giải pháp nào cũng áp dụng được. Thực ra phép thử với Docling VLM là để kiểm tra tính khả thi, không phải để so chất lượng.

Một số hướng giải quyết

Văn bản pháp lý Việt Nam vẫn cần các model hiểu được script, dấu, cách trình bày tài liệu đặc thù. Trong lúc chờ model tốt hơn:

  • Nếu bạn có ngân sách, các giải pháp doanh nghiệp như Llamaparse hay Google Cloud Vision là đáng cân nhắc
  • Nếu chỉ cần nhanh và trích nội dung chính, ParaOCR là ổn, nhưng mình xin nói trước là mình không hỗ trợ kỹ thuật nhiều cho nó
  • Nếu bạn muốn giữ cấu trúc, Docling Standard có tiềm năng, nhưng sẽ cần căn chỉnh DPI, preprocessing thật kỹ
  • Còn các VLM chung chung thì thôi, đừng mong dùng nguyên như vậy cho văn bản pháp lý Việt Nam — ít nhất là phải huấn luyện lại cho chuẩn

Link tham khảo

[1] https://www.ibm.com/new/announcements/granite-docling-end-to-end-document-conversion

[2] https://huggingface.co/ibm-granite/granite-docling-258M

[3] https://github.com/docling-project/docling

[4] https://github.com/phuocnguyen90/paraOCR

Leave a Reply

Your email address will not be published. Required fields are marked *