Como ler PDFs em OCR C#

Como ler PDFs em C# com IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

O IronOCR permite extrair texto de arquivos PDF em C# com uma única linha de código, suportando todas as versões de PDF e fornecendo resultados de OCR precisos por meio de seu mecanismo baseado em Tesseract.

PDF significa "Portable Document Format" (Formato de Documento Portátil). É um formato de arquivo desenvolvido pela Adobe que preserva as fontes, imagens, gráficos e layout de qualquer documento original, independentemente do aplicativo e da plataforma usados ​​para criá-lo. Os arquivos PDF são normalmente usados ​​para compartilhar e visualizar documentos em um formato consistente, independentemente do software ou hardware usado para abri-los. O IronOCR é compatível com diversas versões de documentos PDF, desde as especificações mais antigas do PDF 1.0 até os padrões mais recentes do PDF 2.0.

Início rápido: OCR de um arquivo PDF em segundos

Configure OCR rapidamente com IronOCR construindo um OcrPdfInput que aponte para o seu PDF, depois chame Read. Este exemplo demonstra a extração de texto de um PDF usando o IronOCR.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho de código.

    using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));
  3. Implante 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 um arquivo PDF inteiro?

Comece instanciando a classe IronTesseract para realizar OCR. Em seguida, utilize uma instrução 'using' para criar um objeto OcrPdfInput, passando o caminho do arquivo PDF para ele. Finalmente, execute OCR usando o método Read. Essa abordagem funciona tanto com PDFs digitalizados (baseados em imagens) quanto com PDFs pesquisáveis ​​(baseados em texto), sendo adequada para extrair texto de vários tipos de PDF .

/* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */
using IronOcr;

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

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);

// Access the extracted text
string extractedText = ocrResult.Text;
System.Console.WriteLine(extractedText);
/* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */
using IronOcr;

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

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);

// Access the extracted text
string extractedText = ocrResult.Text;
System.Console.WriteLine(extractedText);
$vbLabelText   $csharpLabel
Visualização dividida mostrando o texto formatado de Harry Potter versus o texto simples extraído, demonstrando a extração de texto em PDF.

Na maioria dos casos, não é necessário especificar a propriedade DPI. No entanto, fornecer um número DPI alto na construção de OcrPdfInput pode melhorar a precisão da leitura. A configuração padrão de DPI geralmente é suficiente para a maioria dos documentos PDF comuns, mas documentos especializados podem se beneficiar de ajustes.

Quando devo ajustar as configurações de DPI?

As configurações de DPI (pontos por polegada) tornam-se cruciais ao lidar com documentos digitalizados de baixa resolução ou PDFs que contêm texto pequeno. Para obter resultados ideais, considere ajustar as configurações de DPI quando:

  • Trabalhar com documentos digitalizados com resolução inferior a 200 DPI
  • Processamento de PDFs históricos ou de arquivo
  • Lidar com layouts complexos ou fontes pequenas
  • Encontrando problemas de precisão com as configurações padrão

Uma resolução de 300 DPI é recomendada para a maioria das operações de OCR, enquanto 600 DPI pode ser necessário para documentos com texto muito pequeno ou detalhes complexos.

Além do PDF, quais formatos de arquivo o IronOCR suporta?

O IronOCR oferece suporte abrangente para diversos formatos de arquivo além de PDFs. Você pode processar imagens em diversos formatos, incluindo:

  • JPEG/JPG para fotografias padrão
  • PNG para imagens com transparência
  • TIFF para documentos com várias páginas
  • BMP para imagens não comprimidas
  • GIF para gráficos simples

Além disso, o IronOCR pode processar fluxos de PDF diretamente da memória, sendo adequado para aplicações web e serviços em nuvem.

Trabalhando com tipos de conteúdo em PDF

Ao processar PDFs, você pode otimizar o desempenho especificando o tipo de conteúdo. O enum PdfContents permite que você mire em conteúdo específico:

// For text-only PDFs (faster processing)
var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text);

// For image-only PDFs (scanned documents)
var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images);

// For mixed content (default)
var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages);
// For text-only PDFs (faster processing)
var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text);

// For image-only PDFs (scanned documents)
var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images);

// For mixed content (default)
var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages);
$vbLabelText   $csharpLabel

Como faço para ler páginas específicas de um PDF?

Ao ler páginas específicas de um documento PDF, especifique o número do índice da página para importação. Para fazer isso, passe a lista de índices de páginas para o parâmetro PageIndices ao construir o OcrPdfInput. Lembre-se de que os índices de páginas usam numeração baseada em zero. Essa funcionalidade é particularmente útil ao trabalhar com documentos extensos, nos quais apenas algumas páginas contêm informações relevantes.

:path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf-pages.cs
using IronOcr;
using System.Collections.Generic;

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

// Create page indices list
List<int> pageIndices = new List<int>() { 0, 2 };

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf", PageIndices: pageIndices);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);
$vbLabelText   $csharpLabel

Por que a numeração das páginas começa em zero?

A indexação baseada em zero é uma convenção padrão em C# e na maioria das linguagens de programação. Isso significa que a primeira página tem o índice 0, a segunda página tem o índice 1 e assim por diante. Essa consistência com a indexação de arrays facilita o trabalho programático dos desenvolvedores com coleções de páginas. Ao converter números de página legíveis por humanos (1, 2, 3...) em índices, basta subtrair 1 do número da página.

Como posso ler páginas não consecutivas?

Com o IronOCR, ler páginas não consecutivas é muito fácil. Basta adicionar os índices de página desejados à sua lista em qualquer ordem. Por exemplo:

// Read pages 1, 3, 5, and 10 (using zero-based indices)
List<int> pageIndices = new List<int>() { 0, 2, 4, 9 };

// Or use LINQ for range-based selection
var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList();
// Read pages 1, 3, 5, and 10 (using zero-based indices)
List<int> pageIndices = new List<int>() { 0, 2, 4, 9 };

// Or use LINQ for range-based selection
var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList();
$vbLabelText   $csharpLabel

O mecanismo de OCR processará apenas as páginas especificadas, melhorando significativamente o desempenho para documentos grandes.

O que acontece se eu especificar números de página inválidos?

Se você especificar índices de página que excedam a contagem de páginas do documento, o IronOCR lançará uma exceção. Implemente o tratamento de erros ou valide a contagem de páginas antes do processamento. Você pode verificar o número total de páginas de um PDF antes de realizar o OCR para garantir que seus índices sejam válidos.

Como faço para usar OCR em uma região específica de um PDF?

Ao delimitar a área a ser lida, você pode aumentar significativamente a eficiência da leitura. Para isso, especifique a região exata do PDF importado que precisa ser lida. No exemplo de código abaixo, o IronOCR se concentra exclusivamente em extrair o número e o título do capítulo. Essa técnica, semelhante à definição de regiões OCR para imagens , melhora tanto a velocidade quanto a precisão.

:path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

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

// Specify crop regions
Rectangle[] scanRegions = { new Rectangle(550, 100, 600, 300) };

// Add PDF
using (var pdfInput = new OcrPdfInput("Potter.pdf", ContentAreas: scanRegions))
{
    // Perform OCR
    OcrResult ocrResult = ocrTesseract.Read(pdfInput);

    // Output the result to console
    Console.WriteLine(ocrResult.Text);
}
$vbLabelText   $csharpLabel

Como determino as coordenadas corretas de um retângulo?

PDF com retângulo vermelho selecionando o título do capítulo para processamento de OCR, console do Visual Studio mostrando a execução concluída.

Encontrar as coordenadas corretas exige compreender o sistema de coordenadas do PDF. O construtor Rectangle leva quatro parâmetros: X (posição horizontal), Y (posição vertical), Width e Height. Todas as medidas estão em pixels. Ferramentas como visualizadores de PDF com recursos de régua ou utilitários de depuração podem ajudar a identificar as coordenadas exatas. Alternativamente, utilize o método de tentativa e erro, fazendo pequenos ajustes para refinar a área de seleção.

Para uma definição de região mais precisa, você pode utilizar o recurso de destaque de texto para depuração, a fim de visualizar as áreas que estão sendo processadas.

Posso especificar várias regiões em uma única operação?

Sim, o IronOCR suporta múltiplas regiões em uma única operação de OCR. Basta adicionar múltiplos objetos Rectangle ao seu array:

Rectangle[] scanRegions = { 
    new Rectangle(50, 50, 200, 100),    // Header region
    new Rectangle(50, 200, 500, 300),   // Main content region
    new Rectangle(50, 550, 200, 50)     // Footer region
};
Rectangle[] scanRegions = { 
    new Rectangle(50, 50, 200, 100),    // Header region
    new Rectangle(50, 200, 500, 300),   // Main content region
    new Rectangle(50, 550, 200, 50)     // Footer region
};
$vbLabelText   $csharpLabel

Cada região será processada separadamente e os resultados serão combinados na ordem especificada.

Por que usar OCR específico para cada região em vez de OCR de página inteira?

O OCR específico para cada região oferece diversas vantagens:

  • Desempenho : O processamento de áreas menores é significativamente mais rápido.
  • Precisão : Focar em regiões específicas reduz o ruído proveniente de conteúdo irrelevante.
  • Estrutura : Extrair dados de formulários e tabelas de forma mais confiável
  • Eficiência de custos : Menos tempo de processamento significa custos computacionais menores.

Essa abordagem é particularmente valiosa ao trabalhar com documentos estruturados, como faturas, formulários ou relatórios, onde os dados aparecem em locais previsíveis. Para estruturas de documentos complexas, explore a leitura de tabelas nos documentos para técnicas especializadas de extração de tabelas.

Quais são os recursos avançados de OCR para PDF disponíveis?

O IronOCR oferece recursos adicionais para processamento de PDF que vão além da simples extração de texto. É possível criar PDFs pesquisáveis ​​a partir de documentos digitalizados, preservando o layout original e adicionando uma camada de texto para pesquisa e cópia. A biblioteca também oferece suporte a multithreading para processamento mais rápido de grandes coleções de PDFs.

Para desenvolvedores que desejam começar a usar OCR em seus aplicativos .NET, explorar os exemplos simples de OCR fornece uma base sólida para entender os recursos e as melhores práticas do IronOCR.

Lidando com cenários complexos em PDF

Ao lidar com documentos PDF complexos, o IronOCR oferece diversos recursos avançados:

  1. Pré-processamento de imagem : Aplique filtros de imagem para melhorar a clareza do texto.
  2. Vários idiomas : Processar documentos que contenham vários idiomas simultaneamente.
  3. Configurações personalizadas : ajuste as configurações de OCR para tipos de documentos específicos.
  4. Opções de Exportação : Salve os resultados em vários formatos, incluindo PDFs pesquisáveis ​​e HTML com OCR.

Essas características fazem do IronOCR uma solução completa para requisitos de processamento de PDF em nível empresarial.

Perguntas frequentes

Como extrair texto de um arquivo PDF em C#?

Você pode extrair texto de arquivos PDF usando o IronOCR com apenas uma linha de código. Basta criar uma instância de IronTesseract e usar o método Read com OcrPdfInput: `using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));`. O IronOCR lida tanto com PDFs digitalizados (baseados em imagens) quanto com PDFs pesquisáveis (baseados em texto).

Quais versões de PDF são compatíveis com a extração de texto?

O IronOCR é compatível com todas as versões de PDF, desde as especificações mais antigas do PDF 1.0 até os padrões mais recentes do PDF 2.0. O mecanismo de OCR é baseado na tecnologia Tesseract, garantindo a extração precisa do texto, independentemente da versão do PDF com a qual você esteja trabalhando.

Posso ler apenas páginas específicas de um PDF em vez do documento inteiro?

Sim, o IronOCR permite ler páginas específicas de um PDF fornecendo índices de página. Em vez de processar o documento inteiro, você pode especificar de quais páginas extrair o texto usando o objeto OcrPdfInput, tornando o processo de OCR mais eficiente para documentos grandes.

Qual é o fluxo de trabalho mínimo para OCR em um arquivo PDF?

O fluxo de trabalho mínimo com o IronOCR consiste em 5 etapas: 1) Baixar a biblioteca C#, 2) Preparar o documento PDF, 3) Criar um objeto OcrPdfInput com o caminho do arquivo PDF, 4) Usar o método Read para realizar o OCR e 5) Opcionalmente, especificar os índices de página para leitura seletiva.

Quando devo ajustar as configurações de DPI para OCR de PDF?

Embora as configurações padrão de DPI do IronOCR funcionem bem para a maioria dos PDFs comuns, você deve considerar ajustar o DPI ao trabalhar com documentos digitalizados de baixa resolução (abaixo de 200 DPI) ou PDFs que contenham texto pequeno. Configurações de DPI mais altas na construção do OcrPdfInput podem melhorar significativamente a precisão de leitura para documentos especializados.

O mecanismo de OCR funciona tanto com PDFs digitalizados quanto com PDFs pesquisáveis?

Sim, o IronOCR processa com eficiência tanto PDFs digitalizados (baseados em imagens) quanto PDFs pesquisáveis (baseados em texto). O mecanismo baseado no Tesseract lida automaticamente com diferentes tipos de PDF, tornando-o versátil para extrair texto de vários formatos de PDF sem a necessidade de abordagens diferentes.

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 ...

Leia mais
Analisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente de Programa Principal - Equipe da Comunidade .NET
Jeff também é Gerente de Programa Principal das equipes do .NET e do Visual Studio. Ele é o produtor executivo da série de conferências virtuais .NET Conf e apresenta o "Fritz and Friends", uma transmissão ao vivo para desenvolvedores que vai ao ar duas vezes por semana, onde ele conversa sobre tecnologia e escreve código junto com os espectadores. Jeff cria workshops, apresentações e planeja conteúdo para os maiores eventos de desenvolvedores da Microsoft, incluindo o Microsoft Build, o Microsoft Ignite, a .NET Conf e o Microsoft MVP Summit.
Pronto para começar?
Nuget Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.