Rdzeń API
Podstawowe API
Ta strona opisuje cykl życia obiektów i zachowanie wyjątków czterech podstawowych typów: AsposeOcr, OcrInput, OcrOutput i RecognitionResult.
Cykl życia OcrInput
OcrInput implementuje IDisposable i powinien być tworzony w instrukcji using. Jego konstruktor przyjmuje InputType (InputType.SingleImage lub InputType.PDF), a OcrInput.Add(string) kolejkowuje jedną ścieżkę pliku na raz — ta sama instancja OcrInput może przechowywać wiele plików tego samego typu wejściowego.
using Aspose.OCR;
using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");Rozpoznawanie i odczytywanie OcrOutput
AsposeOcr.Recognize(OcrInput) zwraca OcrOutput, który jest List<RecognitionResult> — indeksowalny jak każda lista, z jednym RecognitionResult na obraz (dla InputType.SingleImage, po jednym na dodany plik) lub na stronę PDF (dla InputType.PDF).
var api = new AsposeOcr();
OcrOutput output = api.Recognize(input);
RecognitionResult first = output[0];RecognitionResult i zagnieżdżony typ LinesResult
RecognitionResult.LinesResult jest klasą zagnieżdżoną — odwołuj się do niej jako RecognitionResult.LinesResult, a nie jako do samodzielnego typu. Każdy RecognitionResult udostępnia:
RecognitionText— pełny rozpoznany tekst dla tego obrazu lub strony, z liniami połączonymi znakami nowej linii.RecognitionLinesResult—List<RecognitionResult.LinesResult>, jeden wpis na wykrytą linię tekstu, każdy zawierającyTextInLine(tekst linii) orazLine(System.Drawing.Rectanglepodające współrzędne pikseli tej linii w obrazie źródłowym).
RecognitionResult result = output[0];
Console.WriteLine(result.RecognitionText);
foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
System.Drawing.Rectangle bounds = line.Line;
Console.WriteLine($"x={bounds.X}, y={bounds.Y}: {line.TextInLine}");
}Wyjątki
AsposeOcr.Recognize(OcrInput) waliduje swoje dane wejściowe przed uruchomieniem rozpoznawania:
| Condition | Exception |
|---|---|
input jest null | ArgumentNullException |
Pole InputType obiektu input nie jest SingleImage ani PDF | NotSupportedException |
Ścieżka dodana przez OcrInput.Add() nie istnieje na dysku | FileNotFoundException |
Te kontrole są wykonywane przed jakąkolwiek inferencją modelu, więc niepoprawne dane wejściowe odrzucane są natychmiast, a nie po częściowym przebiegu rozpoznawania.
Wskazówki i najlepsze praktyki
OcrOutputjest pusty (Count == 0), jeśliOcrInputnie ma dodanych plików — sprawdźCountprzed indeksowaniem.RecognitionResult.LinesResultjest zagnieżdżony wRecognitionResult; nazwa typu najwyższego poziomuLinesResultsama w sobie nie jest rozwiązywalnym typem poza tym zagnieżdżeniem.
Typowe problemy
| Problem | Przyczyna | Napraw |
|---|---|---|
ArgumentNullException na Recognize() | Przekazano null zamiast OcrInput | Zawsze twórz OcrInput przed wywołaniem Recognize() |
NotSupportedException na Recognize() | OcrInput został skonstruowany z typem wejścia innym niż SingleImage/PDF | Tylko InputType.SingleImage i InputType.PDF są prawidłowe |
FileNotFoundException na Recognize() | Kolejkowana ścieżka nie istnieje | Sprawdź ścieżki plików przed wywołaniem OcrInput.Add() |
FAQ
Czy RecognitionResult.LinesResult jest własną klasą najwyższego poziomu?
Nie — jest zagnieżdżona w RecognitionResult. Odwołuj się do niej jako RecognitionResult.LinesResult.
Czy OcrOutput zapewnia kolejność stron w plikach PDF?
Tak — dla InputType.PDF, OcrOutput zwraca jeden RecognitionResult na stronę w kolejności źródłowej.
Co się stanie, jeśli wywołam Recognize() z pustym OcrInput?
Zwraca OcrOutput z Count == 0 zamiast rzucać.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
AsposeOcr.Recognize(OcrInput) | Waliduje i rozpoznaje; zgłasza ArgumentNullException, NotSupportedException lub FileNotFoundException przy nieprawidłowym wejściu |
OcrInput.OcrInput(InputType) | Tworzy kontener wejściowy dla jednego typu wejścia |
OcrInput.Add(string) | Kolejkuje ścieżkę pliku |
OcrInput.Dispose() | Zwalnia zasoby (przez IDisposable) |
OcrOutput | List<RecognitionResult> zwrócone przez Recognize() |
RecognitionResult.RecognitionText | Pełny rozpoznany tekst dla jednego obrazu/strony |
RecognitionResult.RecognitionLinesResult | List<RecognitionResult.LinesResult> |
RecognitionResult.LinesResult.TextInLine | Rozpoznany tekst dla jednej linii |
RecognitionResult.LinesResult.Line | System.Drawing.Rectangle pole ograniczające dla jednej linii |