- Criação de um banco de dados de classificação
- Classificação de documentos
Implementação do cenário
Os exemplos de código fornecidos neste tópico são específicos do Windows.
Etapa 1. Carregando o ABBYY FineReader Engine
Etapa 1. Carregando o ABBYY FineReader Engine
Para começar a trabalhar com o ABBYY FineReader Engine, você precisa criar o objeto Engine. O objeto Engine é o objeto principal na hierarquia de objetos do ABBYY FineReader Engine e fornece várias configurações globais, alguns métodos de processamento e métodos para criar outros objetos.Para criar o objeto Engine, você pode usar a função InitializeEngine. Veja também outras formas de carregar o objeto Engine (Win).
C#
Etapa 2. Criando o ClassificationEngine
Etapa 2. Criando o ClassificationEngine
Crie um objeto ClassificationEngine, que serve como fábrica para outros objetos da API de classificação. Use o método CreateClassificationEngine do objeto Engine.
C#
Etapa 3. Preparando os objetos de classificação
Etapa 3. Preparando os objetos de classificação
Os métodos de treinamento e classificação trabalham com um tipo especial de objeto criado a partir de um documento ou de uma página: ClassificationObject, que contém todas as informações relevantes para a classificação.Para preparar um documento para uso em um cenário de classificação, faça o seguinte:
- Carregue as imagens para processamento. Há várias formas de fazer isso: por exemplo, você pode criar o objeto FRDocument com o método CreateFRDocument do objeto Engine e, em seguida, adicionar imagens ao objeto FRDocument criado a partir de um arquivo usando o método AddImageFile.
- Se você for treinar ou usar um classificador do tipo que leva em conta recursos de texto (CT_Combined, CT_Text), primeiro reconheça o documento usando qualquer método conveniente. Usaremos os métodos Analyze e Recognize do objeto FRDocument. A síntese de documentos não é necessária para a classificação.
Embora o processamento paralelo não seja compatível com a classificação em si, ele pode ser necessário para o reconhecimento preparatório dos documentos no Windows e no Linux. Se o número de documentos que você pretende classificar for grande, recomendamos usar o Batch Processor ou outros métodos de processamento paralelo descritos em Parallel Processing with ABBYY FineReader Engine.
- Use o método CreateObjectFromDocument do objeto ClassificationEngine para criar um ClassificationObject contendo as informações da primeira página do documento. Se precisar usar outra página do documento, chame o método CreateObjectFromPage.
- A propriedade Description do ClassificationObject fica vazia por padrão. Especifique essa propriedade se precisar de uma descrição relevante.
Às vezes, pode acontecer de o documento ou a página reconhecida ainda assim não conter texto reconhecido (por exemplo, se uma página vazia tiver sido usada por engano). Nesse caso, o ClassificationObject não poderá ser usado com classificadores que exigem recursos de texto. Você pode usar a propriedade SuitableClassifiers para fazer uma verificação adicional.
C#
Etapa 4. Criação de um conjunto de dados de treinamento
Etapa 4. Criação de um conjunto de dados de treinamento
Para treinar um classificador capaz de distinguir vários tipos de documentos, você precisa de um conjunto de dados categorizado que contenha amostras de cada tipo. Use o objeto TrainingData para popular e gerenciar esse conjunto de dados:
- Crie um objeto vazio com o método CreateTrainingData do objeto ClassificationEngine.
- Acesse a coleção de categorias por meio da propriedade Categories.
- Use o método AddNew do objeto Categories várias vezes para adicionar uma categoria para cada tipo de documento que você pretende classificar. O método requer uma string com o rótulo da categoria como parâmetro de entrada. O rótulo será retornado pelos métodos de classificação, portanto deve ser exclusivo no conjunto de categorias.
- Para cada objeto Category recém-adicionado, abra a coleção de objetos de classificação usando a propriedade Objects. Com o método IClassificationObjects::Add, adicione os objetos de classificação correspondentes a essa categoria.
Nenhuma categoria pode ficar vazia. Por motivos óbvios, pelo menos duas categorias são necessárias para o treinamento. - Agora que você configurou o conjunto de dados de treinamento, talvez queira salvá-lo em um arquivo no disco para uso posterior, por exemplo, caso a precisão do modelo treinado se mostre insatisfatória e você queira adicionar ou corrigir alguns dados para melhorar a qualidade. O objeto TrainingData fornece o método SaveToFile.
C#
Etapa 5. Treinamento do modelo de classificação
Etapa 5. Treinamento do modelo de classificação
A funcionalidade de treinamento de modelos é fornecida pelo objeto Trainer. Use o método CreateTrainer do objeto ClassificationEngine para criá-lo.Ele contém todas as configurações para o tipo de classificador e o procedimento de treinamento, em dois subobjetos TrainingParams e ValidationParams. Decida quais configurações você precisa e altere as Properties correspondentes:A propriedade ITrainingResult::Model fornece acesso ao modelo de classificação treinado. Você pode salvá-lo em um arquivo com o auxílio do método SaveToFile ou utilizá-lo diretamente para classificar documentos (prossiga para a Etapa 6).
- O tipo de classificador (ITrainingParams::ClassifierType). Essa configuração determina quais características do documento são consideradas na atribuição de uma categoria: características da imagem, conteúdo do texto reconhecido ou ambos. Para selecionar um tipo que use o conteúdo do texto, você precisa garantir que todos os objetos de classificação no conjunto de dados de treinamento tenham sido criados com base em documentos previamente reconhecidos.
- O modo de treinamento (ITrainingParams::TrainingMode). Essa configuração determina se o processo de treinamento deve priorizar alta precisão (quantos dos elementos selecionados estão corretos), alta cobertura (quantos dos elementos corretos são selecionados) ou um equilíbrio entre as duas.
- Se a validação cruzada k-fold deve ser utilizada (IValidationParams::ShouldPerformValidation). Recomendamos usar a validação cruzada quando sua amostra de treinamento não for muito grande, pois isso permite treinar vários modelos em diferentes partições da mesma amostra e selecionar o melhor. Se você tiver um grande volume de dados categorizados, pode ser melhor desativar a validação, treinar o modelo com toda a amostra de treinamento e, em seguida, usar os métodos de classificação (Etapa 6) para testar o modelo em outra amostra, calculando as métricas de desempenho por conta própria.
- Os parâmetros da validação cruzada k-fold: o número de partes em que a amostra de treinamento é dividida (IValidationParams::FoldsCount) e o número de iterações (IValidationParams::RepeatCount). Observe que, em cada iteração, o número mínimo necessário de objetos no conjunto de treinamento é 4 para o classificador de texto e 8 para o classificador combinado. Certifique-se de que sua amostra de treinamento contenha objetos suficientes.
O treinamento e a classificação de modelos serão realizados em modo sequencial no Linux e no Windows, independentemente do valor de IMultiProcessingParams::MultiProcessingMode.
C#
Etapa 6. Classificação de documentos
Etapa 6. Classificação de documentos
Para usar o modelo treinado para classificação:
- Se o modelo não estiver carregado no momento, chame o método CreateModelFromFile do objeto ClassificationEngine para carregá-lo de um arquivo no disco.
- Prepare os objetos de classificação com base nos documentos que você precisa classificar, conforme descrito na Etapa 3.
- Para cada objeto de classificação, chame o método Classify do objeto Model, usando o ClassificationObject como parâmetro de entrada. O método retorna uma coleção de objetos ClassificationResult, cada um contendo o rótulo da categoria e a probabilidade dessa categoria. Os resultados são ordenados por probabilidade, da maior para a menor. Recupere o resultado e verifique se o nível de probabilidade é aceitável para você.
Se o classificador não conseguir atribuir uma categoria, será retornado null em vez da coleção de resultados.
O treinamento do modelo e a classificação serão executados em modo sequencial no Linux e no Windows, independentemente do valor de IMultiProcessingParams::MultiProcessingMode.
C#
Etapa 7. Descarregando o ABBYY FineReader Engine
Etapa 7. Descarregando o ABBYY FineReader Engine
Após concluir seu trabalho com o ABBYY FineReader Engine, você precisa descarregar o objeto Engine. Para isso, use a função exportada DeinitializeEngine.
C#
Recursos necessários
Otimização adicional
- Carregamento do Engine - Somente Windows
- Diferentes maneiras de carregar o objeto Engine
Descreve em detalhes as diferentes formas de carregar o objeto Engine. - Uso do ABBYY FineReader Engine em aplicativos de servidor multithread
Aborda as particularidades do uso do FineReader Engine em aplicativos de servidor.
- Diferentes maneiras de carregar o objeto Engine
- Reconhecimento - Para Linux e Windows
- Processamento paralelo com ABBYY FineReader Engine
Para preparar rapidamente os documentos ou páginas reconhecidos para um classificador com recursos de texto, use o processamento paralelo no reconhecimento e depois desative o multiprocessamento para a classificação.
- Processamento paralelo com ABBYY FineReader Engine
