Mục lục
1. Giới thiệu
LightOn OCR là một ứng dụng nhận dạng ký tự quang học (OCR) hiện đại, sử dụng mô hình AI đa phương thức với quy mô lớn (~1 tỷ tham số). Khác với các công cụ OCR truyền thống, hệ thống không chỉ trích xuất văn bản mà còn hiểu cấu trúc tài liệu, trả về kết quả dưới dạng Markdown có định dạng, kèm theo tọa độ vùng chữ (bounding box).
Bài viết này chia sẻ source code LightOn OCR viết bằng C++ và C# để bạn tự build ứng dụng trên Windows. Với khả năng chạy offline và đầy đủ source code, bạn hoàn toàn an tâm về vấn đề bảo mật dữ liệu khi sử dụng.
Việc build ứng dụng cũng không khó vì ứng dụng build với Visual Studio, rất quen thuộc đối với bất kỳ lập trình viên nào. Đây là 1 giải pháp toàn vẹn, đáp ứng được nhiều tiêu chí: miễn phí, an toàn, nhanh chóng và chính xác.
Ứng dụng hỗ trợ xử lý:
- Ảnh: PNG, JPG, BMP, WEBP
- File PDF
Kết quả đầu ra có thể xuất ra:
- Microsoft Word (.docx)
- Markdown (.md)
- File .zip nếu bạn upload nhiều file input
2. Yêu cầu hệ thống
2.1. Phần mềm
- Windows 10 x64, không nên sử dụng Windows 11
- CUDA 12.8 và cuDNN 9.18
- Visual Studio 2022
- Desktop development with C++
- .NET Desktop Development
- .NET 8.0 SDK
- C++ Toolset v143 (C++20)
2.2. Phần cứng
- CPU: AMD Ryzen 5 2600 trở lên
- RAM: 16GB trở lên
- SSD: trống ít nhất 3GB
- GPU: NVIDIA 3060 trở lên
Lưu ý: Do sử dụng mô hình AI lớn bắt buộc bạn phải có GPU NVIDIA hỗ trợ CUDA
3. Chuẩn bị môi trường
3.1. Download model
Download model tại link: https://huggingface.co/noctrex/LightOnOCR-2-1B-bbox-GGUF
Sau khi download, đưa các file vào folder: bin/model/
- LightOnOCR-2-1B-bbox-BF16.gguf: 1.12 GB
- mmproj-F32.gguf: 1.53 GB
3.2 Copy các file cần thiết
Sau khi tải mã nguồn, thực hiện sao chép các thư viện cần thiết:
copy lib/llama.cpp/lib/*.dll ➡ bin/
copy pandoc.exe ➡ bin/
4. Build solution
4.1. Cấu trúc source code
Source code gồm ba Project chính:
| Thành phần | Ngôn ngữ | Vai trò |
|---|---|---|
| LightOnOCRcpp | C++ | Xử lý nhận diện ký tự (OCR) dựa trên llama.cpp |
| LightOnOCR | C++/CLI | Project trung gian kết nối C++ và .NET |
| LightOnOCR_UI | C# (WPF) | Project thiết kế giao diện người dùng |
Cách tiếp cận này giúp tận dụng hiệu năng của C++ trong xử lý AI, đồng thời sử dụng C# để xây dựng giao diện thân thiện.
2 solution đều build ra folder bin
4.2. LightOnOCRcpp.sln
Đây là solution console, giúp việc debug nhanh chóng, build xong bạn được file LightOnOCRcpp.exe
Cách sử dụng:
LightOnOCRcpp.exe
4.3. LightOnOCR_UI.sln
Đây là solution có UI, là phiên bản hoàn chỉnh để triển khai tới người dùng, build xong bạn được file LightOnOCR_UI.exe
Đây là ứng dụng đầy đủ chức năng để bạn sử dụng.
Link GitHub
https://github.com/thigiacmaytinh/LightOnOCR_Cpp
Tổng kết
Trong trường hợp bạn muốn sử dụng online có thể truy cập link: https://huggingface.co/spaces/lightonai/LightOnOCR-2-1B-Demo
