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 và 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