Cách xử lý hàng loạt nhiều hình ảnh với Aspose.OCR FOSS for .NET

Cách xử lý hàng loạt nhiều hình ảnh với Aspose.OCR FOSS for .NET

Aspose.OCR FOSS cho .NET có thể nhận dạng nhiều hình ảnh trong một lần gọi Recognize(). Hướng dẫn này chỉ cách xếp hàng nhiều tệp vào một OcrInput duy nhất và đọc lại kết quả của chúng theo thứ tự.

Hướng Dẫn Từng Bước

Bước 1: Cài Đặt Gói

dotnet add package Aspose.OCR.FOSS

Bước 2: Thêm Nhiều Tệp Vào Một OcrInput

Tất cả các tệp được thêm vào cùng một OcrInput phải có cùng InputType. Chúng được xử lý tuần tự và trả về theo thứ tự mà chúng được thêm vào.

using Aspose.OCR;

var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");

Bước 3: Nhận dạng và Đọc Kết quả theo Thứ tự

Gọi AsposeOcr.Recognize() một lần cho toàn bộ lô, sau đó lặp OcrOutput theo chỉ số để ghép mỗi kết quả lại với tệp mà nó xuất phát.

OcrOutput output = api.Recognize(input);

for (int index = 0; index < output.Count; index++)
{
    Console.WriteLine($"Image {index + 1}");
    Console.WriteLine(output[index].RecognitionText);
}

OcrOutput là một danh sách có thứ tự của RecognitionResult, với một mục cho mỗi hình ảnh theo thứ tự mà OcrInput.Add() được gọi.


Bước 4: Thay vào đó, Gộp một PDF Đa Trang

Mô hình gộp tương tự áp dụng cho PDF: xây dựng OcrInput với InputType.PDF, thêm một đường dẫn PDF, và Recognize() trả về một RecognitionResult cho mỗi trang, theo thứ tự trang.

using var pdfInput = new OcrInput(InputType.PDF);
pdfInput.Add("multi-page-document.pdf");
OcrOutput pages = api.Recognize(pdfInput);
Console.WriteLine($"Pages recognized: {pages.Count}");

Các Vấn đề Thường gặp và Giải pháp

Mixing InputType.SingleImage and InputType.PDF đường dẫn trong một OcrInput. Không được hỗ trợ — mỗi OcrInput được xây dựng bằng một InputType và chỉ chấp nhận các tệp thuộc loại đó. Sử dụng hai riêng biệt OcrInput đối tượng (và hai Recognize() lần gọi) nếu bạn cần xử lý cả hình ảnh và PDF cùng lúc.

Kết quả xuất hiện không theo thứ tự. Chúng không nên — OcrOutput giữ nguyên thứ tự chính xác OcrInput.Add() đã được gọi vào. Nếu các tệp xuất hiện bị sắp xếp lại, hãy kiểm tra xem mã gọi có thêm chúng theo thứ tự mong muốn trước khi gọi hay không Recognize().

Một tệp hỏng sẽ làm toàn bộ lô thất bại. Recognize() kiểm tra mọi đường dẫn đã xếp hàng trước khi chạy bất kỳ suy luận mô hình nào; nếu bất kỳ đường dẫn nào không tồn tại, toàn bộ cuộc gọi sẽ ném lỗi FileNotFoundException thay vì bỏ qua tệp đó. Hãy tự kiểm tra các đường dẫn trước nếu kết quả một phần từ một lô lớn là chấp nhận được.

Câu hỏi thường gặp

Việc batch có chạy các tệp song song không?

Không. Các tệp và trang PDF được xử lý tuần tự — không có đa luồng ở mức đầu vào API. Microsoft.ML.OnnxRuntime chỉ song song hoá công việc bên trong mỗi lời gọi suy luận riêng lẻ.

Có giới hạn về số lượng tệp mà một OcrInput có thể chứa không?

Phiên bản công khai API không ghi lại giới hạn cố định; OcrInput.Add() chỉ đơn giản xếp hàng một đường dẫn. Các lô rất lớn được xử lý từng tệp một, vì vậy thông lượng tăng theo tỷ lệ tuyến tính, không phải song song.

Tôi có thể tái sử dụng cùng một instance AsposeOcr cho nhiều lô không?

Có — AsposeOcr tự nó không giữ trạng thái per-call; việc tạo một OcrInput mới cho mỗi lô và gọi Recognize() trên cùng một thể hiện AsposeOcr là một mẫu thông thường.

Xem thêm

 Tiếng Việt