Extrair texto de PDF usando OCR em C#

Visão geral

A extração de texto comum lê a camada de texto de um documento PDF. Quando uma página é uma imagem digitalizada ou não tem texto selecionável, classes como TextFragmentAbsorber não retornam nada, porque não há texto para ler.

Para esses casos, o Aspose.PDF for .NET fornece a classe OcrTextAbsorber (namespace Aspose.Pdf.Ocr). Ela reconhece texto simples nas páginas de qualquer documento PDF usando OCR (reconhecimento óptico de caracteres) e o retorna como uma string. Ela segue o padrão padrão do Aspose.PDF absorber/visitor, portanto conecta-se aos mesmos pontos de entrada Accept que os demais absorbers.

Reconhecer texto em uma única página de PDF

Crie um OcrTextAbsorber, chame o método Accept da página e leia o resultado da propriedade Text. A chamada absorber.Visit(page) é um equivalente direto de page.Accept(absorber).

Reconhecer texto em todo o documento PDF

Chame o método Accept da coleção Pages para reconhecer todas as páginas. O texto reconhecido de cada página é unido usando o separador de páginas das opções.

Configurar as opções de reconhecimento

O reconhecimento é configurado com um objeto OcrTextRecognitionOptions passado ao construtor. As mesmas opções também estão disponíveis após a criação por meio da propriedade Options do absorber, e alterá-las afeta a próxima chamada de reconhecimento.

Membro Padrão Significado Validação
Language OcrLanguage.English Idioma de reconhecimento.
Resolution 300 Resolução de reconhecimento, em DPI. Faixa prática ~200–600. Valores mais altos consomem mais memória/CPU com pouco ganho de precisão. Lança ArgumentOutOfRangeException se <= 0.
PageSeparator "\n\n" Inserido entre o texto reconhecido de páginas consecutivas (não antes da primeira página). string.Empty concatena as páginas sem quebra. Lança ArgumentNullException se definido como null.

Detecção automática de idioma

Quando o idioma do documento é desconhecido, defina Language como OcrLanguage.Auto para detectá-lo automaticamente. O idioma de reconhecimento é selecionado com a enumeração OcrLanguage, que oferece suporte a inglês (padrão), árabe, chinês, francês, alemão, indonésio, italiano, japonês, cazaque, coreano, polonês, português, russo, espanhol, ucraniano e Auto.

Como os resultados de reconhecimento são retornados

  • Text é substituído, não acumulado. Cada chamada Accept/Visit sobrescreve Text com o resultado dessa chamada; leia-o após cada chamada para manter vários resultados. É string.Empty antes da primeira chamada e para um documento sem páginas.
  • União de várias páginas. O texto de cada página é concatenado usando Options.PageSeparator (padrão "\n\n"); nenhum separador é adicionado antes da primeira página. string.Empty une as páginas sem quebra.
  • Resolução. 300 DPI é o padrão e o ponto ideal prático; ~200–600 é a faixa útil.