AI-POWERED DOCS
What do you want to know?
OCR (Optical Character Recognition)
OV80i có thể đọc văn bản in, số seri, mã ngày và các ký tự chữ-số khác trực tiếp từ hình ảnh camera bằng cách sử dụng mô hình OCR đã được huấn luyện sẵn. Khác với classifier và segmenter, OCR không yêu cầu dữ liệu huấn luyện. Nó hoạt động ngay khi sử dụng.
OCR hữu ích khi bạn cần:
- Xác minh số seri hoặc mã lô khớp với các giá trị mong đợi
- Xác nhận nhãn hiện diện và có thể đọc được
- Đọc mã ngày/hạn sử dụng để truy xuất nguồn gốc
- Kiểm tra số linh kiện trên các bộ phận trong quá trình lắp ráp
OCR chỉ khả dụng trên OV80i. OV20i và OV10i không hỗ trợ OCR.
Cách OCR Hoạt Động
OV80i sử dụng pipeline AI hai giai đoạn để nhận dạng văn bản:
- Text Detection: Tìm vị trí của văn bản trong ROI. Trả về các hộp giới hạn (bounding box) quanh mỗi từ hoặc vùng văn bản được phát hiện.
- Text Recognition: Đọc các ký tự bên trong mỗi hộp giới hạn được phát hiện và trả về chuỗi văn bản kèm theo điểm số tin cậy.
Toàn bộ quá trình này chạy trên GPU NVIDIA Jetson Orin NX của camera. Không cần kết nối đám mây.
Mô hình nhận dạng một bộ ký tự rộng bao gồm:
- Chữ số (0-9)
- Chữ cái Latin (A-Z, a-z, các ký tự có dấu)
- Dấu câu và ký hiệu thông dụng
- Chữ cái Hy Lạp
- Ký hiệu tiền tệ
- Toán tử toán học
Bộ ký tự được cố định và không thể tùy chỉnh. Mô hình hỗ trợ khoảng 480 ký tự, bao phủ hầu hết văn bản in công nghiệp ở các ngôn ngữ dựa trên hệ chữ Latin.
Điều Kiện Tiên Quyết
Trước khi thiết lập OCR, bạn cần một camera đã được:
- Lắp đặt vật lý và ổn định
- Kết nối với mạng và có thể truy cập trong trình duyệt
- Lấy nét vào bộ phận có văn bản mà bạn muốn đọc
Nếu bạn chưa thực hiện những việc này, hãy làm theo các hướng dẫn bắt đầu trước:
Bước 1: Tạo Recipe Mới
Mọi cuộc kiểm tra đều bắt đầu bằng một recipe. Một recipe là một gói hoàn chỉnh: cài đặt hình ảnh, căn chỉnh, vùng quan tâm (ROI), mô hình AI và các quy tắc đầu ra.
- Điều hướng đến All Recipes trong thanh bên trái
- Nhấp vào + New ở góc trên bên phải
- Đặt cho recipe của bạn một tên mô tả (ví dụ: "Serial Number Check", "Label Verification")
- Nhấp vào Activate để đặt nó làm recipe đang hoạt động, sau đó nhấp vào Edit để mở Recipe Editor

Recipe Editor hiển thị toàn bộ pipeline kiểm tra. Bạn sẽ làm việc từ trái sang phải:
- Imaging Setup (cài đặt camera)
- Image Alignment & Inspection Setup (template, ROI)
- AI Blocks (Classification, Segmentation, OCR, Measurement)
- Set Pass/Fail & IO Logic (quy tắc đầu ra)
Để biết hướng dẫn chi tiết về việc tạo recipe, hãy xem Tạo Cuộc Kiểm Tra Đầu Tiên.
Bước 2: Cấu Hình Cài Đặt Hình Ảnh
Chất lượng hình ảnh tốt là nền tảng của OCR chính xác. Văn bản phải được hiển thị rõ ràng với độ tương phản mạnh.
- Nhấp vào Configure Imaging hoặc điều hướng đến tab Imaging Setup
- Điều chỉnh các cài đặt sau trong khi xem bản xem trước trực tiếp:
| Cài Đặt | Mục Tiêu Cho OCR |
|---|---|
| Exposure | Đủ sáng để nhìn rõ tất cả văn bản. Quá tối thì các ký tự sẽ biến mất vào nền. Quá sáng thì các nhãn trắng sẽ bị cháy sáng. |
| Gain | Giữ càng thấp càng tốt. Gain cao sẽ tạo ra nhiễu trông giống như các thành phần văn bản đối với bộ phát hiện. |
| Gamma | Điều chỉnh để cải thiện độ tương phản giữa văn bản và nền. |
| Focus | Văn bản phải sắc nét. Nếu các ký tự trông mờ hoặc nhòe, hãy điều chỉnh vòng lấy nét của ống kính C-mount. |
Độ chính xác của OCR phụ thuộc rất nhiều vào chất lượng hình ảnh. Văn bản phải hiển thị rõ ràng trong hình ảnh camera với độ tương phản tốt so với nền. Văn bản tối trên nền sáng hoặc văn bản sáng trên nền tối đều hoạt động tốt. Tránh:
- Ánh sáng không đều tạo ra bóng đổ ngang qua các ký tự
- Lóa trên các nhãn bóng
- Thiếu sáng làm cho văn bản khó phân biệt với nền
Phóng to vùng văn bản trong bản xem trước trực tiếp. Bạn có thể đọc rõ mọi ký tự không? Nếu bạn không thể đọc được, AI cũng không thể.
Để biết hướng dẫn chi tiết về tất cả cài đặt hình ảnh, hãy xem Image Settings.
Bước 3: Thiết Lập Căn Chỉnh Template
Căn chỉnh template cho camera biết cách theo dõi vị trí và hướng của bộ phận. Điều này rất cần thiết vì các bộ phận không phải lúc nào cũng nằm ở cùng một vị trí chính xác trên băng chuyền hoặc đồ gá.
- Điều hướng đến tab Template Image and Alignment
- Đặt bộ phận của bạn trong trường nhìn của camera
- Nhấp vào Capture Template để chụp ảnh tham chiếu
- Vẽ 2-3 vùng template nhỏ trên các đặc điểm luôn hiện diện và dễ nhận dạng (ví dụ: góc, logo, lỗ lắp đặt)
Đặt các vùng template càng xa nhau càng tốt trên bộ phận. Điều này làm giảm đáng kể độ rung góc trong quá trình căn chỉnh. Hai vùng gần nhau cho độ ổn định xoay kém; hai vùng ở các góc đối diện cho độ ổn định tuyệt vời.
Nếu bạn bỏ qua bước căn chỉnh, các ROI của OCR sẽ được cố định tại vị trí pixel tuyệt đối. Bất kỳ sự di chuyển nào của bộ phận sẽ khiến ROI bỏ lỡ văn bản. Luôn thiết lập căn chỉnh khi sử dụng trong sản xuất.
Để có hướng dẫn chi tiết về căn chỉnh template, xem Alignment.
Bước 4: Tạo OCR Regions of Interest (ROIs)
Bây giờ bạn sẽ xác định chính xác nơi nào trên bộ phận mà camera nên tìm kiếm văn bản. Đây là bước quan trọng nhất để đảm bảo độ chính xác của OCR.
4a. Điều Hướng Đến Inspection Setup
- Nhấp vào tab Inspection Setup trong Recipe Editor
- Bạn sẽ thấy Inspection Editor với hình ảnh template của bạn
4b. Thêm Model OCR
- Trong bảng điều khiển bên phải, tìm phần Models
- Nếu bạn không thấy model OCR nào được liệt kê, nhấp vào nút Add ở dưới cùng và chọn OCR
- Model OCR sẽ xuất hiện trong danh sách Models
Bạn chỉ có thể có một block OCR trên mỗi recipe. Tuy nhiên, bạn có thể tạo nhiều ROI trong block đó để đọc văn bản từ các khu vực khác nhau của bộ phận.
4c. Tạo OCR ROI
- Đảm bảo hàng model OCR được chọn (đánh dấu) trong danh sách Models
- Nhấp vào Add ROI trong phần Region of Interest
- Một ROI hình chữ nhật mới sẽ xuất hiện trên hình ảnh
- Kéo ROI để định vị nó lên trên văn bản bạn muốn đọc
- Thay đổi kích thước bằng cách kéo các điểm điều khiển ở góc

4d. Thiết Lập Hướng ROI
Đây là điều quan trọng nhất cần phải đúng. Hướng của ROI phải khớp với hướng của văn bản bạn muốn đọc.
Engine OCR cắt hình ảnh bằng góc của ROI, sau đó xử lý phần cắt như thể văn bản nằm ngang. Nếu góc ROI của bạn không khớp với góc văn bản, engine sẽ cố gắng đọc văn bản xoay và tạo ra kết quả rác.
Ví dụ:
- Văn bản đọc từ trái sang phải theo chiều ngang: góc ROI nên là 0 độ
- Văn bản được xoay 90 độ theo chiều kim đồng hồ: góc ROI nên là 90 độ
- Văn bản bị lộn ngược: góc ROI nên là 180 độ
- Văn bản ở góc 45 độ: góc ROI nên là 45 độ
Cách xoay một ROI:
- Chọn ROI bằng cách nhấp vào nó
- Sử dụng điểm điều khiển xoay ở góc của ROI, HOẶC
- Đặt giá trị góc trực tiếp trong các trường vị trí ở dưới cùng của canvas
Thanh vị trí hiển thị: H (chiều cao), W (chiều rộng), X và Y (vị trí), và angle (góc) tính bằng độ.

4e. Định Kích Thước ROI Chính Xác
- Làm ROI càng sát càng tốt xung quanh vùng văn bản. Phần nền dư thừa sẽ gây nhiễu và có thể dẫn đến phát hiện sai.
- Bao gồm một khoảng lề nhỏ (10-20 pixel) xung quanh văn bản để các ký tự không bị cắt ở các cạnh.
- Không bao gồm các văn bản khác mà bạn không muốn đọc. Nếu có nhiều vùng văn bản, hãy tạo các ROI riêng biệt cho mỗi vùng.
Nếu bạn cần đọc văn bản từ nhiều khu vực trên bộ phận (ví dụ: số sê-ri VÀ mã ngày tháng), hãy tạo một ROI riêng cho mỗi khu vực. Điều này cho bạn kết quả độc lập và giúp cấu hình các quy tắc pass/fail dễ dàng hơn.
4f. Tạo ROI Bổ Sung (Tùy Chọn)
Lặp lại các bước 4c-4e cho mỗi vùng văn bản bạn cần đọc. Mỗi ROI có tên riêng trong danh sách Region of Interest. Đổi tên chúng thành tên mô tả (ví dụ: "Serial Number", "Date Code", "Part Label") bằng cách nhấp đúp vào tên.
Sử dụng sao chép-dán để nhân bản các ROI. Tên sẽ tự động tăng dần (ví dụ: "ROI", "ROI (1)", "ROI (2)").
Bước 5: Cấu Hình và Kiểm Thử OCR Block
5a. Điều Hướng Đến OCR Block
Nhấp vào tab OCR Block trong thanh tab Recipe Editor. Bạn sẽ thấy luồng camera ở bên trái và bảng cài đặt ở bên phải.

Bảng bên phải hiển thị:
- Mô tả OPTICAL CHARACTER RECOGNITION
- Giải thích rằng đây là mô hình được huấn luyện trước không yêu cầu dữ liệu huấn luyện
- Hướng dẫn sử dụng Live Preview hoặc Test để xác thực
5b. Bật Live Preview
Đánh dấu vào ô Live Preview Mode ở góc trên bên phải. Camera sẽ bắt đầu xử lý các khung hình trong thời gian thực.

Khi Live Preview được kích hoạt, bạn sẽ thấy:
- Processing Time: Thời gian mô hình OCR mất cho mỗi khung hình
- Latency: Tổng thời gian khứ hồi bao gồm chụp ảnh và hiển thị
- Hộp giới hạn màu tím xung quanh các vùng văn bản được phát hiện chồng lên luồng camera
- Văn bản được phát hiện hiển thị dưới dạng nhãn trên mỗi hộp giới hạn
- Bảng tham số ở bên phải để tinh chỉnh cài đặt phát hiện
5c. Xác Minh OCR Đang Đọc Chính Xác
Khi Live Preview đang bật, đặt bộ phận của bạn dưới camera và xác minh:
- Tất cả các vùng văn bản đã được phát hiện chưa? Bạn sẽ thấy các hộp màu tím xung quanh mỗi từ/cụm từ trong ROI.
- Văn bản có được đọc chính xác không? Các nhãn phải khớp với văn bản thực tế trên bộ phận.
- Có phát hiện sai nào không? Có vùng nào không phải văn bản bị nhận diện nhầm là văn bản không?
- Di chuyển bộ phận một chút. OCR có tiếp tục hoạt động ở các vị trí khác nhau không (điều này kiểm tra việc căn chỉnh)?
Nếu văn bản không được phát hiện hoặc bị đọc sai, hãy kiểm tra:
- Hướng của ROI khớp với hướng của văn bản (xem Bước 4d)
- ROI được đặt đúng vị trí trên văn bản
- Chất lượng hình ảnh tốt (lấy nét sắc nét, tương phản tốt, ánh sáng đều)
- Thử điều chỉnh các tham số OCR (xem phần tiếp theo)
Bước 6: Tinh Chỉnh Các Tham Số OCR
Khi Live Preview được bật, bảng bên phải hiển thị bốn tham số có thể điều chỉnh. Chúng kiểm soát giai đoạn phát hiện văn bản (tìm vị trí của văn bản), không phải giai đoạn nhận dạng (đọc nội dung văn bản).
| Tham Số | Mặc Định | Chức Năng |
|---|---|---|
| Text Segmentation Threshold | 0.10 | Mức độ tin cậy mà bộ phát hiện phải có rằng một vùng chứa văn bản. Giá trị cao hơn = phát hiện chặt chẽ hơn, ít phát hiện sai nhưng có thể bỏ sót văn bản mờ. Giá trị thấp hơn = nhạy hơn, bắt được văn bản mờ nhưng có thể có phát hiện sai. Phạm vi: 0.0 đến 1.0. |
| Unclip Ratio | 4.0 | Mức độ mở rộng các hộp giới hạn được phát hiện ra ngoài từ đường viền văn bản. Giá trị cao hơn = hộp lớn hơn. Tăng nếu các hộp đang cắt cạnh của các ký tự lớn. Giảm nếu các từ gần nhau đang gộp thành một hộp. |
| Unclip Ceiling | 20 | Mở rộng pixel tối đa từ việc unclip. Điều này giới hạn sự phát triển để việc mở rộng với tỷ lệ lớn trên văn bản lớn không tạo ra các hộp quá to. Tăng nếu văn bản lớn vẫn bị cắt ngay cả khi đã tăng Unclip Ratio. |
| Min Text Area | 500 | Diện tích tối thiểu (tính bằng pixel) cho một vùng văn bản được phát hiện. Bất cứ gì nhỏ hơn đều bị loại bỏ như nhiễu. Tăng nếu các tạo phẩm nhỏ đang bị phát hiện là văn bản. Giảm nếu văn bản hợp lệ nhưng nhỏ đang bị lọc ra. |
Bắt đầu với các giá trị mặc định. Chỉ điều chỉnh nếu bạn thấy các vấn đề cụ thể trong Live Preview:
| Vấn Đề | Tham Số Cần Điều Chỉnh | Hướng |
|---|---|---|
| Vùng không phải văn bản bị phát hiện là văn bản | Text Segmentation Threshold | Tăng |
| Văn bản hợp lệ bị bỏ sót | Text Segmentation Threshold | Giảm |
| Hộp giới hạn cắt cạnh ký tự | Unclip Ratio | Tăng |
| Các từ gần nhau gộp thành một hộp | Unclip Ratio | Giảm |
| Các hộp phát triển quá lớn trên văn bản lớn | Unclip Ceiling | Giảm |
| Văn bản lớn vẫn bị cắt sau khi tăng Unclip Ratio | Unclip Ceiling | Tăng |
| Nhiễu/tạo phẩm bị phát hiện là văn bản | Min Text Area | Tăng |
| Văn bản hợp lệ nhỏ bị lọc ra | Min Text Area | Giảm |
Các thay đổi tham số có hiệu lực ngay lập tức trong Live Preview, vì vậy bạn có thể tinh chỉnh lặp đi lặp lại. Các tham số này cũng áp dụng trong các lần chụp sản xuất, không chỉ trong quá trình xem trước.
Bước 7: Kiểm Tra Với Hình Ảnh Đã Chụp
Sau khi tinh chỉnh các tham số bằng Live Preview, hãy xác thực OCR trên một loạt các mẫu sản xuất.
7a. Sử Dụng Bảng Kiểm Tra
- Tắt chế độ Live Preview (bỏ chọn ô)
- Nhấp vào nút Test

- Nhấp Select From Library để chọn hình ảnh từ các lần kiểm tra đã chụp trước đó, hoặc nhấp Upload Captures để tải lên hình ảnh từ máy tính của bạn
- Kết quả kiểm tra hiển thị cho mỗi ROI:
- Detected Text (hiển thị theo định dạng monospace/code)
- Confidence (thẻ mã hóa màu: xanh lá trên 80%, cam trên 50%, đỏ dưới 50%)
- Detection Count (số lượng vùng văn bản được tìm thấy)
7b. Những Điều Cần Lưu Ý
- Tính nhất quán: OCR có đọc cùng một văn bản mỗi lần cho cùng một bộ phận không?
- Độ chính xác: Các chuỗi được phát hiện có khớp với văn bản thực tế trên bộ phận không?
- Điểm confidence: Có liên tục trên 80% không? Confidence thấp thường cho thấy vấn đề về chất lượng hình ảnh.
- Các trường hợp đặc biệt: Kiểm tra với các bộ phận có văn bản bị nhòe, mờ hoặc bị che khuất một phần.
Nếu điểm confidence liên tục dưới 80%, hãy xem lại cài đặt hình ảnh của bạn (Bước 2). Độ chính xác của OCR liên quan trực tiếp đến chất lượng hình ảnh. Không có cách tinh chỉnh tham số nào có thể bù đắp cho một hình ảnh bị mờ hoặc thiếu ánh sáng.
Bước 8: Thiết Lập Quy Tắc Pass/Fail (IO Logic)
Sau khi OCR phát hiện văn bản chính xác, bạn cần xác định điều gì tạo nên pass hay fail. Điều hướng đến tab IO Logic.
Basic Mode
Basic Mode cung cấp giao diện UI dựa trên quy tắc đơn giản cho logic pass/fail của OCR. Không yêu cầu kiến thức về Node-RED.

Trang hiển thị:
- Các tab Preview / Test ở bên trái (để trực quan hóa kết quả theo các quy tắc của bạn)
- Phần OCR Rules ở bên phải
- Nút Save & Deploy để kích hoạt các quy tắc
- Nút Advanced Mode để chuyển sang Node-RED
Tạo Quy Tắc
Nhấp + Add rule để tạo quy tắc pass/fail. Mỗi quy tắc có ba trường:

| Trường | Mô tả |
|---|---|
| ROIs | ROI nào sẽ được đánh giá. Nhấp để mở rộng và chọn "All ROIs" hoặc chọn các vùng cụ thể. |
| Operator | Phép so sánh để thực hiện trên văn bản được phát hiện. |
| Text | Chuỗi văn bản mong đợi để so sánh. |
Các Operator Khả Dụng
Nhấp vào dropdown Operator để xem cả bốn tùy chọn:

| Operator | Hành vi | Ví dụ trường hợp sử dụng |
|---|---|---|
| = (equals) | Tất cả văn bản được phát hiện ghép lại phải khớp chính xác với văn bản mong đợi | Xác minh số sê-ri đọc chính xác "SN-2025-0042" |
| != (not equals) | Văn bản đã ghép KHÔNG được khớp với văn bản mong đợi | Loại bỏ các bộ phận có mã đã biết là lỗi |
| includes | Văn bản đã ghép phải chứa văn bản mong đợi như một chuỗi con | Kiểm tra rằng nhãn có chứa từ "SAFETY" ở đâu đó |
| not includes | Văn bản đã ghép KHÔNG được chứa văn bản mong đợi | Đảm bảo mã sản phẩm đã ngừng sử dụng không xuất hiện |
Cách So Sánh Văn Bản
Khi một ROI chứa nhiều vùng văn bản được phát hiện (ví dụ: bộ phát hiện tìm thấy "LOT" và "2025" như các từ riêng biệt), tất cả các chuỗi văn bản riêng lẻ được nối với nhau bằng dấu cách trước khi so sánh.
Vì vậy, nếu bộ phát hiện tìm thấy ba vùng văn bản đọc được "LOT", "2025" và "A1", văn bản đã nối trở thành "LOT 2025 A1". Quy tắc của bạn sẽ so sánh với chuỗi đã nối đầy đủ này.
Điều này có nghĩa là:
- Quy tắc equals cho
"LOT 2025 A1"sẽ đạt - Quy tắc includes cho
"2025"sẽ đạt - Quy tắc equals chỉ cho
"LOT"sẽ không đạt (vì văn bản đã nối bao gồm nhiều hơn chỉ "LOT")
Nhiều Quy Tắc
Bạn có thể thêm nhiều quy tắc bằng cách nhấp vào + Add rule một lần nữa. Tất cả các quy tắc sử dụng logic AND: mọi quy tắc đều phải đạt để kiểm tra OCR đạt. Nếu bất kỳ quy tắc đơn lẻ nào không đạt, toàn bộ quá trình kiểm tra sẽ không đạt.
Lựa Chọn ROI

Nhấp vào danh sách thả xuống ROIs để chọn vùng nào mà quy tắc áp dụng:
- All ROIs: Quy tắc đánh giá văn bản từ tất cả các vùng OCR được kết hợp
- Specific ROI: Mở rộng để chọn từng ROI riêng lẻ theo tên (đây là lý do tại sao việc đặt tên ROI một cách mô tả ở Bước 4f rất quan trọng)
Lưu và Triển Khai
Sau khi cấu hình các quy tắc của bạn, nhấp vào Save & Deploy để kích hoạt chúng. Các quy tắc sẽ có hiệu lực ngay lập tức cho tất cả các kiểm tra trong tương lai.
Chế Độ Nâng Cao (Node-RED)
Đối với logic pass/fail phức tạp hơn mà Chế Độ Cơ Bản không thể xử lý, hãy chuyển sang Advanced Mode.
Nhấp vào nút Advanced Mode để xem hộp thoại xác nhận:

Hộp thoại giải thích:
- Advanced Mode sử dụng môi trường lập trình trực quan Node-RED đầy đủ
- Bất kỳ quy tắc Chế Độ Cơ Bản nào sẽ bị vô hiệu hóa
- Bạn có thể chuyển trở lại Chế Độ Cơ Bản bất cứ lúc nào
Nhấp vào Switch to Advanced Mode (hoặc nếu bạn đã ở Chế Độ Nâng Cao, nút sẽ hiển thị Basic Mode).

Trong Chế Độ Nâng Cao, bạn sẽ thấy một canvas flow Node-RED với các node được dựng sẵn bao gồm:
- All Block Outputs: Nhận kết quả từ tất cả các khối AI (classification, segmentation, OCR, measurement)
- Check OCR (hoặc tương tự): Một function node chứa JavaScript để đánh giá kết quả OCR
- Classification Block Logic / Format Data for PLC / Trigger: Các node đầu ra khác để tích hợp
- Inspection Pass/Fail: Xác định pass/fail cuối cùng
- Save to Library: Lưu trữ kết quả
OCR Output Payload trong Node-RED
Trong Chế Độ Nâng Cao, kết quả OCR có sẵn trong đối tượng msg.payload.ocr. Điều này cho phép bạn truy cập đầy đủ về mặt lập trình vào mọi phát hiện:
{
"predictions": [
{
"roi_id": 1,
"roi_name": "Serial Number",
"center_x_global": 450,
"center_y_global": 220,
"angle_global": 90,
"search_area_id": 1,
"detections": [
{
"text": "SN-2025-0042",
"confidence": 0.95,
"roi_bbox": {
"x": 10,
"y": 5,
"width": 120,
"height": 30,
"angle": 0
},
"global_bbox": {
"x": 450,
"y": 220,
"width": 120,
"height": 30,
"angle": 90
}
}
]
}
]
}
| Trường | Mô tả |
|---|---|
| roi_id | ID số của ROI đã tạo ra kết quả này |
| roi_name | Tên bạn đã đặt cho ROI (ví dụ: "Serial Number") |
| center_x_global / center_y_global | Vị trí trung tâm của ROI trong tọa độ khung hình đầy đủ |
| angle_global | Góc xoay của ROI trong khung hình đầy đủ |
| search_area_id | Loại kiểm tra / vùng tìm kiếm mà ROI này thuộc về |
| detections | Mảng các phát hiện văn bản riêng lẻ được tìm thấy trong ROI này |
| detections[].text | Chuỗi văn bản đã nhận diện |
| detections[].confidence | Độ tin cậy nhận diện từ 0.0 đến 1.0 (được giới hạn) |
| detections[].roi_bbox | Vị trí bounding box tương đối với gốc cắt ROI |
| detections[].global_bbox | Vị trí bounding box trong khung camera đầy đủ (tính đến xoay ROI và căn chỉnh) |
Sử dụng msg.payload.ocr.predictions[0].detections.map(d => d.text).join(" ") để có cùng chuỗi văn bản đã nối mà Chế Độ Cơ Bản sử dụng để so sánh.
Với Chế Độ Nâng Cao, bạn có thể:
- Áp dụng các mẫu regex cho văn bản đã phát hiện bằng JavaScript
- Lọc các phát hiện theo ngưỡng độ tin cậy
- Kết hợp kết quả OCR với kết quả classification/segmentation cho logic phức tạp
- Định dạng văn bản OCR cho đầu ra PLC (ví dụ: gửi số serial đã phát hiện qua EtherNet/IP)
- Gửi tin nhắn tùy chỉnh đến Microsoft Teams hoặc email dựa trên nội dung OCR
Để xem hướng dẫn chi tiết về Node-RED, hãy xem Node-RED Basics.
Bạn có thể chuyển đổi giữa Chế Độ Cơ Bản và Nâng Cao bất cứ lúc nào bằng cách sử dụng nút chuyển đổi ở đầu trang IO Logic. Khi chuyển sang Chế Độ Cơ Bản, bất kỳ logic Node-RED đã triển khai nào sẽ bị vô hiệu hóa và được thay thế bằng các quy tắc Chế Độ Cơ Bản. Khi chuyển trở lại, flow Node-RED sẽ được khôi phục.
Bước 9: Triển Khai Recipe
Sau khi thiết lập OCR hoàn tất và đã được kiểm tra:
- Quay lại Recipe Editor (nhấp Recipe Editor trên thanh bên trái)
- Nhấp nút màu tím Deploy Recipe ở góc dưới bên phải
- Recipe hiện đang hoạt động và thực hiện kiểm tra
Xem Kết Quả
HMI
Trang HMI hiển thị kết quả kiểm tra trực tiếp. Khi OCR đang hoạt động, bạn sẽ thấy:
- Luồng camera trực tiếp với các khung bao màu tím xung quanh văn bản được phát hiện
- Nhãn văn bản hiển thị nội dung đã đọc được
- Trạng thái pass/fail dựa trên các quy tắc IO Logic của bạn
- Thống kê đang chạy: tổng số lần kiểm tra, đạt, lỗi, tỷ lệ yield

Library
Điều hướng đến Library trên thanh bên trái để xem lại các kết quả đã lưu từ những lần chụp trước. Mỗi mục chụp hiển thị:
- Hình ảnh đã chụp với lớp phủ OCR
- Văn bản được phát hiện theo mỗi ROI
- Điểm tin cậy (confidence score)
- Kết quả pass/fail
Khắc Phục Sự Cố
Không phát hiện được văn bản
| Nguyên nhân có thể | Cách khắc phục |
|---|---|
| ROI không được đặt trên văn bản | Đặt lại vị trí ROI trong Inspection Setup |
| Hướng ROI không khớp với hướng văn bản | Xoay ROI để căn chỉnh với hướng văn bản (Bước 4d) |
| Văn bản quá nhỏ trong hình ảnh | Di chuyển camera lại gần hơn hoặc dùng ống kính có tiêu cự dài hơn |
| Văn bản quá nhỏ so với ROI | Thu hẹp ROI ôm sát khu vực văn bản |
| Min Text Area quá cao | Giảm thông số Min Text Area |
| Ánh sáng kém / độ tương phản thấp | Cải thiện ánh sáng để tối đa hóa độ tương phản giữa văn bản và nền |
| Văn bản bị mờ | Điều chỉnh tiêu cự trên ống kính C-mount và xác nhận giá đỡ camera ổn định |
| Chưa thiết lập căn chỉnh | Phát hiện văn bản yêu cầu căn chỉnh. Thiết lập căn chỉnh template (Bước 3) |
Phát hiện sai văn bản (đọc nhầm)
| Nguyên nhân có thể | Cách khắc phục |
|---|---|
| Hướng ROI không khớp với hướng văn bản | Đây là nguyên nhân hàng đầu. Xoay ROI để căn chỉnh với hướng văn bản (Bước 4d) |
| Chất lượng hình ảnh thấp hoặc nhiễu | Tăng exposure, giảm gain, cải thiện ánh sáng |
| Text Segmentation Threshold quá thấp | Tăng để lọc bỏ các phát hiện văn bản sai |
| Các vùng văn bản chồng lấp gộp thành một phát hiện | Giảm Unclip Ratio để ngăn các khung bị gộp |
| Nhiều dòng văn bản trong một ROI | Tạo các ROI riêng cho từng dòng nếu thứ tự đọc quan trọng |
Độ tin cậy OCR luôn ở mức thấp
| Nguyên nhân có thể | Cách khắc phục |
|---|---|
| Ánh sáng không đồng đều | Đảm bảo chiếu sáng đồng đều trên toàn bộ khu vực văn bản |
| Lóa hoặc phản xạ trên văn bản (đặc biệt với nhãn bóng) | Điều chỉnh góc chiếu sáng để loại bỏ phản xạ gương. Cân nhắc dùng ánh sáng khuếch tán. |
| Font chữ rất nhỏ hoặc cách điệu cao | Di chuyển camera lại gần hơn hoặc dùng ống kính có tiêu cự dài hơn để tăng kích thước văn bản trong hình ảnh |
| Văn bản bị hỏng, phai mờ hoặc in không đầy đủ | OCR chỉ có thể đọc những gì camera nhìn thấy. Nếu văn bản bị xuống cấp vật lý, độ chính xác sẽ thấp hơn. |
| Gain cao trong cài đặt hình ảnh | Giảm gain. Gain cao tạo ra nhiễu trông giống như artifact văn bản. |
Quy tắc pass/fail không hoạt động như mong đợi
| Nguyên nhân có thể | Cách khắc phục |
|---|---|
| Văn bản được ghép theo cách khác mong đợi | Bật Live Preview và kiểm tra chính xác văn bản nào đang được phát hiện. Lưu ý rằng nhiều phát hiện được ghép lại bằng dấu cách. |
| Dùng "equals" trong khi "includes" phù hợp hơn | Nếu bạn chỉ quan tâm đến một chuỗi con, dùng "includes" thay vì "equals" |
| Quy tắc chưa được triển khai | Nhấp Save & Deploy sau khi thay đổi quy tắc trong Basic Mode |
| Chọn sai ROI trong quy tắc | Kiểm tra dropdown ROIs trong quy tắc của bạn để đảm bảo nó nhắm đúng vùng |
Hạn Chế
- Tối đa 1 khối OCR cho mỗi recipe (bạn có thể có nhiều ROI trong khối đó)
- Chỉ tối ưu cho model tiếng Anh: Model được huấn luyện sẵn được tối ưu hóa cho văn bản in dựa trên ký tự Latin. Văn bản viết tay, chữ thảo hoặc các bảng chữ cái không phải Latin (Trung Quốc, Nhật Bản, Hàn Quốc, Ả Rập) không được hỗ trợ.
- Không hỗ trợ regex hoặc khớp mẫu trong Basic Mode: Các quy tắc pass/fail sử dụng so sánh chuỗi đơn giản (equals, not equals, includes, not includes). Đối với các mẫu xác thực phức tạp (ví dụ: khớp "SN-####-####"), hãy sử dụng Advanced Mode (Node-RED) với regex JavaScript tùy chỉnh.
- Không có bộ ký tự có thể cấu hình bởi người dùng: Từ điển 480 ký tự của model là cố định. Ví dụ, bạn không thể giới hạn nhận dạng chỉ với chữ số. Hãy sử dụng các quy tắc pass/fail để xác thực định dạng mong đợi.
- Không đảm bảo thứ tự văn bản: Khi nhiều vùng văn bản được phát hiện trong một ROI, chúng được nối theo thứ tự phát hiện (theo đường viền), không nhất thiết theo thứ tự đọc (trái sang phải, trên xuống dưới). Nếu thứ tự đọc quan trọng, hãy sử dụng các ROI riêng biệt cho mỗi dòng văn bản.
- Chỉ sử dụng model được huấn luyện sẵn: Không giống như classification và segmentation, model OCR không thể được huấn luyện lại hoặc tinh chỉnh trên các phông chữ hoặc kiểu văn bản cụ thể của bạn. Nó sử dụng model OCR được huấn luyện sẵn tích hợp.
Xem Thêm
- Tạo Inspection Đầu Tiên - Hướng dẫn đầy đủ về tạo recipe
- Cài Đặt Hình Ảnh - Hướng dẫn thiết lập chụp ảnh chi tiết
- Alignment - Tìm hiểu sâu về căn chỉnh template
- Regions of Interest (ROI) - Kích thước và chiến lược ROI
- Thiết Lập Inspection và Các Loại ROI - Tham khảo các loại ROI
- Kiến Thức Cơ Bản về Node-RED - Lập trình logic IO nâng cao
- Nguyên Tắc Cơ Bản về Thiết Lập Chụp Ảnh - Lý thuyết về ánh sáng và chất lượng hình ảnh