Configuração OCR para Leitura Avançada
O IronOCR oferece métodos avançados de leitura de digitalização, 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 com precisão a forma como esses métodos processam o texto, o IronOCR expõe a classe TesseractConfiguration, dando aos desenvolvedores controle total sobre listas de permissão e bloqueio de caracteres, detecção de código de barras, leitura de tabelas de dados e muito mais.
Este artigo aborda as propriedades TesseractConfiguration disponíveis para leitura avançada e exemplos práticos para configurar o OCR em cenários do mundo real.
Início rápido: Recordair a saída do OCR a uma lista de caracteres permitidos
Defina WhiteListCharacters em TesseractConfiguration antes de chamar Read. Qualquer caractere que não esteja na lista de permissões é silenciosamente removido do resultado, eliminando ruídos sem qualquer pós-processamento.
-
Instale IronOCR com o Gerenciador de Pacotes NuGet
PM > Install-Package IronOcr -
Copie e execute este trecho de código.
var result = new IronTesseract() { Configuration = new TesseractConfiguration { WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- " } }.Read(new OcrInput("image.png")); Console.WriteLine(result.Text); -
Implante para testar em seu ambiente de produção.
Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita
Como Configurar OCR para Leitura Avançada
- Instale o IronOCR do NuGet
- Instale o pacote IronOcr.Extensions.AdvancedScan
- Configure as propriedades de
TesseractConfigurationcomoWhiteListCharacterseReadBarCodes - Carregue a imagem de entrada com
OcrInput - Leia a imagem usando um método avançado como
ReadPhoto,ReadLicensePlate, ouReadPassport
Propriedades do TesseractConfiguration
A classe TesseractConfiguration fornece as seguintes propriedades para personalizar o comportamento do OCR. Estas configurações são definidas através de 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 |
Modo de segmentação de página Tesseract | 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 |
Fornece acesso direto às variáveis de configuração de baixo nível do Tesseract para um controle preciso. |
O dicionário TesseractVariables vai ainda mais longe, expondo centenas de parâmetros subjacentes do mecanismo Tesseract para casos em que as propriedades de alto nível não são suficientes.
Os exemplos abaixo demonstram cada grupo de propriedades, começando com a lista de caracteres permitidos.
Configurando uma Lista Branca de Caracteres para Placas de Veículos
Um caso de uso comum para WhiteListCharacters é recordair a saída do OCR apenas aos caracteres que podem aparecer em uma placa de veículo: 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 e símbolos especiais (@, $, #, |, *), e pontuação.
BlackListCharacters complementa a lista branca, excluindo ativamente 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);
Imports IronOcr
' Initialize the Tesseract OCR engine
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
' Whitelist only characters that appear on license plates
.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
' Blacklist common noise characters
.BlackListCharacters = "`~@#$%&*"
}
Dim ocrInput As New OcrInput()
' Load the input image
ocrInput.LoadImage("advanced-input.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)
' Print the filtered text result to the console
Console.WriteLine(results.Text)
Saída
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 os 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". O til (
~), o sublinhado, o acento circunflexo (^) e todos os caracteres minúsculos são removidos.
A mesma abordagem com WhiteListCharacters e BlackListCharacters funciona para qualquer tipo de documento, não apenas para placas de veículos. A próxima seção mostra como estender uma leitura para detectar códigos de barras e estruturas de tabela na mesma passagem.
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. Essas funcionalidades são controladas por meio de 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,
};
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.ReadBarCodes = True,
.ReadDataTables = True
}
- ReadBarCodes : Quando definido como
true, o IronOCR escaneia o documento em busca de códigos de barras, além do texto. Defina comofalsepara ignorar a detecção de código de barras e acelerar o processamento quando códigos de barras não forem esperados. - ReadDataTables : Quando definido como
true, o Tesseract tenta detectar e preservar as estruturas das 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.
Embora a filtragem e a detecção controlem o que é extraído, a interpretação do layout é uma preocupação à parte. A próxima seção aborda como selecionar o PageSegmentationMode correto para o tipo de documento.
Controlando o Modo de Segmentação de Página
PageSegmentationMode informa ao Tesseract como segmentar a imagem de entrada antes do reconhecimento. Escolher o modo errado para um determinado layout faz com que o mecanismo interprete o texto incorretamente ou o ignore completamente.
| 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 contenha uma única linha, SingleLine elimina a análise de múltiplos blocos e melhora tanto a velocidade quanto a precisão.
Entrada
single-line-label.png é uma etiqueta de envio estreita com exatamente uma linha de texto em negrito da transportadora: SHIPPING LABEL: TRK-2024-XR9-001.
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = Modo de segmentação de página Tesseract.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 = Modo de segmentação de página Tesseract.SingleLine,
};
using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = TesseractPageSegmentationMode.SingleLine
}
Using input As New OcrInput()
input.LoadImage("single-line-label.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Para uma página digitalizada com posicionamento de texto irregular, SparseText recupera mais conteúdo do que Auto.
Entrada
receipt-scan.png é um recibo térmico do Corner Market com quatro itens (café, muffin, suco, barra de granola), um separador tracejado, subtotal, imposto e total. Este é o tipo de layout em que a segmentação por blocos fixos deixa de identificar entradas em diferentes posições horizontais.
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = Modo de segmentação de página Tesseract.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 = Modo de segmentação de página Tesseract.SparseText,
};
using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = Tesseract.PageSegmentationMode.SparseText
}
Using input As New OcrInput()
input.LoadImage("receipt-scan.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Com a segmentação do layout ajustada ao tipo de documento, o próximo passo é controlar o formato de saída para o processamento subsequente.
Gerando PDFs Pesquisáveis e Saída hOCR
RenderSearchablePdf e RenderHocr controlam os formatos de saída que o IronOCR produz juntamente com o resultado em 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.
Entrada
scanned-document.pdf é uma carta comercial de uma página da IronOCR Solutions Ltd. (datada de 15 de março de 2024, referência DOC-2024-OCR-0315). O resultado é salvo como 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");
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");
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.RenderSearchablePdf = True
}
Using input As New OcrInput()
input.LoadPdf("scanned-document.pdf")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable-output.pdf")
End Using
Saída
O resultado é um PDF que parece idêntico ao original, mas contém uma camada de texto oculta. Abra searchable-output.pdf e use Ctrl+F para verificar se o texto incorporado pode ser pesquisado e copiado.
RenderHocr produz um documento hOCR, um arquivo HTML que codifica o conteúdo do texto juntamente com as coordenadas da caixa delimitadora para cada palavra. Isso é útil quando ferramentas subsequentes precisam de posicionamento preciso de palavras, por exemplo, mecanismos de redação ou análise de layout de documentos.
Entrada
document-page.png é uma página de documento com o título "Resumo Trimestral - 1º Trimestre de 2024" e dois parágrafos de dados financeiros que abrangem receita, custos operacionais e fatores de crescimento. O resultado é salvo como 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");
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");
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.RenderHocr = True
}
Using input As New OcrInput()
input.LoadImage("document-page.png")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("output.html")
End Using
Saída
output.html codifica cada palavra reconhecida com as coordenadas da sua caixa delimitadora. Abra o arquivo em um navegador para inspecionar a estrutura hOCR ou passe-o para uma ferramenta subsequente para análise de layout ou redação.
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.
Essas opções de saída funcionam independentemente do idioma que está sendo lido, incluindo alfabetos não latinos. A próxima seção mostra como aplicar a filtragem de caracteres a textos em japonês.
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.
Entrada
O documento contém um título (テスト), uma frase japonesa misturando Hiragana e Katakana com variantes de marca sonora (プ, で), uma linha de preço com símbolos de ruído na lista negra (★, ■) e Kanji (価格), e uma linha de memorando com outro símbolo na lista negra (§), mais Kanji (購入), variantes adicionais de marca sonora (プ, デ) e base Katakana (メモ,ール). A lista de permissões permite apenas Hiragana básico, Katakana básico, dígitos e pontuação japonesa comum; Os três símbolos de ruído estão explicitamente na lista negra.
Os intervalos de caracteres Unicode para Hiragana e Katakana são passados como literais de corda em WhiteListCharacters, com os símbolos de ruído listados em BlackListCharacters.
: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");
Imports IronOcr
Imports System.IO
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" &
"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" &
"0123456789、。?!()¥ー",
.BlackListCharacters = "★■§"
}
Dim ocrInput As New OcrInput()
' Load Japanese input image
ocrInput.LoadImage("jp.png")
' Perform OCR on the input image with ReadPhoto method
Dim 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")
Saída
O resultado completo filtrado está disponível como um arquivo de texto: jp-output.txt .
Como a lista branca inclui apenas caracteres básicos de Hiragana e Katakana, variantes derivadas de marcas sonoras, como プ (pu) e デ (de), são descartadas. Caracteres kanji como 価格 (preço) e 購入 (compra) também são excluídos, pois não fazem parte da lista de caracteres permitidos. Símbolos da lista negra, como ★, ■ e §, são removidos ativamente, independentemente da lista branca.
Para onde devo ir em seguida?
Agora que você entende como configurar o IronOCR para cenários de leitura avançados, explore:
- Leitura de tipos específicos de documentos, como passaportes e placas de veículos.
- Leitura de código de barras e código QR como um caso de uso OCR independente
- Exportação de hOCR e PDFs pesquisáveis a partir de resultados processados
Para uso em produção, lembre-se de obter uma licença para remover marcas d'água e acessar a funcionalidade completa.
Perguntas frequentes
O que é TesseractConfiguration no IronOCR?
A opção TesseractConfiguration no IronOCR permite que os usuários personalizem as configurações de OCR, habilitando recursos avançados de leitura, como listas de caracteres permitidos, leitura de código de barras e suporte multilíngue.
Como posso configurar uma lista de caracteres permitidos no IronOCR?
No IronOCR, você pode configurar uma lista de caracteres permitidos usando o TesseractConfiguration, o que permite especificar quais caracteres o mecanismo de OCR deve reconhecer, útil para tarefas como a leitura de placas de veículos.
O IronOCR consegue ler códigos de barras e tabelas de dados?
Sim, o IronOCR pode ser configurado para ler códigos de barras e tabelas de dados ajustando configurações específicas nas propriedades do TesseractConfiguration para uma extração precisa de dados OCR.
O IronOCR oferece suporte a idiomas internacionais como chinês, japonês e coreano?
O IronOCR oferece suporte a idiomas internacionais, incluindo chinês, japonês e coreano, por meio de suas opções multilíngues de configuração do Tesseract.
Quais são os benefícios de usar configurações avançadas de OCR no IronOCR?
A utilização de configurações avançadas de OCR no IronOCR permite um reconhecimento de texto mais preciso e eficiente, suportando tarefas especializadas como o reconhecimento de texto em idiomas específicos e a extração de dados estruturados.
É possível otimizar o IronOCR para tarefas específicas de OCR?
Sim, o IronOCR pode ser otimizado para tarefas específicas de OCR configurando opções como listas de caracteres permitidos e habilitando o reconhecimento de código de barras ou tabelas, melhorando o desempenho para aplicações específicas.
Como faço para ativar o suporte multilíngue no IronOCR?
Para habilitar o suporte multilíngue no IronOCR, você pode ajustar as configurações de idioma no TesseractConfiguration, permitindo que o mecanismo de OCR reconheça textos em vários idiomas.
O que são listas de caracteres permitidos e como elas são usadas no IronOCR?
As listas de caracteres permitidos no IronOCR são listas de caracteres específicos que o mecanismo de OCR está configurado para reconhecer, ideais para tarefas específicas, como a leitura de numerais ou padrões de texto específicos.
O IronOCR pode ser usado para ler formatos de dados estruturados?
Sim, o IronOCR pode ser configurado para ler e processar formatos de dados estruturados, como códigos de barras e tabelas, oferecendo recursos versáteis de OCR para diversas necessidades de extração de dados.
Quais configurações estão disponíveis no IronOCR para reconhecimento avançado de texto?
O IronOCR oferece configurações como listas de caracteres permitidos, suporte multilíngue e reconhecimento de código de barras para aprimorar os recursos avançados de reconhecimento de texto, adaptados a requisitos específicos.

