Pular para o conteúdo principal
Este tópico se aplica ao FRE para Linux .
Esse método de carregamento permite carregar o ABBYY FineReader Engine como um servidor out-of-process em um processo separado. Se esse método de carregamento for usado, todos os objetos do ABBYY FineReader Engine serão totalmente thread-safe. Cada instância do FineReader Engine é executada em um processo separado, em paralelo com as demais instâncias. Isso permite criar um pool de processadores e aproveitar ao máximo a capacidade da CPU disponível. Por esse motivo, o uso desse método é particularmente adequado para aplicativos de servidor. Para carregar o Engine em um processo separado como um servidor out-of-process, use os arquivos fornecidos na distribuição:
  • O arquivo OutprocEngineLoader.h declara os métodos de inicialização e desinicialização do objeto Engine (para C++, use as funções InitializeEngine e ExplicitlyUnload declaradas neste arquivo de cabeçalho).
  • O arquivo FREgnineOutproc.h é incluído em OutprocEngineLoader.h. Ele é análogo ao arquivo FREngine.h para soluções multithread e oferece suporte aos mesmos métodos e interfaces, exceto os métodos de contagem de referências e os métodos com parâmetros SAFEARRAY.
  • Os métodos declarados em FREngineOutproc.h não tratam ciclos de referência. Por isso, uma implementação específica de SafePtr é fornecida no arquivo OutprocSafePtr.h, que você pode encontrar nos exemplos de código que descrevem o carregamento como um servidor out-of-process. Você pode incluir esse arquivo de cabeçalho ou criar o seu próprio.
  • Cada carregamento do Engine em um processo separado requer uma porta TCP. O arquivo de configuração OutprocConfig.ini contém o intervalo de portas disponíveis para comunicação entre processos.
  • Se o seu aplicativo usar С++, vincule também a biblioteca libOutprocClientLib.so ao projeto.
  • Se você usar o wrapper Java, use com.abbyy.Outproc.FREngine.jar em vez de com.abbyy.FREngine.jar. Esses arquivos estão incluídos no ABBYY FineReader Engine pacote de distribuição.
Consulte os exemplos de código Hello (Outproc) e Multithreading, que demonstram o carregamento do Engine como um servidor out-of-process e fornecem uma solução reutilizável para aplicativos multithread em C++ e Java. O objeto Engine carregado como um servidor out-of-process tem algumas particularidades no uso de objetos e métodos do ABBYY FineReader Engine:
  • Você deve especificar o modo sequencial de processamento de documentos definindo a propriedade MultiProcessingMode do objeto MultiProcessingParams como MPM_Sequential.
  • Você deve passar NULL para parâmetros derivados de IUnknown. Esses parâmetros são usados com frequência em métodos de exportação. Para passar os parâmetros de exportação de outra forma, crie um perfil de usuário com as configurações desejadas.
  • O objeto Engine carregado como um servidor out-of-process não oferece suporte a:
    • callbacks e métodos com parâmetros derivados de callbacks
    • interfaces e métodos para abrir imagens a partir da memória
Você também pode acelerar a iteração do layout do documento com o esquema descrito em Trabalhando com Layout e Blocos.