Pular para o conteúdo principal
Os exemplos e as informações em C# são aplicáveis somente ao FRE para Windows.
Há três tipos principais de coleções no ABBYY FineReader Engine:
  • coleções temporárias (coleções de referências a objetos existentes)
  • coleções de objetos filho
  • coleções somente leitura de objetos filho
Nesta página, você encontrará informações sobre o seguinte:
  • como trabalhar com cada tipo de coleção
  • como visualizar a lista de todas as coleções disponíveis
  • como trabalhar com coleções no .NET no FRE para Windows

Coleções temporárias

Este tipo de coleção representa um conjunto de referências a objetos existentes. São coleções temporárias; geralmente, são usadas para passar diferentes conjuntos de parâmetros para métodos que os exigem. Você cria a coleção, adiciona elementos a ela (os elementos são adicionados como referências a objetos existentes), passa-a para o método necessário e, em seguida, destrói a coleção, enquanto os objetos adicionados a ela permanecem. Essas coleções possuem o sufixo Collection em seus nomes (por exemplo, StringsCollection, IntsCollection). Para trabalhar com uma coleção desse tipo:
  1. Crie a coleção usando o método de criação correspondente do objeto Engine. Por exemplo, para o objeto IntsCollection, o método é CreateIntsCollection. Essas coleções também podem ser valores de retorno de alguns métodos.
  2. Adicione objetos existentes à coleção usando seu método Add. É possível iterar pela coleção usando sua propriedade Count somente leitura, a propriedade Element de leitura e escrita e o método Item. A primeira retorna o número de elementos efetivamente contidos na coleção; a segunda e a terceira fornecem acesso ao elemento no índice especificado. A propriedade Element permite acessar um elemento da coleção usando o operador [] em C#.
  3. Se necessário, modifique a coleção usando outros métodos disponíveis: InsertAt, DeleteAt, DeleteAll.
  4. Passe a coleção para o método que a requer como parâmetro.
Um exemplo de uso do objeto IntsCollection em C#:
 
for( int i = 0; i < Document.Pages.Count; i++ )
{
 if( Document.Pages[i].PageStructureOutOfDate )
 {
  pageIndices.Add( i );
 }
}
// Passa a coleção criada de índices de página para um método de processamento
if( pageIndices.Count > 0 || Document.DocumentStructureOutOfDate )
{
 Document.SynthesizePages( pageIndices, null );
}

Coleções de objetos filhos

Outro tipo representa uma coleção de objetos filhos de um objeto pai. Essas coleções existem enquanto o objeto pai existir. Por meio delas, você pode adicionar ou remover objetos filhos do objeto pai. Quando você adiciona um elemento à coleção, um novo objeto é criado internamente e, em seguida, adicionado à coleção. Exemplos dessas coleções: DictionaryDescriptions – uma coleção de objetos de descrição de dicionário; BaseLanguages – uma coleção de idiomas base. Para usar essas coleções:
  1. Obtenha a coleção por meio da propriedade do objeto pai. Por exemplo, se você quiser acessar a coleção de idiomas base de um idioma de reconhecimento, use a propriedade DictionaryDescriptions do objeto BaseLanguage.
  2. Percorra a coleção usando as propriedades somente leitura Count e Element e o método Item. A primeira retorna o número de elementos efetivamente contidos na coleção; a segunda e a terceira retornam o elemento no índice especificado. A propriedade Element permite acessar um elemento da coleção usando o operador [] em C#.
  3. Se necessário, adicione novos elementos à coleção usando o método AddNew. Os métodos AddNew de diferentes coleções podem ter uma sintaxe ligeiramente diferente, mas todos fazem a mesma coisa: criam um novo elemento da coleção e o adicionam a ela. Você pode excluir elementos usando os métodos DeleteAt e DeleteAll.
Um exemplo de uso do objeto DictionaryDescriptions em C#:
FREngine.IEngine Engine = null;
FREngine.IBaseLanguage baseLanguage = null;
// Inicialize o Engine e obtenha um idioma base de um idioma de texto
...
// Obtenha a coleção de descrições de dicionário de um idioma base e remova todos os itens
IDictionaryDescriptions dictionaryDescriptions = baseLanguage.DictionaryDescriptions;
dictionaryDescriptions.DeleteAll();
// Crie uma descrição de dicionário do usuário e adicione-a à coleção
IDictionaryDescription dictionaryDescription = dictionaryDescriptions.AddNew( DictionaryTypeEnum.DT_UserDictionary );

Coleções somente leitura

Algumas coleções de objetos filhos são somente leitura. Isso significa que elas não têm métodos de edição; você só pode iterar por seus elementos e visualizá-los. Exemplos dessas coleções são: PredefinedLanguages – uma coleção de idiomas predefinidos, Paragraphs – uma coleção de parágrafos de um texto. Para visualizar os elementos dessas coleções:
  1. Obtenha a coleção por meio da propriedade do objeto pai. Por exemplo, se você quiser acessar a coleção de parágrafos de um texto, use a propriedade Paragraphs do objeto Text.
  2. Percorra a coleção usando as propriedades somente leitura Count e Element e o método Item. A primeira retorna o número de elementos efetivamente contidos na coleção; a segunda e a terceira retornam o elemento no índice especificado. A propriedade Element permite acessar um elemento da coleção usando o operador [] em C#.
Um exemplo de uso do objeto Paragraphs em C#:
FREngine.IEngine Engine = null;
FREngine.IBlock block = null;
// Inicialize o Engine, reconheça um documento e obtenha um bloco de texto de um layout
...
FREngine.ITextBlock textBlock = block.GetAsTextBlock();
// Percorra os parágrafos do texto do bloco
int paragraphsCount = textBlock.Text.Paragraphs.Count;
for (int iPar = 0; iPar < paragraphsCount; iPar++)
{
 FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar];
 string text = par.Text;
}

Todas as coleções disponíveis

Abaixo está a lista completa das coleções disponíveis no FineReader Engine. Algumas dessas coleções oferecem métodos adicionais para trabalhar com elementos. Veja os detalhes na tabela abaixo.

  • – esta coleção tem um método adicional Find.
  • – esta coleção tem um método adicional Find, enquanto o método AddNew é substituído pelo método Add.
  • – esta coleção também é um dicionário; portanto, a propriedade Element é substituída pela propriedade Value.
  • – esta coleção de objetos filhos difere das demais do mesmo tipo. Ela não possui o método AddNew; em vez disso, é possível usar o método AddPage do objeto pai FRDocument. Ela também não possui o método DeleteAll e conta com os métodos adicionais IndexOf, Remove e Swap.
  • – esta coleção não possui o método DeleteAt .
  • – esta coleção tem o método AddFromFile e o método AddFromMemory (Windows) em vez do método AddNew.
  • – esta coleção tem um método adicional IndexOf.
  • – esta coleção tem um método adicional Find.
  • – esta coleção tem um método adicional IndexOf.
  • – esta coleção tem um método adicional Find.
  • – esta coleção tem um método adicional GetSourcePageIndex.
  • – esta coleção tem os métodos adicionais IndexOf, Merge e Split.
  • (somente Linux e Windows) – Esta coleção se diferencia de todas as outras por conter constantes de enumeração, e não objetos. Ela também possui um método adicional Find.
    • – esta coleção possui os métodos adicionais Delete, Has.
    • – esta coleção possui os métodos adicionais Delete, Has, e as propriedades CustomMenuEnabled , StandardMenuEnabled.

Trabalhando com collections em .NET

Todas as interfaces de collection derivam da interface IEnumerable. Isso significa que você pode usar a instrução foreach em C# (for each no Visual Basic) para manipular collections. Observe que trabalhar com collections usando foreach tem algumas particularidades — por exemplo, enumeradores não podem ser usados para modificar a collection, apenas para ler os dados nela contidos. Consulte as observações em msdn.microsoft.com. Um exemplo de uso do foreach com a collection FRPages em C#:
FREngine.IFRDocument document;
// Presumimos que o documento contém algumas páginas
...
foreach( FREngine.IFRPage page in document.Pages ) {
 // faça algo com a página
}