IRONSOFTWAREHOME

Como ler fluxos de dados em C# para OCR

Curtis Chau
Curtis Chau
Updated: 4 de junho de 2026

IronOCR lê dados de imagem diretamente de streams em C# passando o stream para os construtores OcrInput ou OcrImageInput, permitindo um processamento OCR eficiente sem salvar arquivos no disco.

Um fluxo é um fluxo contínuo de informação binária que pode ser lida ou escrita. Em programação, os fluxos processam de forma eficiente dados que são muito grandes para a memória, dividindo-os em partes gerenciáveis.

Os métodos de importação do IronOCR aceitam fluxos de dados de imagem diretamente. Passe os dados do fluxo para um método de importação, que lidará automaticamente com todas as etapas necessárias. Para cenários avançados, explore a Classe OcrInput que fornece opções extensas para preparar vários formatos de entrada.

Início rápido: Use um fluxo para entrada OCR em segundos

Este exemplo demonstra OCR imediato alimentando um System.IO.Stream no IronOCR, pulando caminhos de arquivos e recuperando texto reconhecido com o mínimo de código.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Copie e execute este trecho de código.

    using var input = new IronOcr.OcrInput(stream);
    var result = new IronOcr.IronTesseract().Read(input);
    C#
  3. 3Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita
    arrow pointer

Como faço para ler fluxos de dados com o IronOCR?

Primeiro, instancie a classe IronTesseract para realizar OCR. Use o método FromFile de AnyBitmap para importar o arquivo de imagem. Este objeto AnyBitmap converte os dados da imagem em um stream. Em seguida, use a declaração using para criar o objeto OcrImageInput passando o stream da imagem com o método GetStream. Finalmente, use o método Read para realizar OCR.

using IronOcr;
using IronSoftware.Drawing;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Read image file to AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

// Import image stream
using var imageInput = new OcrImageInput(anyBitmap.GetStream());
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

O OCR baseado em fluxo beneficia aplicações web que recebem uploads de imagens, processam imagens de bancos de dados ou lidam com dados temporários que não devem ser gravados em disco. A abordagem de stream integra-se perfeitamente com objetos System.Drawing e outras bibliotecas de manipulação de imagem.

Por que usar fluxos de dados para OCR?

Trabalhar com fluxos oferece diversas vantagens para desenvolvedores .NET:

  1. Eficiência de Memória: Processe dados em partes em vez de carregar arquivos inteiros na memória
  2. Segurança: Processe documentos sensíveis sem criar arquivos temporários no disco
  3. Desempenho: Elimine o overhead de I/O de operações do sistema de arquivos
  4. Flexibilidade: Trabalhe com uploads da web, BLOBs de banco de dados e transformações em memória

Para processar documentos com várias páginas ou lidar com fluxos de PDF , o IronOCR mantém a mesma API simples, ao mesmo tempo que oferece um desempenho robusto. Ao trabalhar com documentos digitalizados, você também pode aproveitar os recursos do IronOCR para ler documentos digitalizados de forma eficiente por meio do processamento de fluxo.

Como posso especificar uma região de digitalização para OCR de fluxo?

Para melhorar o desempenho em grandes imagens e obter leituras específicas de certas regiões, utilize a classe CropRectangle. O construtor OcrImageInput aceita um objeto CropRectangle como segundo parâmetro, permitindo especificar qual região do documento de imagem deve ser lida. O exemplo de código abaixo especifica que apenas o número do capítulo e a região do título devem ser lidos.

using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Read image file to AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

// Add image
using var imageInput = new OcrImageInput(anyBitmap.GetStream(), ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output the result to console
Console.WriteLine(ocrResult.Text);

Essa técnica é particularmente útil quando você precisa realizar OCR em uma região específica de uma imagem ou ao lidar com documentos estruturados onde o texto aparece em locais previsíveis. Para cenários mais complexos envolvendo tabelas ou dados estruturados, explore como ler tabelas em documentos .

Qual é a aparência da região escaneada na saída?

Demonstração de OCR: documento no Visualizador de Fotos com o texto extraído 'Capítulo Oito: A Festa de Aniversário de Morte' exibido no console de depuração.

Que técnicas avançadas de processamento de fluxos de dados posso usar?

Ao trabalhar com fluxos de dados, utilize recursos adicionais do IronOCR para melhorar a precisão do reconhecimento. Os filtros de otimização de imagem podem ser aplicados diretamente aos dados de fluxo antes do processamento OCR:

using IronOcr;
using IronSoftware.Drawing;
using System.IO;

// Process stream with filters
public string ProcessStreamWithFilters(Stream imageStream)
{
    IronTesseract ocrTesseract = new IronTesseract();
    
    // Configure for better accuracy
    ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";
    ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
    
    using var input = new OcrImageInput(imageStream);
    
    // Apply preprocessing filters
    input.Deskew();
    input.DeNoise();
    input.Sharpen();
    
    var result = ocrTesseract.Read(input);
    return result.Text;
}

Para um processamento de imagem aprimorado, considere usar o Assistente de Filtro para determinar automaticamente as melhores etapas de pré-processamento para seus tipos de documento específicos. Além disso, ao lidar com imagens rotacionadas ou distorcidas em seus fluxos, a funcionalidade de correção de orientação de imagem pode melhorar significativamente a precisão do OCR.

Como faço para trabalhar com diferentes fontes de fluxo de dados?

O IronOCR lida perfeitamente com diversas fontes de fluxo de dados. Seja processando uploads de um formulário web, recuperando imagens de um banco de dados ou convertendo entre formatos, a API permanece consistente:

// From MemoryStream
byte[] imageBytes = GetImageBytesFromDatabase();
using var memoryStream = new MemoryStream(imageBytes);
using var input = new OcrImageInput(memoryStream);

// From FileStream
using var fileStream = new FileStream("document.png", FileMode.Open);
using var input2 = new OcrImageInput(fileStream);

// From network stream
using var webClient = new WebClient();
using var networkStream = webClient.OpenRead("https://example.com/image.jpg");
using var input3 = new OcrImageInput(networkStream);

Para obter resultados ideais, considere ajustar as configurações de DPI ao trabalhar com fluxos de baixa resolução. O IronOCR detecta automaticamente o DPI, mas a configuração manual pode melhorar a precisão para casos de uso específicos. Ao trabalhar com documentos de várias páginas, explore o processamento de fluxos de arquivos TIFF e GIF com várias páginas .

Como lidar com resultados de OCR de fluxos de dados?

Após processar seu fluxo de dados, o IronOCR fornece objetos de resultado avançados que vão além da simples extração de texto. A classe OcrResult contém informações detalhadas sobre o texto reconhecido, incluindo pontuações de confiança, posicionamento e estrutura:

// Process stream and analyze results
using var input = new OcrImageInput(stream);
var result = new IronTesseract().Read(input);

// Access detailed results
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%");
    
    foreach (var paragraph in page.Paragraphs)
    {
        Console.WriteLine($"Paragraph: {paragraph.Text}");
        Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}");
    }
}

// Export results
string text = result.Text;
string searchablePdf = result.SaveAsSearchablePdf("output.pdf");
string hocrHtml = result.SaveAsHocrFile("output.html");
C#

O objeto de resultado também fornece métodos para exportar para PDFs pesquisáveis ​​ou formato HTML hOCR , facilitando a criação de arquivos de documentos pesquisáveis ​​a partir de suas entradas de fluxo. Para fins de depuração, você pode usar o recurso de realce de texto para visualizar o que o IronOCR detectou em suas imagens.

Que aspectos de desempenho devo levar em consideração?

Ao processar múltiplos fluxos de dados ou implementar soluções de OCR de alto rendimento, considere estas estratégias de otimização:

  1. Reutilizar Instâncias IronTesseract: Crie uma única instância e a reutilize em várias operações
  2. Implementar Rastreamento de Progresso: Para fluxos grandes, use rastreamento de progresso para monitorar o status do processamento
  3. Processar em Paralelo: IronOCR suporta processamento simultâneo para vários streams
  4. Otimizar Qualidade da Imagem: Pré-processe fluxos para garantir resolução e clareza ótimas

Para obter o máximo desempenho, explore as opções de configuração OCR rápidas e considere implementar o processamento multithread para operações em lote. Ao trabalhar com aplicações sensíveis ao tempo, compreender os tempos limite pode ajudar a gerenciar operações de OCR de longa duração de forma eficaz.

Como solucionar problemas comuns de streaming?

Ao trabalhar com fluxos de dados, você pode encontrar desafios específicos. Aqui estão soluções para cenários comuns:

  • Posição do Stream: Sempre redefina a posição do stream para 0 antes de passar para IronOCR
  • Descarte: Use declarações using para garantir a limpeza adequada dos recursos
  • Suporte a Formatos: IronOCR suporta vários formatos de imagem incluindo JPEG, PNG, TIFF e BMP através de fluxos
  • Gerenciamento de Memória: Para fluxos grandes, considere abordagens de processamento em partes ou streaming

Para documentos complexos ou quando o OCR padrão não fornece resultados satisfatórios, os recursos de visão computacional podem ajudar a localizar e extrair o texto com mais precisão. Além disso, ao trabalhar com fluxos de baixa qualidade, consulte o guia sobre como corrigir digitalizações de baixa qualidade para obter técnicas de pré-processamento que podem melhorar significativamente as taxas de reconhecimento.

Para obter informações mais detalhadas sobre como trabalhar com fluxos e outros métodos de entrada, explore nossos guias práticos e exemplos de código abrangentes.

Perguntas frequentes

Como posso realizar OCR em dados de imagem sem salvá-los em disco primeiro?

O IronOCR permite processar fluxos de imagens diretamente, passando-os para os construtores OcrInput ou OcrImageInput. Isso possibilita um processamento OCR eficiente sem a criação de arquivos temporários, o que é ideal para lidar com uploads da web, BLOBs de banco de dados ou documentos confidenciais que não devem ser armazenados no disco.

Que tipos de fluxos podem ser usados como entrada para processamento OCR?

O IronOCR aceita qualquer System.IO.Stream contendo dados de imagem. Isso inclui fluxos de memória provenientes de uploads da web, fluxos de campos BLOB de bancos de dados ou fluxos criados por bibliotecas de manipulação de imagens. A biblioteca lida automaticamente com todas as etapas de conversão necessárias quando você passa o fluxo para OcrInput ou OcrImageInput.

Qual é a maneira mais simples de realizar OCR em um fluxo de dados em C#?

O método mais rápido é criar um objeto OcrInput com seu fluxo de dados e chamar o método Read: 'using var input = new IronOcr.OcrInput(stream); var result = new IronOcr.IronTesseract().Read(input);'. Este código mínimo realiza o OCR e retorna o texto reconhecido imediatamente.

Por que devo usar fluxos em vez de caminhos de arquivo para OCR?

O OCR baseado em fluxo com IronOCR oferece diversas vantagens: eficiência de memória ao processar dados em blocos, segurança aprimorada ao evitar arquivos temporários em disco, desempenho melhorado ao eliminar a sobrecarga de E/S de arquivos e maior flexibilidade ao trabalhar com uploads da web ou BLOBs de banco de dados.

Posso especificar uma área específica de um fluxo de imagens para leitura?

Sim, o IronOCR permite definir a área de leitura especificando uma região de recorte ao processar fluxos de dados. Esse recurso permite concentrar o OCR em partes específicas da imagem sem processar o documento inteiro, melhorando tanto a velocidade quanto a precisão.

Como o processamento de fluxos de dados se integra com outras bibliotecas de manipulação de imagens?

A abordagem de fluxo do IronOCR integra-se perfeitamente com objetos System.Drawing e outras bibliotecas de manipulação de imagens do .NET. Você pode usar a classe AnyBitmap para converter imagens em fluxos usando o método GetStream, facilitando a combinação de OCR com outros fluxos de trabalho de processamento de imagens.

What should I consider for optimal performance with stream-based OCR?

For optimal performance, reuse `IronTesseract` instances, implement progress tracking, process in parallel, and optimize image quality before processing. These strategies can enhance throughput and efficiency for high-volume OCR tasks.

What are common troubleshooting tips for using streams in IronOCR?

Common troubleshooting tips include ensuring stream position is reset to `0` before processing, using `using` statements for resource cleanup, and confirming that all supported image formats are correctly handled.

How does IronOCR improve OCR for low-quality streams?

IronOCR offers preprocessing techniques to enhance OCR on low-quality streams. By applying filters and other image optimizations, recognition rates can significantly improve, especially for documents with poor scan quality.

Can IronOCR process multiple page documents using streams?

Yes, IronOCR can efficiently process multiple page documents through stream handling, maintaining a user-friendly API and offering robust performance suitable for PDF streams and other multi-page formats.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Pronto para começar?

Nuget Downloads 6,236,385Versão:2026.9recém-lançado

Obtenha o seu GRÁTIS

Obtenha uma chave de avaliação de 30 dias instantaneamente.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.
bullet_testTeste em produção
sem marcas d'água
bullet_calendar30 dias completos
produto funcional
bullet_supportSuporte técnico 24 horas por dia,
5 dias por semana, durante o teste
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.
Biblioteca NuGet C# para PDF
Instalar com NuGet

Versão: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. No Solution Explorer, clique com o botão direito do mouse em Referências e selecione Gerenciar Pacotes NuGet.
  2. Selecione Procurar e pesquise "IronOCR".
  3. Selecione o pacote e instale.
DLL de PDF em C#
Baixar DLL

Versão: 2026.9

ou faça o download do Windows Installer aqui .

  1. Baixe e descompacte o IronOCR em um local como ~/Libs dentro do diretório da sua solução.
  2. No Solution Explorer do Visual Studio, clique com o botão direito do mouse em Referências. Selecione Procurar e digite "IronOCR.dll".

Licenças a partir de US$ 749

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.