Skip to main content

Vietnamese OCR engine optimized for CPU deployments – C++ ONNX Runtime backend

Project description

🇻🇳 VNCV — Vietnamese Computer Vision

OCR engine tối ưu hoá cho tiếng Việt
vncv là thư viện OCR hỗ trợ trích xuất văn bản từ ảnh, với khả năng tự động tải model và chạy inference nhanh chóng.

Python License DevHub VietOCR


🖼️ Demo

📥 Ảnh gốc 📤 Kết quả nhận dạng

['UBND QUẬN TÂY HỒ', 'TRƯỜNG MN-TH SAO MAI', 'TUYÊN TRUYỀN', 'Phổ biến giáo dục pháp luật về phòng, chống dịch bệnh COVID-19', 'tại nhà trường', 'Thực hiện Kế hoạch số 43/KH-PGDĐT về việc thực hiện đợt cao điểm', 'tuyên truyền pháp luật về phòng chống dịch Covid-19 trên dịa bàn Thành phố', 'Ngành GDĐT Tây Hồng', 'Nhằm nâng cao ý thức tự giác cho CB-GV-NV của trường về việc chấp', 'hành các quy định của pháp luật liên quan đến phòng, chống dịch COVID-19;', 'góp phần đẩy lùi nhanh dịch bệnh trên địa bàn thành phố, thực hiện đẩy mạnh', 'đợt cao điểm tuyên truyền pháp luật về phòng, chống dịch COVID-19 theo', 'hướng lựa chọn nội dung trọng tâm, trọng điểm, ngắn gọn, dễ hiểu, đa dạng hóa', 'các hình thức liên quan đến phòng, chống dịch, góp phần hình thành thói quen', 'thực hiện các biện pháp phòng, chống dịch trong lối sống.', 'Các quy định của pháp luật có liên quan đến phòng, chống dịch COVID-19, các', 'văn bản chỉ đạo của Thành phố về phòng, chống dịch, tình hình dịch bệnh tại', 'xã thành phố, các quy định người dân cân tuân thủ khi chính quyền áp dụng biện thuận', 'xã pháp phòng, chống dịch tại địa bàn, đặc biệt là thời gian áp dụng các biện pháp', 'theo Chỉ thị 15/CT-TTg, Chỉ thị 16/CT-TTg của Thủ tướng Chính phủ hoặc các', 'biện pháp cao hơn.', 'Xử phạt các hành vi, vi phạm pháp luật có liên quan đến phòng, chống', 'dịch, quy định về: cách ly y tế, chữa bệnh, quy định tiêm chủng vaccine của', 'thành phố... đã được triển khai mạnh trong thời gian tới.', 'Thực hiện tuyên truyền trên phân mêm ứng dụng internet: Zalo, website..', 'Trường MN-TH Sao Mai yêu cầu toàn bộ CB-GV-NV-HS thực hiện đợt cao', 'điểm tuyên truyền tại nhà trường, phối hợp và triển khai thực hiện đảm bảo đúng', 'tiến độ và hiệu quả./.', 'TRƯỞNG BANH', 'Nguyễn/Thị Trà Giang']

1. Cài đặt

Cài đặt package thông qua pip:

pip install vncv_cpp

🚀 Điểm mới: vncv_cpp phát hành dưới dạng binary wheel đa nền tảng (Linux/macOS/Windows) với backend C++ ONNX Runtime. Bạn không còn cần cài đặt PyTorch (nặng ~2GB) nữa.

Trong quá trình build hoặc cài đặt lần đầu, các mô hình OCR cần thiết sẽ được tự động tải về và cấu hình sẵn.


2. Sử dụng cơ bản

Trích xuất văn bản từ ảnh

from vncv.ocr import extract_text

# Trích xuất văn bản từ ảnh tiếng Việt (mặc định)
results = extract_text("test_image.jpg", lang="vi")

print("OCR Results:", results)

👉 Thư viện sẽ tự động:

  • Tự động tải weights từ GitHub Releases nếu chưa có (không cần copy thủ công)
  • Load model OCR bằng ONNX Runtime (tối ưu hóa tốc độ x2-x5 so với PyTorch trên CPU)
  • Phát hiện vùng chứa văn bản (text detection)
  • Nhận dạng nội dung (text recognition)

3. Sử dụng CLI (Command Line Interface)

Bạn có thể chạy trực tiếp từ terminal mà không cần viết code:

vncv test_image.jpg --lang vi

3.1. Smoke test SDK Python qua C++ backend

Sau khi cài package, bạn có thể kiểm tra nhanh backend C++ (pybind) đã load đúng hay chưa:

python -c "from vncv import extract_text; print('✅ SDK import OK')"

Nếu gặp lỗi liên quan tới OpenCV/CMake khi build từ source (ví dụ không tìm thấy OpenCVConfig.cmake hoặc thiếu libGL.so.1), cần cài thêm thư viện hệ thống:

# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y libgl1 libopencv-dev

3.2. CI/CD build binary đa môi trường & publish PyPI

Dự án đã thêm workflow GitHub Actions để:

  • Build wheel cho Linux / macOS / Windows qua cibuildwheel (Linux dùng nhiều kiến trúc với manylinux Docker image).
  • Upload artifact wheel cho từng OS.
  • Publish lên PyPI khi push tag v*.
  • Chỉ publish .whl binary (không upload source distribution).

Tên package trên PyPI: vncv_cpp.


4. Các tuỳ chọn nâng cao

4.1. Lưu ảnh có bounding box

vncv test_image.jpg --save-annotated

👉 Kết quả: lưu ảnh với các khung (bounding boxes) bao quanh vùng text.


4.2. Xuất kết quả dạng JSON

vncv test_image.jpg --json

Hoặc sử dụng trong khối lệnh Python:

from vncv.ocr import extract_text

results = extract_text("test_image.jpg", lang="vi", return_dict=True)

Ví dụ output JSON:

[
  {
    "text": "Xin chao Viet Nam",
    "confidence": 0.98,
    "box": [[10, 20], [100, 20], [100, 50], [10, 50]]
  }
]

5. Tính năng nổi bật

  • Tốc độ vượt trội: Sử dụng ONNX Runtime giúp giảm latency, xử lý ảnh nhanh hơn đáng kể.
  • 📦 Siêu nhẹ: Gỡ bỏ phụ thuộc vào PyTorch, giảm kích thước cài đặt từ GB xuống MB.
  • Tự động tải model, không cần cấu hình phức tạp.
  • Hỗ trợ đa ngôn ngữ (Tiếng Việt vi và Tiếng Anh en).
  • Hỗ trợ GPU/CPU: Tự động nhận diện và tối ưu cho phần cứng hiện có.
  • Trả về JSON chi tiết bao gồm: văn bản, bounding box, và confidence.

6. Gợi ý sử dụng

vncv là lựa chọn số 1 cho:

  • Server/Lambda/Edge devices: Nơi tài nguyên (RAM/Disk) hạn chế và không có GPU.
  • Hệ thống Real-time: Cần tốc độ phản hồi nhanh.
  • OCR tài liệu tiếng Việt: Hóa đơn, CMND/CCCD, văn bản hành chính.
  • Tích hợp API: Dễ dàng build các dịch vụ OCR Microservices gọn nhẹ.

7. Giấy phép & Bản quyền

© 2026 DevHub Solutions. All rights reserved.

Dự án được phát hành dưới giấy phép mã nguồn mở cho mục đích học tập và nghiên cứu. Chân thành cảm ơn tác giả dự án VietOCR đã cung cấp engine cốt lõi.

Quy định
Sử dụng, học hỏi, chỉnh sửa mã nguồn
Tích hợp vào dự án cá nhân hoặc thương mại
Chia sẻ lại với điều kiện ghi nguồn
Đổi tên thương hiệu hoặc nhận là sản phẩm của mình
Xây dựng SaaS/dịch vụ cạnh tranh mà không có phép
Xóa thông báo bản quyền này

DevHub Solutions bảo lưu quyền duy trì các phiên bản private/thương mại và có thể thay đổi điều khoản cấp phép trong các phiên bản tương lai. Để sử dụng thương mại hoặc mở rộng quyền sử dụng, vui lòng liên hệ DevHub Solutions.



Made with ❤️ by DevHub Solutions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vncv_cpp-0.2.0.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

vncv_cpp-0.2.0-cp312-cp312-win_amd64.whl (33.7 MB view details)

Uploaded CPython 3.12Windows x86-64

vncv_cpp-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (39.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

vncv_cpp-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (28.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

vncv_cpp-0.2.0-cp312-cp312-macosx_14_0_arm64.whl (48.4 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

vncv_cpp-0.2.0-cp311-cp311-win_amd64.whl (33.7 MB view details)

Uploaded CPython 3.11Windows x86-64

vncv_cpp-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (39.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

vncv_cpp-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (28.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

vncv_cpp-0.2.0-cp311-cp311-macosx_14_0_arm64.whl (48.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

vncv_cpp-0.2.0-cp310-cp310-win_amd64.whl (33.7 MB view details)

Uploaded CPython 3.10Windows x86-64

vncv_cpp-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (39.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

vncv_cpp-0.2.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (28.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

vncv_cpp-0.2.0-cp310-cp310-macosx_14_0_arm64.whl (48.4 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file vncv_cpp-0.2.0.tar.gz.

File metadata

  • Download URL: vncv_cpp-0.2.0.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vncv_cpp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a20c545555aa32f4dae987acb75ff449c84f7cac7f44d633bad53dd804c7269c
MD5 9a7a73d7b8366b9a2ca327d6ea87865a
BLAKE2b-256 15d442c2cbca43db12dae2496ec6a74fdc0def458711a0bba3dd108fc67ba746

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: vncv_cpp-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 33.7 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vncv_cpp-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8959385b8de912188c1a3d5cc877a3145c77256fcfc0fca9dfc2d4c44007a737
MD5 ed1b28063073e4919bfd824c682a0890
BLAKE2b-256 15c37fecc18a311af72fcdd07449ceb0bb427bb58dc59143c6640bbb4bf9624d

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b8f669be59ba0cc106a0235a40dbdcac7fb5398f87d868139694feb148ad1d17
MD5 7d742578e8ce1cd6931456dccaff6a76
BLAKE2b-256 811113f613010636422e32512a923dff9955fb40540d4e44e91573b9f30cb148

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 945f8bbaeeec0de6cc8e084b07e793b6c0537639a5e8a4e540a6d41547bdc8d3
MD5 ab2d5be6ddd44c4452584b0b920c1960
BLAKE2b-256 1038d256a00304a9c13fec3ba73691b124388aa91010f42c8c516f8991509c37

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 47f9f4fac2fc4908719ad080fec27777b63fa041708de1a2e7d5db896cca736e
MD5 d0f1a0bd93545eed2a9ae6212d7b5239
BLAKE2b-256 f0f5c169110ee73d6b1b445eaf4c94a4633baadb91a6a90f3916f7f4475a06b6

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: vncv_cpp-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 33.7 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vncv_cpp-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2845e44f20be8bd59b11b6ba8426851f6632295175157ff9e9d945c83a2664a8
MD5 5f7a2a292e9fff6965269fc8785b1860
BLAKE2b-256 cdccb578addf6d876ef3d45f7b5e4dee1452df570ec9a1891345b273e08a32d3

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5077e77843af6f43b9585474dbd68f91c6ed9aebe55e539083dd2f3b4d9d6842
MD5 648e3e7b7b6283b022bab8e3558ea4a7
BLAKE2b-256 8179c360c15e35505a53009bc9c4b473b377c377760f5c13d81b20ba4b8bb6b2

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 412c6693d6cf6200e37b7a44850cf73150bb9afda720b8f0f54c6a225ab93087
MD5 a1b8b581285c73eca8a99023b20e39d8
BLAKE2b-256 a111f2747b07b9f74ae2bde7ed07002c156bc87d97fff25aedff6f5d99c77be9

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9b0155a06253770561f75df2d8f82c399cc489a1a314b901614a1d30d313e9c9
MD5 ecb6b9237e56661e4e6e17dcf417a67d
BLAKE2b-256 343604c982937c38750ab460fd9d31be852d4df1f2321ebe69c44eea057fec31

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: vncv_cpp-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 33.7 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vncv_cpp-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f7c88e035c606256ed4fd22c163de92d97b9af05bda4fffe615ba03e2a421d75
MD5 3e8681c23bb96ace2611d053b4c0d1ec
BLAKE2b-256 e905f8addc59a042ad4d859ed87d915d187d14554a7d78ed66b1743c22183075

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a2fdc15579aad79979cca0e62b83019431a22a2083a00e611162d9f5b8296d8e
MD5 e36624746918ab83922396460f4e99c6
BLAKE2b-256 258fcbf3a45c243f7b7f56e7a178c4de002bea0850d5ea3b305f2b2a52bfbccc

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 be6c4d77dd84570a74d23a5fcea049d72dc4902efa8c8ff1c22ff580e8eff98b
MD5 05c0d266d2e9f4e88d8908d923bf03ff
BLAKE2b-256 9a93b3486b80309354df1e0ce73b9d027ca41e6e5176ec82874a1d913cadb5b2

See more details on using hashes here.

File details

Details for the file vncv_cpp-0.2.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for vncv_cpp-0.2.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1e3d09e1a2645fefc86ee71d439db85caeeef36326ba94eafa672896a933c033
MD5 6e98d448274f695d4ae2f6706b9edbfa
BLAKE2b-256 549821094c1444fb801636c9099115be6963745034548b5fab6a2e3f372e64a3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page