Configuração OCR para Leitura Avançada

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

IronOCR fornece métodos avançados de leitura de digitalizações, como ReadPassport, ReadLicensePlate e ReadPhoto que vão além do OCR padrão. Esses métodos são alimentados pelo pacote IronOcr.Extensions.AdvancedScan. Para ajustar a forma como esses métodos processam texto, o IronOCR expõe a classe TesseractConfiguration, dando aos desenvolvedores controle total sobre a lista de permissões de caracteres, lista de bloqueio, detecção de códigos de barras, leitura de tabelas de dados e mais.

Este artigo cobre as propriedades TesseractConfiguration disponíveis para leitura avançada e exemplos práticos para configurar o OCR em cenários do mundo real.

Comece a usar o IronOCR

!{--010011000100100101000010010100100100000101010010010110010101111101010011010101000100000101010010010101000101111101010001010010010010010010100000101001100010111110100001001001100010011110100001101001011--}


Propriedades do TesseractConfiguration

A classe TesseractConfiguration fornece as seguintes propriedades para personalizar o comportamento do OCR. Estas são configuradas através IronTesseract.Configuration.

Propriedade Tipo Descrição
`WhiteListCharacters` corda Apenas caracteres presentes nesta corda serão reconhecidos na saída de OCR. Todos os outros caracteres são excluídos.
`BlackListCharacters` corda Os caracteres nesta corda são ativamente ignorados e removidos da saída de OCR.
`ReadBarCodes` booleano Habilita ou desabilita a detecção de códigos de barras no documento durante o processamento de OCR.
`ReadDataTables` booleano Habilita ou desabilita a detecção da estrutura da tabela no documento usando Tesseract.
`PageSegmentationMode` TesseractPageSegmentationMode Determina como o Tesseract segmenta a imagem de entrada. Opções incluem `AutoOsd`, `Auto`, `SingleBlock`, `SingleLine`, `SingleWord`, e mais.
`RenderSearchablePdf` booleano Quando ativado, a saída de OCR pode ser salva como um PDF pesquisável com uma camada de texto invisível.
`RenderHocr` booleano Quando ativado, a saída de OCR inclui dados hOCR para processamento ou exportação adicional.
`TesseractVariables` Dictionary<corda, object> Fornece acesso direto a variáveis de configuração de baixo nível do Tesseract para controle detalhado. Veja a lista completa de variáveis do Tesseract.

Mesmo com essas propriedades de alto nível, o IronOCR oferece personalização detalhada através do dicionário TesseractVariables, que expõe centenas de parâmetros do motor Tesseract para casos de uso especializados.

Configurando uma Lista Branca de Caracteres para Placas de Veículos

Um caso de uso comum para WhiteListCharacters é recordair a saída do OCR a apenas os caracteres que podem aparecer em uma placa de licença: letras maiúsculas, dígitos, hífens e espaços. Isso elimina ruídos e melhora a precisão informando o motor para ignorar qualquer coisa fora do conjunto de caracteres esperado.

Entrada

O seguinte registro de veículo contém uma mistura de texto em maiúsculas, texto em minúsculas, símbolos especiais (@, $, #, |, *), e pontuação. Apenas letras maiúsculas, dígitos, hifens e espaços devem sobreviver à lista branca.

Registro de veículo com caracteres mistos para demonstração de lista branca de OCR

Código

Neste exemplo, WhiteListCharacters é configurado para A-Z, 0-9, hífens e espaços. A propriedade BlackListCharacters filtra símbolos de ruído conhecidos como `, and *.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading.cs
using IronOcr;

// Initialize the Tesseract OCR engine
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Whitelist only characters that appear on license plates
    WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",

    // Blacklist common noise characters
    BlackListCharacters = "`~@#$%&*",
};

var ocrInput = new OcrInput();
// Load the input image
ocrInput.LoadImage("advanced-input.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);

// Print the filtered text result to the console
Console.WriteLine(results.Text);
$vbLabelText   $csharpLabel

Saída

Saída de OCR mostrando apenas caracteres de placa de licença permitidos

O filtro de lista branca é claramente visível nos resultados:

  • "Placa: ABC-1234" se torna "P ABC-1234". A palavra em minúsculas "late:" é excluída, enquanto o número da placa é preservado exatamente.
  • "VIN: 1HGBH41JXMN109186" se torna "VIN 1HGBH41JXMN109186". O dois-pontos é removido, mas o VIN em maiúsculas e o número completo são mantidos.
  • "Proprietário: john.doe@email.com" se torna "O". Todo o e-mail em minúsculas e a pontuação são removidos.
  • "Região: CA-90210 |Zona #5" se torna "R CA-90210 Z 5". O pipe (|) and hash (#) são removidos, enquanto as letras maiúsculas e números permanecem.
  • *"Taxa: $125.00 + imposto" se torna "F 12500"**. O símbolo do dólar, ponto decimal, sinal de mais e "imposto" em minúsculas são todos removidos.
  • "Ref: ~record_v2^final" se torna "R 2". A til (~), sublinhado, acento circunflexo (^), e todos os caracteres em minúsculas são removidos.

Configurando Leitura de Código de Barras e Tabelas de Dados

IronOCR pode detectar códigos de barras e tabelas estruturadas dentro de documentos juntamente com texto. Esses recursos são controlados através TesseractConfiguration:

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Enable barcode detection within documents
    ReadBarCodes = true,

    // Enable table structure detection
    ReadDataTables = true,
};
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Enable barcode detection within documents
    ReadBarCodes = true,

    // Enable table structure detection
    ReadDataTables = true,
};
$vbLabelText   $csharpLabel
  • ReadBarCodes: Quando configurado para true, o IronOCR analisa o documento em busca de códigos de barras além do texto. Configure para false para pular a detecção de código de barras e acelerar o processamento quando códigos de barras não são esperados.
  • ReadDataTables: Quando configurado para true, o Tesseract tenta detectar e preservar estruturas de tabelas no documento. Isso é útil para faturas, relatórios e outros documentos tabulares.

Essas opções podem ser combinadas com WhiteListCharacters e BlackListCharacters para um controle preciso sobre o que é extraído de documentos complexos.

Controlando o Modo de Segmentação de Página

PageSegmentationMode diz ao Tesseract como interpretar o layout da imagem de entrada antes de reconhecer o texto. Escolher o modo certo para o seu tipo de documento tem um impacto direto na precisão.

Modo Caso de uso
AutoOsd Análise automática de layout com detecção de orientação e script
Auto Análise automática de layout sem OSD (padrão)
SingleColumn Assume que a imagem é uma única coluna de texto
SingleBlock Assume que a imagem é um único bloco uniforme de texto
SingleLine Assume que a imagem é uma única linha de texto
SparseText Encontra o máximo de texto possível em qualquer ordem

Para um rótulo ou banner que contém uma única linha, SingleLine elimina a análise de múltiplos blocos e melhora tanto a velocidade quanto a precisão:

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = TesseractPageSegmentationMode.SingleLine,
};

using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = TesseractPageSegmentationMode.SingleLine,
};

using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Para uma página digitalizada com colocação irregular de texto (como um recibo com preços espalhados), SparseText recupera mais conteúdo que Auto:

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = TesseractPageSegmentationMode.SparseText,
};

using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = TesseractPageSegmentationMode.SparseText,
};

using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Gerando PDFs Pesquisáveis e Saída hOCR

RenderSearchablePdf e RenderHocr controlam os formatos de saída que o IronOCR produz junto com o resultado de texto simples.

RenderSearchablePdf incorpora uma camada de texto invisível sobre a imagem original, produzindo um PDF onde os usuários podem pesquisar e copiar texto enquanto a imagem digitalizada permanece visível. Este é o formato de saída padrão para fluxos de trabalho de arquivamento de documentos.

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderSearchablePdf = true,
};

using OcrInput input = new OcrInput();
input.LoadPdf("scanned-document.pdf");

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderSearchablePdf = true,
};

using OcrInput input = new OcrInput();
input.LoadPdf("scanned-document.pdf");

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
$vbLabelText   $csharpLabel

RenderHocr produz um documento hOCR, um arquivo HTML que codifica o conteúdo do texto junto com as coordenadas da caixa de delimitação para cada palavra. Isso é útil quando ferramentas a jusante precisam de posicionamento preciso das palavras (por exemplo, motores de redação ou análise de layout de documentos).

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderHocr = true,
};

using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderHocr = true,
};

using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
$vbLabelText   $csharpLabel

Ambas as sinalizações podem ser ativadas ao mesmo tempo se você precisar de todos os três formatos de saída (texto simples, PDF pesquisável e hOCR) de uma única chamada de leitura.

Filtragem de Caracteres Unicode para Documentos Internacionais

Para documentos internacionais em chinês, japonês ou coreano, as propriedades WhiteListCharacters e BlackListCharacters funcionam com caracteres Unicode. Isso permite recordair a saída a scripts específicos, como apenas Hiragana e Katakana para japonês.

Observe Certifique-se de que o pacote de idioma correspondente foi instalado (por exemplo, IronOcr.Languages.Japanese) antes de prosseguir.

Entrada

Configuração avançada de OCR para entrada em japonês

Código

Neste exemplo, a lista de permissões inclui Hiragana, Katakana, dígitos e pontuação japonesa comum. Símbolos de ruído como , e § são bloqueados.

Aviso O console pode não suportar a exibição de caracteres Unicode. Redirecionar a saída para um arquivo .txt é uma forma confiável de verificar os resultados ao lidar com tais caracteres.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-jp.cs
using IronOcr;
using System.IO;

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Whitelist only Hiragana, Katakana, numbers, and common Japanese punctuation
    WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" +
                            "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" +
                            "0123456789、。?!()¥ー",

    // Blacklist common noise/symbols you want to ignore
    BlackListCharacters = "★■§",
};

var ocrInput = new OcrInput();

// Load Japanese input image
ocrInput.LoadImage("jp.png");

// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);

// Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text);

// You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt");
$vbLabelText   $csharpLabel

Saída

Configuração avançada de OCR para saída em japonês

Aqui está a saída para a entrada acima.

Como a lista de permissões inclui apenas caracteres Hiragana e Katakana básicos, caracteres derivados como プ (pu) e デ (de) são descartados. Kanji, o símbolo do Yen, e parênteses de largura completa também são excluídos, pois não estão na lista de permissões. Símbolos bloqueados como e são removidos ativamente.

Conclusão

A classe TesseractConfiguration dá aos desenvolvedores controle detalhado sobre como o IronOCR processa documentos em cenários de leitura avançada. Combinando listas de permissões de caracteres com detecção de código de barras, leitura de tabelas e suporte a idiomas internacionais, você pode construir pipelines de OCR personalizados para tipos específicos de documentos, como placas de licença, passaportes, faturas e conteúdo multilíngue.

Para mais informações sobre os próprios métodos de leitura avançada, consulte o guia ReadPassport, o guia ReadLicensePlate e a lista completa de variáveis de configuração do Tesseract.

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