예제 #1
0
        public void Executar(Pagina pagina, Veros.Paperless.Model.Entidades.Imagem imagem)
        {
            this.reconheceImagem = IoC.Current.Resolve <IReconheceImagem>();

            var tipoDocumento = pagina.Documento.TipoDocumento;

            if (tipoDocumento.PodeSerReconhecido() == false)
            {
                return;
            }

            var tipoReconhecivel = this.ObterTipoReconhecivel(tipoDocumento);

            var resultadoReconhecimento = this.reconheceImagem
                                          .Reconhecer(imagem.Caminho, tipoReconhecivel);

            ////this.postaImagemReconhecidaServico
            ////    .Executar(pagina.Id, imagem, resultadoReconhecimento.CaminhoImagemProcessada);

            this.salvarReconhecimentoPaginaServico
            .Executar(pagina, resultadoReconhecimento);

            this.adicionaQuantidadeLicencaConsumida
            .Executar(pagina, resultadoReconhecimento.LicencasUtilizadas);
        }
 public OrdenarPaginasPacServico(
     IPaginaRepositorio paginaRepositorio,
     IBaixaArquivoFileTransferServico baixarArquivoFileTransfer,
     IReconheceImagem reconheceImagem)
 {
     this.paginaRepositorio         = paginaRepositorio;
     this.baixarArquivoFileTransfer = baixarArquivoFileTransfer;
     this.reconheceImagem           = reconheceImagem;
 }
예제 #3
0
        public void Executar(Documento documentoPac)
        {
            if (documentoPac.TipoDocumento.TipoDocumentoEhMestre == false)
            {
                Log.Application.DebugFormat("Documento #{0} não é uma pac", documentoPac.Id);
                return;
            }

            this.gravaLogDocumentoServico.Executar(
                LogDocumento.AcaoDocumentoOcr,
                documentoPac.Id,
                string.Format("Documento processado no ocr pela máquina {0}", Environment.MachineName));

            Log.Application.DebugFormat("Iniciando ordenação das paginas da pac #{0} ", documentoPac.Id);

            var recortesPac = new List <string>();
            var paginasPac  = documentoPac.Paginas.ToList();

            if (paginasPac.Count == 0)
            {
                Log.Application.Error("Documento mestre sem páginas");
                return;
            }

            foreach (var pagina in paginasPac)
            {
                var recortesPagina = this.ObterRecortesDaPagina(documentoPac, pagina);

                if (recortesPagina == null)
                {
                    return;
                }

                recortesPac.AddRange(recortesPagina);
            }

            var imagemJuntada = this.juntaImagensDeCabecalhoRodapePac
                                .Executar(recortesPac.ToArray());

            ResultadoReconhecimento resultadoReconhecimento;

            try
            {
                this.reconheceImagem = IoC.Current.Resolve <IReconheceImagem>();

                resultadoReconhecimento = this.reconheceImagem
                                          .Reconhecer(imagemJuntada, Image.TipoDocumentoReconhecivel.CabecalhoRodapePac);
            }
            catch (System.Exception exception)
            {
                Log.Application.Error("Não foi possível ordenar paginas da pac.", exception);
                return;
            }

            ////this.ordenarPaginasPacServico.Executar(paginasPac, resultadoReconhecimento);
        }
예제 #4
0
 public ReconhecePaginaPac(
     IBaixaArquivoFileTransferServico baixarArquivoFileTransfer,
     ISalvarReconhecimentoPaginaServico salvarReconhecimentoPaginaServico,
     IAdicionaQuantidadeLicencaConsumida adicionaQuantidadeLicencaConsumida,
     IReconheceImagem reconheceImagem)
 {
     this.baixarArquivoFileTransfer          = baixarArquivoFileTransfer;
     this.salvarReconhecimentoPaginaServico  = salvarReconhecimentoPaginaServico;
     this.adicionaQuantidadeLicencaConsumida = adicionaQuantidadeLicencaConsumida;
     this.reconheceImagem = reconheceImagem;
 }