Cách làm việc với Aspose.OCR FOSS Core API trong .NET
Aspose.OCR FOSS cho .NET nhận dạng văn bản trong hình ảnh raster và tài liệu PDF thông qua một lõi API nhỏ: AsposeOcr, OcrInput, OcrOutput, và RecognitionResult. Hướng dẫn này sẽ đi qua quá trình cài đặt gói và sử dụng lõi API đó từ đầu đến cuối.
Hướng dẫn từng bước
Bước 1: Cài đặt gói
dotnet add package Aspose.OCR.FOSSBước 2: Nhập không gian tên
Thêm không gian tên Aspose.OCR vào bất kỳ tệp nguồn nào gọi AsposeOcr, OcrInput, hoặc RecognitionResult:
using Aspose.OCR;Không gian tên duy nhất này cung cấp AsposeOcr, OcrInput, OcrOutput, InputType và RecognitionResult.
Bước 3: Xây dựng một OcrInput và Nhận dạng một Hình ảnh
Xây dựng một AsposeOcr, tạo một OcrInput với InputType.SingleImage, đặt vào hàng đợi một tệp với OcrInput.Add(), và gọi AsposeOcr.Recognize().
var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("scan.png");
RecognitionResult result = api.Recognize(input)[0];
Console.WriteLine(result.RecognitionText);Bước 4: Đọc các Dòng Riêng lẻ và các Hộp Bao
Mỗi mục RecognitionResult.LinesResult trong RecognitionLinesResult chứa văn bản của một dòng (TextInLine) và hộp bao tọa độ pixel của nó (Line).
foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
System.Drawing.Rectangle bounds = line.Line;
Console.WriteLine($"x={bounds.X}, y={bounds.Y}: {line.TextInLine}");
}Bước 5: Nhận dạng một PDF Đa Trang
Đối với InputType.PDF, AsposeOcr.Recognize() trả về một RecognitionResult cho mỗi trang, theo thứ tự nguồn.
using var pdfInput = new OcrInput(InputType.PDF);
pdfInput.Add("document.pdf");
OcrOutput output = api.Recognize(pdfInput);
foreach (RecognitionResult page in output)
{
Console.WriteLine(page.RecognitionText);
}Các vấn đề thường gặp và cách khắc phục
NotSupportedException khi gọi Recognize(). Cái OcrInput được xây dựng với kiểu đầu vào khác với InputType.SingleImage or InputType.PDF. Chỉ hỗ trợ hai kiểu đầu vào đó.
FileNotFoundException khi gọi Recognize(). Một đường dẫn được thêm qua OcrInput.Add() không tồn tại trên đĩa. Xác nhận lại đường dẫn trước khi gọi Add().
ArgumentNullException khi gọi Recognize(). null được truyền thay vì một OcrInput đối tượng. Luôn tạo một OcrInput đầu tiên.
Empty RecognitionLinesResult. Không phát hiện dòng văn bản nào — xác nhận rằng hình ảnh nguồn chứa văn bản có thể đọc được, không bị xoay và sử dụng chữ Latin.
Câu hỏi thường gặp
Liệu OcrOutput có giữ thứ tự tệp không?
Có. OcrOutput là một danh sách các RecognitionResult, mỗi mục cho một hình ảnh (hoặc mỗi trang PDF), theo thứ tự các tệp được thêm qua OcrInput.Add().
Tôi có cần giải phóng OcrInput không?
Có — OcrInput thực thi IDisposable. Sử dụng câu lệnh using hoặc gọi Dispose() một cách rõ ràng sau khi nhận dạng hoàn tất.
Tôi có thể xử lý cả hình ảnh và PDF trong cùng một OcrInput không?
Không — mỗi OcrInput được xây dựng với một InputType duy nhất (SingleImage hoặc PDF) và chỉ chấp nhận các tệp thuộc loại đó.