Viet OCR C++ nhận diện ký tự tiếng Việt bằng C++

Thư viện VietOCR được viết bằng ngôn ngữ Python với khá nhiều ưu điểm. Tuy nhiên do nhu cầu sử dụng của công ty là C++ nên mình đã port sang ngôn ngữ C++ để tích hợp vào sản phẩm. Bài viết này chia sẻ source code, giải thích cách thực hiện và hướng dẫn cách build VietOCR-cpp trên Windows 10.

Build VietOCR bằng C++ sẽ giúp viết ứng dụng Windows application dễ dàng hơn. Dễ dàng tích hợp chức năng nhận diện tiếng Việt vào Desktop application và sử dụng các function của .NET framework

Tác giả cung cấp 2 model là Transformer Seq2Seq, tuy nhiên VietOCR-cpp chỉ port Seq2Seq vì phù hợp với nhu cầu sử dụng.

Chuẩn bị

  • Visual Studio 2022: bắt buộc phải build bằng Visual Studio 2022 vì code viết lại bằng C++ 17, phiên bản thấp hơn sẽ lỗi

Các bước thực hiện

Bước 1: clone source code VietOCR-cpp

Clone source code tại link: https://github.com/thigiacmaytinh/vietocr-cpp

Trong source code đã commit sẵn các thư viện cần thiết như OpenCV 4.8.0, Yaml-cpp,… cho các bạn.

Ghi chú
Phiên bản mới nhất không cần sử dụng libtorch, giúp giảm dung lượng chương trình.

Bước 3: build code VietOCR-cpp

Khi build VietOcrCpp_CV480.sln thì Visual Studio tự động download Microsoft.ML.OnnxRuntime.1.17.1 vào folder packages

Các bạn build mode Debug hay Release đều được, và chỉ có duy nhất 1 platform là x64.

Một điều khó khăn khi viết bằng ngôn ngữ C++ đó là việc setup để xử lý unicode khá phức tạp. Trong source code VietOCR-cpp đã làm sẵn điều đó mà chỉ cần sử dụng std:wstring, bao gồm:

  • In unicode ra console
  • Setup project sử dụng Multi-Byte Charater Set

Kết quả

Test với ảnh đã crop và in kết quả lên console

Chúc các bạn thành công