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ący TextInLine (tekst linii) oraz Line (System.Drawing.Rectangle podają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:

ConditionException
input jest nullArgumentNullException
Pole InputType obiektu input nie jest SingleImage ani PDFNotSupportedException
Ścieżka dodana przez OcrInput.Add() nie istnieje na dyskuFileNotFoundException

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

  • OcrOutput jest pusty (Count == 0), jeśli OcrInput nie ma dodanych plików — sprawdź Count przed indeksowaniem.
  • RecognitionResult.LinesResult jest zagnieżdżony w RecognitionResult; nazwa typu najwyższego poziomu LinesResult sama w sobie nie jest rozwiązywalnym typem poza tym zagnieżdżeniem.

Typowe problemy

ProblemPrzyczynaNapraw
ArgumentNullException na Recognize()Przekazano null zamiast OcrInputZawsze twórz OcrInput przed wywołaniem Recognize()
NotSupportedException na Recognize()OcrInput został skonstruowany z typem wejścia innym niż SingleImage/PDFTylko InputType.SingleImage i InputType.PDF są prawidłowe
FileNotFoundException na Recognize()Kolejkowana ścieżka nie istniejeSprawdź ś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/MetodaOpis
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)
OcrOutputList<RecognitionResult> zwrócone przez Recognize()
RecognitionResult.RecognitionTextPełny rozpoznany tekst dla jednego obrazu/strony
RecognitionResult.RecognitionLinesResultList<RecognitionResult.LinesResult>
RecognitionResult.LinesResult.TextInLineRozpoznany tekst dla jednej linii
RecognitionResult.LinesResult.LineSystem.Drawing.Rectangle pole ograniczające dla jednej linii

Zobacz także

 Polski