A autodetecção identifica o tipo de um trecho de texto reconhecido. A autodetecção é iniciada se a propriedade TextTypes do objeto RecognizerParams estiver definida com várias constantes. Esse modo foi projetado principalmente para o reconhecimento de formulários. No caso de OCR comum, recomendamos usá-lo apenas se for absolutamente necessário.
Quando a autodetecção está ativada, o ABBYY FineReader Engine primeiro tentará detectar o tipo de texto no bloco ou grupo de blocos especificado (para esses blocos, a propriedade TextTypes do objeto RecognizerParams é definida com várias constantes). O ABBYY FineReader Engine escolherá entre as constantes especificadas na propriedade TextTypes. Essa propriedade contém uma combinação OR das constantes da enumeração TextTypeEnum, que indicam os possíveis tipos de texto usados no reconhecimento. Por exemplo, se ela estiver definida como TT_Normal | TT_Index, o ABBYY FineReader Engine assumirá que o texto contém apenas texto tipográfico comum e dígitos escritos no formato de código postal, ignorando todas as outras variantes. Durante a autodetecção, o ABBYY FineReader Engine executa o reconhecimento para todos os tipos de texto especificados na propriedade TextTypes. Os resultados de OCR são então comparados, e o ABBYY FineReader Engine seleciona o melhor como resultado final.
A autodetecção deve ser usada em um conjunto de blocos, todos com texto do mesmo tipo. Se for necessário selecionar um tipo de texto diferente para cada bloco, você deverá chamar o método RecognizeBlocks para cada bloco, e o objeto RecognizerParams deverá listar os tipos de texto possíveis.
Se um único bloco contiver texto de tipos diferentes, o reconhecimento será executado para todos os tipos de texto, mas apenas um resultado será selecionado. Assim, todo o texto dentro do bloco será reconhecido como se fosse do mesmo tipo. Por isso, os resultados de reconhecimento de um bloco que contém texto de vários tipos podem ser diferentes dos resultados de um bloco que contém texto de apenas um tipo. Para obter melhores resultados de OCR, crie blocos separados para cada tipo de texto.
Seleção do conjunto de tipos de texto
A velocidade e a precisão da autodetecção dependem do conjunto de tipos de texto especificado na propriedade TextTypes. A autodetecção é mais rápida para combinações dos tipos TT_Normal, TT_Matrix, TT_Typewriter, TT_OCR_A e TT_OCR_B (que podem ser chamadas de “conjunto de autodetecção rápida”). Nesse caso, o reconhecedor é iniciado apenas uma vez, a autodetecção é realizada durante o OCR, e palavras individuais, em vez de blocos, são usadas para detectar o tipo de texto. Se apenas um tipo de texto tiver sido especificado, a autodetecção não será iniciada — o Engine iniciará o reconhecedor correspondente ao tipo de texto especificado.
Se a propriedade TextTypes corresponder a qualquer combinação de TT_Matrix, TT_Typewriter, TT_OCR_A e TT_OCR_B, fontes em itálico e texto sobrescrito/subscrito não serão reconhecidos, independentemente dos valores das propriedades ProhibitItalic, ProhibitSubscript e ProhibitSuperscript do objeto RecognizerParams.
No caso de textos não cobertos pelo “conjunto de autodetecção rápida”, os tipos de texto são detectados por blocos, e não por palavras individuais. Isso significa que a autodetecção é mais lenta se o conjunto de tipos de texto possíveis incluir tipos diferentes de TT_Normal, TT_Matrix, TT_Typewriter, TT_OCR_A e TT_OCR_B. Nesse caso, o Engine precisa realizar OCR preliminar várias vezes — uma vez para os tipos do “conjunto de autodetecção rápida” e uma sessão de reconhecimento preliminar para cada tipo de texto adicional. Em seguida, os resultados são comparados, e o melhor tipo de texto é selecionado.
- Certifique-se de manter no mínimo possível o número de tipos de texto na propriedade TextTypes.
- Se a propriedade TextTypes corresponder a qualquer combinação de TT_Handwritten e TT_Index, a propriedade TrainUserPatterns do objeto RecognizerParams não poderá ser definida como TRUE.
RecognizerParams
TextTypeEnum