Pular para o conteúdo principal
Um dos principais parâmetros de reconhecimento é o idioma usado no processo de reconhecimento. É importante definir o idioma correto antes da análise e do reconhecimento. O idioma de reconhecimento pode ser especificado facilmente com o método IRecognizerParams::SetPredefinedTextLanguage. Esse método afeta a propriedade IRecognizerParams::TextLanguage. Por padrão, esse parâmetro é inicializado com o idioma inglês para reconhecimento. Você também pode usar a detecção automática de idioma (consulte a propriedade IRecognizerParams::LanguageDetectionMode para mais detalhes).
A detecção automática de idioma funciona apenas com os idiomas predefinidos (veja a lista completa em Idiomas predefinidos no ABBYY FineReader Engine).
Abaixo, você encontra informações úteis sobre os idiomas compatíveis com o ABBYY FineReader Engine por padrão e os objetos que oferecem recursos avançados para trabalhar com idiomas de reconhecimento.

Idiomas predefinidos

O ABBYY FineReader Engine fornece um conjunto de idiomas compatíveis por padrão. Esses idiomas são chamados de “idiomas predefinidos”. A coleção de idiomas predefinidos disponíveis, representada pelo objeto PredefinedLanguages, pode ser acessada por meio da propriedade PredefinedLanguages do objeto Engine. Trata-se de uma coleção de objetos PredefinedLanguage. Os idiomas predefinidos são identificados por seus nomes internos. Você pode especificar diretamente um idioma de reconhecimento pelo nome do idioma predefinido correspondente por meio do método IRecognizerParams::SetPredefinedTextLanguage. Para ver a lista de nomes internos dos idiomas predefinidos, consulte Idiomas predefinidos no ABBYY FineReader Engine.

Idioma de reconhecimento de um texto

O idioma usado durante o reconhecimento é representado pelo objeto TextLanguage. O objeto RecognizerParams, que especifica os parâmetros de reconhecimento, armazena uma referência ao objeto TextLanguage. As funções de reconhecimento recebem esse objeto como um subobjeto do objeto PageProcessingParams passado a elas como parâmetro de entrada ou de um bloco em um objeto Layout. O objeto TextLanguage expõe as seguintes propriedades principais:
  • Nome interno. Recomendamos selecionar um nome exclusivo para o idioma interno; ele já é exclusivo para os idiomas fornecidos no pacote de distribuição do ABBYY FineReader Engine. Certifique-se de que os nomes dos novos idiomas também sejam exclusivos.
  • Conjuntos de letras. O objeto TextLanguage contém os seguintes conjuntos de letras: sinais de pontuação que podem aparecer entre palavras, caracteres proibidos e sinais de pontuação adicionais que aparecem imediatamente antes e depois das palavras.
  • Dicionários de exclusão. Você pode criar uma coleção de dicionários de exclusão usando a propriedade ProhibitingDictionaries do objeto TextLanguage. As palavras desses dicionários não podem ser usadas como variantes de uma palavra reconhecida. No entanto, se não restarem variantes e usar uma palavra proibida for a única opção, palavras desses dicionários ainda poderão aparecer no texto reconhecido. Consulte Trabalhando com dicionários.

Idioma de reconhecimento para caracteres

Durante o reconhecimento, o texto é separado em palavras, e a cada palavra correspondem um ou mais idiomas de reconhecimento. A cada caractere de uma palavra é atribuído um idioma de reconhecimento. Esse idioma de reconhecimento é representado pelo objeto BaseLanguage e pode ser acessado por meio da propriedade ITextLanguage::BaseLanguages. O objeto BaseLanguage tem as seguintes propriedades:
  • Nome interno. Recomendamos selecionar um nome exclusivo para o idioma interno; ele já é exclusivo para os idiomas fornecidos com o pacote de distribuição do ABBYY FineReader Engine. Certifique-se de que os nomes dos novos idiomas também sejam exclusivos.
Se um idioma base de reconhecimento corresponder a uma palavra reconhecida, a propriedade ICharParams::LanguageName de cada caractere dessa palavra receberá o nome interno do idioma base após o reconhecimento. Se vários idiomas base de reconhecimento corresponderem a uma única palavra (por exemplo, em palavras compostas bilíngues), a propriedade ICharParams::LanguageName dos caracteres dessa palavra ficará vazia. A propriedade ICharParams::LanguageId contém o identificador do idioma base, independentemente da palavra reconhecida.
  • Conjuntos de letras. Um conjunto de letras inclui as letras que formam o alfabeto do idioma, as letras que formam seu alfabeto estendido (usado em estrangeirismos), os sinais de pontuação que aparecem imediatamente antes e depois das palavras, os caracteres permitidos dentro das palavras, mas ignorados pelo sistema interno de verificação ortográfica, e os símbolos permitidos em subscrito e sobrescrito.
  • Dicionário. Um idioma de reconhecimento de uma palavra pode ter um dicionário associado. Consulte Trabalhando com dicionários.

Criando um idioma de reconhecimento composto

O ABBYY FineReader Engine oferece uma maneira fácil de criar idiomas de reconhecimento compostos, formados por vários idiomas de reconhecimento predefinidos. Isso é feito por meio do objeto LanguageDatabase. Por exemplo, você pode criar um idioma de reconhecimento que inclua palavras em inglês e em alemão:
  1. Crie um objeto LanguageDatabase chamando o método IEngine::CreateLanguageDatabase.
  2. Chame o método ILanguageDatabase::CreateCompoundTextLanguage com o parâmetro “English,German”.
  3. Use o objeto TextLanguage retornado para reconhecimento de texto.
No momento, os Visual Components são compatíveis apenas com o Windows.
O objeto LanguageDatabase também permite importar idiomas personalizados definidos pelo usuário, criados no ABBYY FineReader Engine para Windows com o uso de Visual Components. Os Visual Components fornecem recursos para criar idiomas de reconhecimento personalizados com conjuntos de letras, dicionários e outros parâmetros especificados pelo usuário. Os idiomas de reconhecimento criados dessa forma são armazenados em um conjunto de arquivos e podem ser acessados por meio do objeto LanguageDatabase. Se você quiser usar os idiomas criados nos Visual Components, faça o seguinte:
  1. Crie um objeto LanguageDatabase chamando o método IEngine::CreateLanguageDatabase.
  2. Carregue os idiomas no objeto LanguageDatabase usando o método ILanguageDatabase::LoadFrom.
  3. Obtenha o idioma necessário pelo nome, como um objeto TextLanguage, a partir do objeto LanguageDatabase.
  4. Use o objeto TextLanguage retornado para reconhecimento de texto.

Veja também

Trabalhando com dicionários Reconhecendo palavras com espaços Reconhecendo os idiomas chinês, japonês e coreano