protected override Indexacao ModificaIndexacaoDoCampoReconhecido( Indexacao indexacao, ValorReconhecido valorReconhecido, IList <PalavraReconhecida> palavras) { if (this.EhCampoAgenciaOuConta(indexacao) || this.EhCampoPacoteServicos(indexacao)) { if (indexacao.BateCom(this.ObterPrimeiroValor(valorReconhecido, indexacao.Campo))) { indexacao.PrimeiroValor = this.ObterPrimeiroValor(valorReconhecido, indexacao.Campo); indexacao.OcrComplementou = true; indexacao.DataPrimeiraDigitacao = DateTime.Now; indexacao.ValorUtilizadoParaValorFinal = ValorUtilizadoParaValorFinal.NaoDefinido; } return(indexacao); } indexacao.PrimeiroValor = this.ObterPrimeiroValor(valorReconhecido, indexacao.Campo); indexacao.OcrComplementou = true; indexacao.DataPrimeiraDigitacao = DateTime.Now; indexacao.ValorUtilizadoParaValorFinal = ValorUtilizadoParaValorFinal.NaoDefinido; return(indexacao); }
protected override Indexacao ModificaIndexacaoDoCampoReconhecido( Indexacao indexacao, ValorReconhecido valorReconhecido, IList <PalavraReconhecida> palavras) { return(indexacao); }
private string ObterPrimeiroValor( ValorReconhecido valorReconhecido, Campo campoDoDocumento) { if (Campo.CamposAssinaturaGerenteDaConta.Contains(campoDoDocumento.Id)) { if (valorReconhecido == null) { return("NP"); } return(valorReconhecido.Value == "Yes" ? "P" : "NP"); } if (Campo.CamposIndicadorMensalidadeMenor.Contains(campoDoDocumento.Id)) { if (valorReconhecido == null) { return("Erro"); } return(valorReconhecido.Value); } if (valorReconhecido.NaoTemConteudo()) { return(string.Empty); } if (valorReconhecido.Value.NaoTemConteudo()) { return(string.Empty); } ////if (Campo.CamposVersaoDaPac.Contains(campoDoDocumento.Id)) ////{ //// return VersaoPacHelper.Converter(valorReconhecido.Value); ////} ////if (Campo.CamposAgenciaDaPac.Contains(campoDoDocumento.Id)) ////{ //// return AgenciaHelper.Converter(valorReconhecido.Value); ////} ////if (Campo.CamposContasDaPac.Contains(campoDoDocumento.Id)) ////{ //// return ContaHelper.Converter(valorReconhecido.Value); ////} if (campoDoDocumento.TipoDado == TipoDado.Bool) { return(valorReconhecido.Value == "Sim" ? "S" : "N"); } return(valorReconhecido.Value); }
private string TratarCampoNome(ValorReconhecido valorReconhecido) { if (valorReconhecido == null || string.IsNullOrEmpty(valorReconhecido.Value)) { return(string.Empty); } if (this.PareceComNomeValido(valorReconhecido.Value)) { return(valorReconhecido.Value.ToUpper().RemoverDiacritico().Trim()); } return(string.Empty); }
public void Executar(Pagina pagina, ResultadoReconhecimento resultadoReconhecimento) { if (resultadoReconhecimento == null) { return; } var valoresReconhecidos = this.obtemValoresReconhecidosPaginaServico.Obter( pagina, resultadoReconhecimento); foreach (var valorReconhecido in valoresReconhecidos) { this.valorReconhecidoRepositorio.Salvar(valorReconhecido); } var tripaTexto = string.Empty; foreach (var palavra in resultadoReconhecimento.Palavras) { var palavraReconhecida = new PalavraReconhecida { Texto = palavra.Texto, Altura = palavra.Localizacao.Height, Direita = palavra.Localizacao.Right, Esquerda = palavra.Localizacao.Left, Largura = palavra.Localizacao.Width, Topo = palavra.Localizacao.Top, Pagina = pagina }; this.palavraRepositorio.Salvar(palavraReconhecida); tripaTexto += palavra.Texto + " "; } //// gravando parte das palavras reconhecidas na recvalue também, para facilitar comparações na POC. if (tripaTexto.Trim().Length > 2) { if (tripaTexto.Length > 200) { tripaTexto = tripaTexto.Substring(0, 199) + "(...)"; } var recValueFull = new ValorReconhecido() { TemplateName = "fulltextbsb", CampoTemplate = "fulltextbsb", Pagina = pagina, Value = tripaTexto }; this.valorReconhecidoRepositorio.Salvar(recValueFull); } }
private string TratarCampoCodigoNumerico(ValorReconhecido valorReconhecido) { if (valorReconhecido == null || string.IsNullOrEmpty(valorReconhecido.Value)) { return(string.Empty); } var numeros = valorReconhecido.Value.ObterInteiros(); if (numeros.Length >= 5 && numeros.Length <= 12) { return(numeros); } return(string.Empty); }
protected override Indexacao AdicionaNovaIndexacaoParaCampoReconhecido( Documento documento, ValorReconhecido valorReconhecido, Campo campoDoDocumento) { var indexacao = new Indexacao { Campo = campoDoDocumento, Documento = documento, DataPrimeiraDigitacao = DateTime.Now, OcrComplementou = true, PrimeiroValor = this.ObterPrimeiroValor(valorReconhecido, campoDoDocumento) }; documento.Indexacao.Add(indexacao); return(indexacao); }
public Indexacao AlterarIndexacao( Documento documento, ValorReconhecido valorReconhecido, Campo campoDoDocumento, Indexacao indexacao, IList <PalavraReconhecida> palavras) { if (this.PodeInserirCampoReconhecido(campoDoDocumento, indexacao)) { indexacao = this.AdicionaNovaIndexacaoParaCampoReconhecido( documento, valorReconhecido, campoDoDocumento); this.gravaLogDocumentoServico.Executar( LogDocumento.AcaoDocumentoOcr, documento.Id, string.Format("Campo [{0}] inserido pelo ocr.", campoDoDocumento.Description)); } else { if (indexacao == null) { return(null); } if (indexacao.ValorFinal.NaoTemConteudo() == false) { return(indexacao); } indexacao = this.ModificaIndexacaoDoCampoReconhecido( indexacao, valorReconhecido, palavras); this.gravaLogDocumentoServico.Executar( LogDocumento.AcaoDocumentoOcr, documento.Id, string.Format("Campo [{0}] atualizado pelo ocr.", campoDoDocumento.Description)); } return(indexacao); }
public List <ValorReconhecido> Criar(Pagina pagina, List <Tuple <string, string> > campos) { var retornoLista = new List <ValorReconhecido>(); foreach (var tupla in campos) { var valorAtual = new ValorReconhecido() { Pagina = pagina, CampoTemplate = tupla.Item1, Value = tupla.Item2, TemplateName = "ocr" }; retornoLista.Add(valorAtual); } return(retornoLista); }
public string TratarCampoDataNascimento(ValorReconhecido valorReconhecido, string valorJaCadastrado) { if (valorReconhecido == null || string.IsNullOrEmpty(valorReconhecido.Value)) { return(string.Empty); } var match = Regex.Match(valorReconhecido.Value, @"[0-9]{1,2}[ \/-][0-9]{1,2}[ \/-][0-9]{2,4}"); if (!match.Success) { match = Regex.Match(valorReconhecido.Value.ToUpper(), @"[0-9]{1,2}[ \/-]{0,1}(JAN|FEV|MAR|ABR|MAI|JUN|JUL|AGO|SET|OUT|NOV|DEZ)[ \/-]{0,1}[0-9]{2,4}"); } if (match.Success) { if (match.Value.Length <= 4 || match.Value.Length > 11) { return(string.Empty); } var resultado = string.Empty; DateTime dataConvertida; if (!DateTime.TryParse(match.Value, out dataConvertida)) { return(string.Empty); } resultado = dataConvertida.ToString("dd") + dataConvertida.ToString("MM") + dataConvertida.ToString("yyyy"); if (string.IsNullOrEmpty(valorJaCadastrado)) { return(resultado); } if (dataConvertida < DateTime.ParseExact(valorJaCadastrado, "ddMMyyyy", System.Globalization.CultureInfo.InvariantCulture)) { return(resultado); } } return(string.Empty); }
private string TratarCampoCpf(ValorReconhecido valorReconhecido) { if (valorReconhecido == null || string.IsNullOrEmpty(valorReconhecido.Value)) { return(string.Empty); } var match = Regex.Match(valorReconhecido.Value, @"[0-9]{3}[ ./\-]{0,1}[0-9]{3}[ ./\-]{0,1}[0-9]{3}[ ./\-]{0,1}[0-9]{2}"); if (match.Success) { var validaCpf = new CpfValidation(); if (validaCpf.IsValid(match.Value.ObterInteiros())) { return(match.Value.ObterInteiros()); } } return(string.Empty); }
public void ExecutarValorReconhecido(Indexacao indexacao, ValorReconhecido valorReconhecido) { new TaskFactory().StartNew(() => { try { var logBatimento = new LogBatimento { Indexacao = indexacao, CampoEngine = valorReconhecido.CampoTemplate, ValorReconhecido = valorReconhecido.Value, }; this.unitOfWork.Transacionar(() => this.logBatimentoRepositorio.Salvar(logBatimento)); } catch (Exception exception) { Log.Application.Error(exception); } }); }
private void InserirValorReconhecido(ImagemConta imagem, Pagina pagina) { try { var valorReconhecido = new ValorReconhecido { Pagina = pagina, TemplateName = "fulltext", CampoTemplate = "fulltext", Value = imagem.Ocr }; this.valorReconhecidoRepositorio.Salvar(valorReconhecido); } catch (Exception exception) { Log.Application.Error( "Erro ao processar arquivo(s) de OCR.", exception); } }
public List <ValorReconhecido> Obter(Pagina pagina, ResultadoReconhecimento resultadoReconhecimento) { //// TODO: fortalecer teste. está fraco var mapeamentos = this.mapeamentoCampos.ObterTodosExcetoPac(); var valoresReconhecidos = new List <ValorReconhecido>(); foreach (var campoReconhecidoEngine in resultadoReconhecimento.Campos) { var valorReconhecido = new ValorReconhecido(); if (campoReconhecidoEngine.Value.EhReconhecivel) { valorReconhecido.Value = campoReconhecidoEngine.Value.Texto; } valorReconhecido.SetarCampo(mapeamentos, campoReconhecidoEngine.Value); valorReconhecido.SetarCampoReconhecidoDoEngine(campoReconhecidoEngine.Value); valorReconhecido.Pagina = pagina; valoresReconhecidos.Add(valorReconhecido); } return(valoresReconhecidos); }
protected override Indexacao AdicionaNovaIndexacaoParaCampoReconhecido( Documento documento, ValorReconhecido valorReconhecido, Campo campoDoDocumento) { var indexacao = new Indexacao { Campo = campoDoDocumento, DataPrimeiraDigitacao = DateTime.Now }; documento.AdicionaIndexacao(indexacao); if (campoDoDocumento.Id != Campo.CampoDtEmissaoNumerica && campoDoDocumento.Id != Campo.CampoDtNascimentoNumerica) { return(indexacao); } //// so deve inserir para campos CampoDt*******Numerica se tiver //// reconhecido o conteúdo do respectivo campo original Indexacao indexacaoCampoOriginal = null; if (campoDoDocumento.Id == Campo.CampoDtEmissaoNumerica) { indexacaoCampoOriginal = this.indexacaoRepositorio .ObterPorCampoDeUmDocumento(Campo.CampoDataEmissao, documento); } if (campoDoDocumento.Id == Campo.CampoDtNascimentoNumerica) { indexacaoCampoOriginal = this.indexacaoRepositorio .ObterPorCampoDeUmDocumento(Campo.CampoDataNascimento, documento); } if (this.CampoOriginalFoiReconhecido(indexacaoCampoOriginal) == false) { indexacao.PrimeiroValor = string.Empty; indexacao.ValorFinal = string.Empty; indexacao.OcrComplementou = false; return(indexacao); } try { var campoMesEhNumero = this.validaDadosReconhecidosCampoData .PossuiMesNumerico(indexacaoCampoOriginal); if (campoMesEhNumero) { indexacao.PrimeiroValor = "S"; indexacao.ValorFinal = "S"; indexacao.OcrComplementou = true; } return(indexacao); } catch (Exception exception) { Log.Application.Info(exception.Message); } if (valorReconhecido.NaoTemConteudo() || valorReconhecido.Value == "E") { indexacao.PrimeiroValor = string.Empty; indexacao.ValorFinal = string.Empty; indexacao.OcrComplementou = false; return(indexacao); } indexacao.PrimeiroValor = valorReconhecido.Value; indexacao.ValorFinal = valorReconhecido.Value; indexacao.OcrComplementou = true; return(indexacao); }
private bool ConteudoEncontradoValido(ref Indexacao indexacao, Campo campoAtual, ValorReconhecido valorReconhecido) { if (indexacao == null) { indexacao = new Indexacao() { PrimeiroValor = string.Empty, Campo = campoAtual, OcrComplementou = true, UsuarioPrimeiroValor = -2 }; } var defineTipo = this.AvaliarConteudoCampo(campoAtual); var valorTratado = string.Empty; switch (defineTipo) { case TipoCampoAnalisado.DataNascimento: valorTratado = this.TratarCampoDataNascimento(valorReconhecido, indexacao.PrimeiroValor); break; case TipoCampoAnalisado.Nome: valorTratado = this.TratarCampoNome(valorReconhecido); break; case TipoCampoAnalisado.CodigoNumerico: valorTratado = this.TratarCampoCodigoNumerico(valorReconhecido); break; case TipoCampoAnalisado.Cpf: valorTratado = this.TratarCampoCpf(valorReconhecido); break; case TipoCampoAnalisado.Indefinido: valorTratado = string.Empty; return(false); default: valorTratado = string.Empty; return(false); } if (!string.IsNullOrEmpty(valorTratado)) { indexacao.PrimeiroValor = valorTratado; return(true); } return(false); }
protected abstract Indexacao AdicionaNovaIndexacaoParaCampoReconhecido(Documento documento, ValorReconhecido valorReconhecido, Campo campoDoDocumento);
protected abstract Indexacao ModificaIndexacaoDoCampoReconhecido(Indexacao indexacao, ValorReconhecido valorReconhecido, IList <PalavraReconhecida> palavras);