Cách Nhận Dạng Hoạt Động

Cách Nhận Dạng Hoạt Động

Cách Nhận Diện Hoạt Động

Trang này hướng dẫn chi tiết những gì AsposeOcr.Recognize() thực sự thực hiện bên trong, từ việc xác thực đầu vào đến RecognitionResult cuối cùng. Gọi AsposeOcr.Recognize(OcrInput) sẽ chạy một pipeline cố định gồm tám bước. Mỗi bước dưới đây dựa trên triển khai riêng của thư viện — không có giai đoạn nào có thể cấu hình.


1. Xác Thực Đầu Vào

Trước khi bất kỳ mô hình nào được tải, Recognize() xác thực OcrInput: nó từ chối đầu vào null (ArgumentNullException), InputType không được hỗ trợ (NotSupportedException), và bất kỳ đường dẫn nào trong hàng đợi không tồn tại trên đĩa (FileNotFoundException). Không có phiên ONNX nào được tạo cho đến khi mọi đầu vào đều đạt.

2. Kết Xuất PDF hoặc Tải Raster

Đối với InputType.PDF, mỗi trang được hiển thị thành một hình ảnh RGB 24-bit tại 150 DPI using Aspose.PDF.FOSS. Đối với InputType.SingleImage, tệp raster được tải trực tiếp. Độ phân giải hiển thị 150 DPI là cố định và không thể cấu hình.

3. Tiền Xử Lý Bộ Phát Hiện

Hình ảnh được chuyển đổi sang thang độ xám bằng cách sử dụng Rec. 709 trọng số luma, giúp bảo toàn độ sáng cảm nhận chính xác hơn so với trung bình kênh đơn giản. Nếu cạnh dài nhất của hình ảnh vượt quá 1000 pixel, nó sẽ được thu nhỏ bằng một bộ lọc separable Lanczos-8 bộ lọc (hai lượt một chiều) để khớp với tiền xử lý trong thời gian huấn luyện của mô hình phát hiện. Một dải trắng 32 pixel được thêm vào phía dưới ảnh vì cùng lý do.

4. Phát hiện vùng

Hình ảnh đã được tiền xử lý được đưa qua mô hình ONNX nhúng đầu tiên, mô hình này tạo ra các bản đồ xác suất văn bản và các đặc trưng hình ảnh trung gian. Một mô hình ONNX thứ hai — mô hình tinh chỉnh — tăng cường các liên kết giữa các ký tự liền kề để một dòng văn bản đầy đủ được phát hiện như một vùng duy nhất thay vì nhiều mảnh. Cả hai mô hình đều chạy trên CPU với Microsoft.ML.OnnxRuntime được cấu hình cho 8 luồng công nhân nội-operation.

5. Xử lý hậu kỳ vùng

Các bản đồ xác suất văn bản và liên kết của bộ phát hiện được ngưỡng, sau đó nhóm lại bằng thuật toán flood fill duyệt rộng theo chiều rộng bốn kết nối. Mỗi vùng thu được được mở rộng, khớp với một hình chữ nhật có diện tích tối thiểu, thu lại về tọa độ của ảnh gốc, và rút gọn thành các hình chữ nhật dòng thẳng, không lồng nhau và căn trục. Những hình chữ nhật này là những gì RecognitionResult.LinesResult.Line cuối cùng trả về.

6. Nhận dạng dòng

Mỗi hình chữ nhật được phát hiện được đệm thêm hai pixel, cắt ra khỏi ảnh nguồn, và thay đổi kích thước — giữ nguyên tỷ lệ khung hình — lên một 1200×32 bức vải trắng. Kết quả được chuyển đổi thành tensor ảnh xám dạng NHWC và truyền vào mô hình nhận dạng.

7. Giải mã CTC

Đầu ra thô của mô hình nhận dạng được giải mã bằng phương pháp greedy CTC (Phân loại Thời gian Kết nối) giải mã: các lớp dự đoán lặp lại được gộp lại, lớp trống bị loại bỏ, và các lớp còn lại được ánh xạ qua bảng chữ cái Latin được nhúng trong mô hình để tạo ra văn bản đã nhận dạng của dòng.

8. Lắp ráp kết quả

Các dòng đã nhận dạng được ghép cặp với các hình chữ nhật nguồn ảnh của chúng để xây dựng mỗi RecognitionResult.LinesResult. Tất cả các dòng không rỗng được nối bằng ký tự ngắt dòng của nền tảng để tạo ra RecognitionResult.RecognitionText.


Công việc tuần tự vs. song song

Các tệp đầu vào và, đối với PDF, các trang riêng lẻ được xử lý sequentially — không có đa luồng ở mức đầu vào API. Độ song song chỉ tồn tại bên trong mỗi lời gọi suy luận ONNX, nơi Microsoft.ML.OnnxRuntime song song hoá việc thực thi đồ thị trên 8 luồng intra-operation đã cấu hình.

Xem thêm

 Tiếng Việt