Пример #1
0
        public AreaRetangularDeBusca(OcorrenciaCampoDataNaCnh listaDatas)
        {
            this.Retangulo = new Rectangle();

            if (listaDatas.QuantidadeDatasEncontradas == 3)
            {
                this.pontoXLeft   = listaDatas.ObterPosicao(1).Localizacao.Left;
                this.pontoYTop    = (int)Math.Floor(listaDatas.ObterPosicao(0).Localizacao.Top + (0.21 * Math.Abs(listaDatas.ObterPosicao(0).Localizacao.Top - listaDatas.ObterPosicao(2).Localizacao.Top)));
                this.pontoYBottom = (int)Math.Floor(listaDatas.ObterPosicao(0).Localizacao.Top + (0.6666 * Math.Abs(listaDatas.ObterPosicao(0).Localizacao.Top - listaDatas.ObterPosicao(2).Localizacao.Top)));

                var width  = Math.Abs(listaDatas.ObterPosicao(0).Localizacao.Right - this.pontoXLeft);
                var height = Math.Abs(this.pontoYBottom - this.pontoYTop);
                this.Retangulo = new Rectangle(this.pontoXLeft,
                                               this.pontoYTop,
                                               width,
                                               height);
            }

            if (listaDatas.QuantidadeDatasEncontradas == 2)
            {
                this.pontoXLeft   = Math.Abs(listaDatas.ObterPosicao(0).Localizacao.Right - 288);
                this.pontoYTop    = (int)Math.Floor(listaDatas.ObterPosicao(0).Localizacao.Top + (0.21 * Math.Abs(listaDatas.ObterPosicao(0).Localizacao.Top - listaDatas.ObterPosicao(1).Localizacao.Top)));
                this.pontoYBottom = (int)Math.Floor(listaDatas.ObterPosicao(0).Localizacao.Top + (0.6666 * Math.Abs(listaDatas.ObterPosicao(0).Localizacao.Top - listaDatas.ObterPosicao(1).Localizacao.Top)));

                var width  = Math.Abs(listaDatas.ObterPosicao(0).Localizacao.Right - this.pontoXLeft);
                var height = Math.Abs(this.pontoYBottom - this.pontoYTop);
                this.Retangulo = new Rectangle(this.pontoXLeft,
                                               this.pontoYTop,
                                               width,
                                               height);
            }
        }
Пример #2
0
        public List <dynamic> MontarListaFiliacaoCnh(IList <PalavraReconhecida> palavras)
        {
            var resultado = new List <dynamic>();

            if (palavras == null)
            {
                return(resultado);
            }

            if (palavras.Count == 0)
            {
                return(resultado);
            }

            var listadatas = new OcorrenciaCampoDataNaCnh();

            listadatas.LocalizarDatas(palavras);

            if (listadatas.QuantidadeDatasEncontradas < 2)
            {
                return(resultado);
            }

            if (listadatas.PossuiDistanciaMinimaEntreDatas())
            {
                return(resultado);
            }

            //// monta área de busca (retangulo) para delimitar palavras encontradas
            //// o retângulo de busca corresponde exatamente ao quadrado "Filiação" da CNH, usando as posições de data encontradas anteriormente como âncoras
            var retanguloFiliacao = new AreaRetangularDeBusca(listadatas);

            //// devole apenas as palavras dentro do retângulo de busca
            for (int i = listadatas.PosicaoPrimeiraDataNaListaOriginal; i < listadatas.PosicaoUltimaDataNaListaOriginal; i++)
            {
                var dynamic = palavras[i];
                if (this.RetContemRet(retanguloFiliacao.Retangulo, dynamic.Localizacao))
                {
                    ////resultado.Add(new dynamic()
                    ////{
                    ////    Localizacao = dynamic.Localizacao,
                    ////    Texto = dynamic.Texto.RemoveAcentuacao()
                    ////            .RemoverDiacritico()
                    ////            .RemoveCaracteresNaoAlfa(true)
                    ////            .ToLower()
                    ////            .Trim()
                    ////});
                }
            }

            return(resultado);
        }