Este cenário é usado para processar documentos em papel e salvá-los em um arquivo digital, especialmente na criação de um arquivo de contratos, documentação de projetos, faturas, certificados etc.Neste cenário de processamento, documentos em papel são convertidos em cópias digitais não editáveis que contêm todas as informações do documento em um formato pesquisável. Como resultado desse processamento, as cópias digitais dos documentos podem ser facilmente encontradas em um arquivo eletrônico usando a pesquisa de texto completo, trechos de texto do documento podem ser copiados, e os documentos podem ser enviados por e-mail ou impressos.Para criar uma cópia digital, o documento primeiro precisa passar por várias etapas de processamento, cada uma com suas próprias particularidades:
Pré-processamento de imagens digitalizadas
As imagens digitalizadas podem exigir algum pré-processamento antes do reconhecimento, por exemplo, se os documentos digitalizados contiverem ruído de fundo, texto inclinado, cores invertidas, margens pretas, orientação incorreta ou resolução inadequada.
Reconhecimento simultâneo de um grande volume de documentos
Para extrair dados textuais de um documento, ele precisa ser reconhecido. Ao processar um grande volume de documentos, o processamento simultâneo de documentos pode ser útil. Nesse caso, a carga de trabalho de análise e reconhecimento pode ser distribuída entre os núcleos do processador, o que permite acelerar o processamento.
Exportação para um formato de arquivamento
O documento reconhecido é salvo em um formato de armazenamento adequado. Os formatos mais convenientes para armazenar documentos são PDF, PDF/A, PDF e PDF/A com MRC. Ao salvar nesses formatos, pode-se usar um modo no qual o texto é colocado sob a imagem do documento — isso permite preservar integralmente a formatação do documento e viabiliza a pesquisa de texto completo. As configurações de MRC permitem reduzir significativamente o tamanho do arquivo sem perda de qualidade visual. Além disso, ao salvar no formato PDF, é possível personalizar as configurações de segurança do documento, protegendo-o contra visualização e impressão não autorizadas.
Os exemplos de código fornecidos neste tópico são específicos para Windows.
Abaixo está uma descrição detalhada da maneira recomendada de usar o ABBYY FineReader Engine 12 para criar cópias digitais de documentos para arquivamento. O método proposto usa as configurações de processamento mais adequadas para essa finalidade. Nesta implementação, a etapa de digitalização dos documentos foi omitida. Consulte Otimização adicional para tarefas específicas abaixo para obter dicas sobre como implementar a digitalização.
Etapa 1. Carregar 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 de nível mais alto na hierarquia de objetos do ABBYY FineReader Engine e fornece diversas configurações globais, alguns métodos de processamento e métodos para criar os demais objetos.Para criar o objeto Engine, você pode usar a função InitializeEngine. Consulte também outras formas de carregar o objeto Engine (Win).
// Inicialize estas variáveis com o caminho para FREngine.dll, o ID do projeto do cliente do FineReader Engine,// e, se aplicável, o caminho para o token da Licença Online e a senha da Licença Onlinewchar_t* FreDllPath;wchar_t* CustomerProjectId;wchar_t* LicensePath; // se você não usar uma Licença Online, atribua strings vazias a estas variáveiswchar_t* LicensePassword;// HANDLE para FREngine.dllstatic HMODULE libraryHandle = 0;// Objeto global do FineReader EngineFREngine::IEnginePtr Engine;void LoadFREngine(){ if( Engine != 0 ) { // Já carregado return; } // Primeira etapa: carregar FREngine.dll if( libraryHandle == 0 ) { libraryHandle = LoadLibraryEx( FreDllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH ); if( libraryHandle == 0 ) { throw L"Erro ao carregar o ABBYY FineReader Engine"; } } // Segunda etapa: obter o objeto Engine typedef HRESULT ( STDAPICALLTYPE* InitializeEngineFunc )( BSTR, BSTR, BSTR, BSTR, BSTR, VARIANT_BOOL, FREngine::IEngine** ); InitializeEngineFunc pInitializeEngine = ( InitializeEngineFunc )GetProcAddress( libraryHandle, "InitializeEngine" ); if( pInitializeEngine == 0 || pInitializeEngine( CustomerProjectId, LicensePath, LicensePassword, L"", L"", VARIANT_FALSE, &Engine ) != S_OK ) { UnloadFREngine(); throw L"Erro ao carregar o ABBYY FineReader Engine"; }}
Etapa 2. Carregando as configurações do cenário
O ABBYY FineReader Engine permite carregar todas as configurações de processamento mais adequadas para este cenário usando o método LoadPredefinedProfile do objeto Engine. Esse método recebe o nome do perfil como parâmetro de entrada. Consulte Working with Profiles para mais informações.O ABBYY FineReader Engine oferece suporte a 2 variantes de configuração para este cenário:
Nome do perfil
Descrição
DocumentArchiving_Accuracy
As configurações foram otimizadas para maior precisão:
Permite detectar o máximo de texto em uma imagem, incluindo texto incorporado à imagem.
A síntese completa da estrutura lógica de um documento não é realizada.
O perfil não se destina à conversão de um documento em RTF, DOCX ou PDF somente texto. Use os perfis de conversão de documentos para essa finalidade.
DocumentArchiving_Speed
As configurações foram otimizadas para maior velocidade de processamento:
Permite detectar o máximo de texto em uma imagem, incluindo texto incorporado à imagem.
A correção de inclinação não é realizada.
A síntese completa da estrutura lógica de um documento não é realizada.
Os processos de análise e reconhecimento de documentos são acelerados.
O perfil não se destina à conversão de um documento em RTF, DOCX ou PDF somente texto. Use os perfis de conversão de documentos para essa finalidade.
O ABBYY FineReader Engine fornece o objeto FRDocument, que permite processar documentos com várias páginas. O uso desse objeto permite preservar a organização lógica do documento.Para carregar imagens de um único documento e pré-processá-las, você deve criar o objeto FRDocument e adicionar imagens a ele. Você pode fazer uma das opções a seguir:
Criar o objeto FRDocument usando o método CreateFRDocumentFromImage do objeto Engine. Esse método cria o objeto FRDocument e carrega imagens do arquivo especificado.
// Criar o objeto FRDocument a partir de um arquivo de imagemFREngine.IFRDocument frDocument = engine.CreateFRDocumentFromImage( "C:\\MyImage.tif", null );
// Criar o objeto FRDocument a partir de um arquivo de imagemFREngine::IFRDocumentPtr frDocument = Engine->CreateFRDocumentFromImage( L"C:\\MyImage.tif", 0 );
Etapa 4. Reconhecimento de documento
Para reconhecer um documento, recomendamos usar os métodos de análise e reconhecimento do objeto FRDocument. Esse objeto oferece uma ampla variedade de métodos para análise, reconhecimento e síntese de documentos. O método mais prático, que permite executar a análise, o reconhecimento e a síntese do documento em uma única chamada, é o método Process. Ele também aproveita da forma mais eficiente os recursos de processamento simultâneo de sistemas multiprocessador e multinúcleo. No entanto, você também pode executar em sequência o pré-processamento, a análise, o reconhecimento e a síntese usando os métodos Preprocess, Analyze, Recognize e Synthesize.
// Analisa, reconhece e sintetiza o documento// Não há necessidade de parâmetros adicionais, pois eles são definidos pelo perfil de processamentofrDocument.Process( null );
// Analisa, reconhece e sintetiza o documento// Não há necessidade de parâmetros adicionais, pois eles são definidos pelo perfil de processamentofrDocument->Process( 0 );
Etapa 5. Exportação de documento
Para salvar um documento reconhecido, você pode usar o método Export do objeto FRDocument, passando a constante FileExportFormatEnum como um dos parâmetros. Nesse cenário, por exemplo, é possível salvar o documento no formato PDF usando MRC no modo de exportação PEM_ImageOnText (propriedade TextExportMode do objeto PDFExportParams). Você pode alterar os parâmetros padrão de exportação usando o objeto de exportação correspondente. Consulte Otimização adicional para tarefas específicas abaixo para mais informações.Depois de concluir o trabalho com o objeto FRDocument, libere todos os recursos usados por ele. Use o método IFRDocument::Close.
// Salva um documento reconhecido em um formato de arquivamento (por exemplo, PDF)// Cria um objeto PDFExportParamsFREngine.PDFExportParams exportParams = engine.CreatePDFExportParams();// Define os parâmetros necessáriosexportParams.MRCMode = FREngine.PDFMRCModeEnum.MRC_Auto;exportParams.TextExportMode = FREngine.PDFExportModeEnum.PEM_ImageOnText;// Usa os parâmetros durante a exportaçãofrDocument.Export( "C:\\MyText.pdf", FREngine.FileExportFormatEnum.FEF_PDF, exportParams );// Libera o objeto FRDocumentfrDocument.Close();
// Salva um documento reconhecido em um formato de arquivamento (por exemplo, PDF)// Cria um objeto PDFExportParamsFREngine::IPDFExportParamsPtr params = Engine->CreatePDFExportParams();// Define os parâmetros necessáriosparams->MRCMode = FREngine::MRC_Auto;params->TextExportMode = FREngine::PEM_ImageOnText;// Usa os parâmetros durante a exportaçãofrDocument->Export(L"C:\\MyText.pdf", FREngine::FEF_PDF, params);// Libera o objeto FRDocumentfrDocument->Close();
Etapa 6. Descarregando o ABBYY FineReader Engine
Depois de concluir o trabalho com o ABBYY FineReader Engine, você precisa descarregar o objeto Engine. Para fazer isso, use a função exportada DeinitializeEngine.
Você pode usar o arquivo FREngineDistribution.csv para criar automaticamente uma lista dos arquivos necessários para que seu aplicativo funcione. Para o processamento neste cenário, selecione na coluna 5 (RequiredByModule) os seguintes valores:CoreCore.ResourcesOpeningOpening, ProcessingProcessingProcessing.OCRProcessing.OCR, Processing.ICRProcessing.OCR.NaturalLanguagesProcessing.OCR.NaturalLanguages, Processing.ICR.NaturalLanguagesExportExport, ProcessingExport.PdfExport.Pdf, Opening.PdfSe você modificar o cenário padrão, altere os módulos necessários conforme apropriado. Você também precisa especificar os idiomas da interface, os idiomas de reconhecimento e todos os recursos adicionais usados pelo seu aplicativo (como, por exemplo, Opening.PDF se precisar abrir arquivos PDF, ou Processing.OCR.CJK se precisar reconhecer textos em idiomas CJK). Consulte Working with the FREngineDistribution.csv File para mais detalhes.
Abaixo está uma visão geral dos tópicos da Ajuda que contêm informações adicionais sobre a personalização das configurações em diferentes etapas do processamento de documentos:
Digitalização - somente para Windows
Digitalização Descrição do cenário de digitalização de documentos no ABBYY FineReader Engine.
Reconhecer texto manuscrito Os perfis DocumentArchiving_*** não incluem o reconhecimento de texto manuscrito nem de texto escrito à mão em letras de forma. Se você precisar reconhecer texto manuscrito, defina a propriedade DetectHandwritten do objeto PageAnalysisParams como TRUE.
Objeto PageProcessingParams Este objeto permite configurar os parâmetros de análise e reconhecimento. Com este objeto, você pode indicar quais características da imagem e do texto devem ser detectadas (imagem invertida, orientação, códigos de barras, idioma para reconhecimento, margem de erro no reconhecimento).
SynthesisParamsForPage Object Este objeto inclui parâmetros responsáveis por restaurar a formatação de uma página durante a síntese.
Objeto MultiProcessingParams - Implementado para Linux e Windows O processamento simultâneo pode ser útil ao processar um grande volume de imagens. Nesse caso, a carga de processamento será distribuída entre os núcleos do processador durante a abertura e o pré-processamento das imagens, a análise de layout, o reconhecimento e a exportação, o que pode acelerar o processamento. Os modos de leitura (simultâneo ou sequencial) são definidos pela propriedade MultiProcessingMode, e a propriedade RecognitionProcessesCount controla o número de processos que podem ser iniciados.
Objeto PDFExportParams Esse objeto permite ajustar a exportação para PDF (PDF/A) com apenas alguns parâmetros.
Para personalizar o modo de exportação no formato PDF (PDF/A), use a propriedade TextExportMode do objeto PDFExportParams e, para personalizar as configurações de MRC, use a propriedade MRCMode.
Além disso, você pode personalizar as configurações de exportação de imagens para garantir um processamento mais rápido, maior redução do tamanho do arquivo etc. Por exemplo, você pode salvar uma imagem colorida como imagem em escala de cinza ou em preto e branco, se isso atender ao seu cenário (use a propriedade Colority do objeto PDFExportParams).
Você pode alterar a resolução da imagem para que a cópia eletrônica resultante possa ser impressa posteriormente em uma impressora ou visualizada na tela de um computador, ou selecionar uma baixa resolução que permita apenas a leitura do texto e ofereça qualidade gráfica muito baixa (use as propriedades Resolution e ResolutionType do objeto PDFExportParams).
Separação de documentos
Nesse cenário, talvez seja necessário separar o lote de imagens em documentos. O ABBYY FineReader Engine 12 não oferece suporte à separação automática de documentos. No entanto, você pode usar o ABBYY FlexiCapture Engine para implementar essa separação automática. Os documentos podem ser separados, por exemplo, com base no número de páginas de um documento ou em páginas com códigos de barras separadores. Ao implementar a separação por código de barras, você pode usar o cenário para extrair apenas os valores de código de barras do documento.