Núcleo API

API de núcleo

Esta página cobre o ciclo de vida dos objetos e o comportamento de exceções dos quatro tipos principais: AsposeOcr, OcrInput, OcrOutput e RecognitionResult.


Ciclo de vida do OcrInput

OcrInput implementa IDisposable e deve ser criado em uma declaração using. Seu construtor recebe um InputType (InputType.SingleImage ou InputType.PDF), e OcrInput.Add(string) enfileira um caminho de arquivo por vez — a mesma instância OcrInput pode conter vários arquivos desse mesmo tipo de entrada.

using Aspose.OCR;

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

Reconhecendo e lendo OcrOutput

AsposeOcr.Recognize(OcrInput) retorna um OcrOutput, que é um List<RecognitionResult> — indexável como qualquer lista, com um RecognitionResult por imagem (para InputType.SingleImage, um por arquivo adicionado) ou por página PDF (para InputType.PDF).

var api = new AsposeOcr();
OcrOutput output = api.Recognize(input);
RecognitionResult first = output[0];

RecognitionResult e o Tipo LinesResult Aninhado

RecognitionResult.LinesResult é uma classe aninhada — referencie-a como RecognitionResult.LinesResult, não como um tipo independente. Cada RecognitionResult expõe:

  • RecognitionText — o texto reconhecido completo para essa imagem ou página, com linhas unidas por quebras de linha.
  • RecognitionLinesResult — um List<RecognitionResult.LinesResult>, uma entrada por linha de texto detectada, cada uma com TextInLine (o texto da linha) e Line (um System.Drawing.Rectangle que fornece as coordenadas de pixel dessa linha na imagem de origem).
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}");
}

Exceções

AsposeOcr.Recognize(OcrInput) valida sua entrada antes de executar o reconhecimento:

ConditionException
input é nullArgumentNullException
O InputType de input não é SingleImage nem PDFNotSupportedException
Um caminho adicionado via OcrInput.Add() não existe no discoFileNotFoundException

Essas verificações são executadas antes de qualquer inferência de modelo, portanto uma entrada inválida falha imediatamente em vez de após uma passagem parcial de reconhecimento.


Dicas e Melhores Práticas

  • OcrOutput está vazio (Count == 0) se OcrInput não tem arquivos adicionados — verifique Count antes da indexação.
  • RecognitionResult.LinesResult está aninhado dentro de RecognitionResult; o nome do tipo de nível superior LinesResult sozinho não é um tipo resolvível fora desse aninhamento.

Problemas Comuns

ProblemaCausaCorrigir
ArgumentNullException em Recognize()null foi passado em vez de um OcrInputSempre construa um OcrInput antes de chamar Recognize()
NotSupportedException em Recognize()OcrInput foi construído com um tipo de entrada diferente de SingleImage/PDFSomente InputType.SingleImage e InputType.PDF são válidos
FileNotFoundException em Recognize()Um caminho enfileirado não existeValide os caminhos dos arquivos antes de chamar OcrInput.Add()

FAQ

É RecognitionResult.LinesResult uma classe de nível superior própria?

Não — está aninhado dentro de RecognitionResult. Referencie-o como RecognitionResult.LinesResult.

O OcrOutput garante a ordem das páginas para PDFs?

Sim — para InputType.PDF, OcrOutput devolve um RecognitionResult por página na ordem original.

O que acontece se eu chamar Recognize() com um OcrInput vazio?

Ele retorna um OcrOutput com Count == 0 ao invés de lançar.


API Reference Resumo

Classe/MétodoDescrição
AsposeOcr.Recognize(OcrInput)Valida e reconhece; lança ArgumentNullException, NotSupportedException ou FileNotFoundException em entrada inválida
OcrInput.OcrInput(InputType)Constrói um contêiner de entrada para um tipo de entrada
OcrInput.Add(string)Enfileira um caminho de arquivo
OcrInput.Dispose()Libera recursos (via IDisposable)
OcrOutputList<RecognitionResult> retornado por Recognize()
RecognitionResult.RecognitionTextTexto reconhecido completo para uma imagem/página
RecognitionResult.RecognitionLinesResultList<RecognitionResult.LinesResult>
RecognitionResult.LinesResult.TextInLineTexto reconhecido para uma linha
RecognitionResult.LinesResult.LineSystem.Drawing.Rectangle caixa delimitadora para uma linha

Ver também

 Português