Forum Replies Created

Viewing 15 posts - 61 through 75 (of 427 total)
  • Author
    Posts
  • in reply to: Projeto 3 #47266
    Gabriel Alves
    Keymaster

      Que ótimo que conseguiu descobrir

      Esse problema deve ocorrer porque alguns PDFs possuem conteúdos mal formatados ou usam codificação que dificulta a extração adequada do texto, resultando em palavras juntas ou sem espaçamento. Talvez quando você abriu o PDF com o Word e salvou novamente, o Word automaticamente reformatou o texto e com isso corrigiu essas inconsistências.

      Para evitar isso no futuro, você pode usar ferramentas como PyPDF2 ou pdfplumber para inspecionar e corrigir problemas nos arquivos antes de carregá-los com o PyPDFLoader. Ou ainda, converter em um arquivo de texto ou outro formato legível antes de enviar o conteúdo para o RAG.

      Se quiser também pode testar outros loaders de PDF que o LangChain suporta, como PyMuPDFLoader ou PDFMinerLoader. Mais informações aqui: https://python.langchain.com/docs/integrations/document_loaders/

      Para lidar com PDFs com formatos inconsistentes, o uso de serviços como o Unstructured (que o LangChain também suporta) pode ser uma ótima solução para extrair textos de maneira mais robusta. Para mais informações sobre ele veja https://python.langchain.com/docs/integrations/document_loaders/unstructured_file/ – aliás também deixamos comentários sobre no final do Colab do projeto 03 (aqui)

      in reply to: caixa delimitadora #47265
      Gabriel Alves
      Keymaster

        Olá Tatiane!

        Você pode usar o programa labelImg, que permite fazer as anotações de modo bastante prático. Na aula “Criação do seu dataset de imagens manualmente” tem uma explicação detalhada mostrando como pode usar.

        Caso use o modelo YOLOv8 ou versão superior eu recomendo usar a plataforma roboflow, que oferece uma ferramenta gratuita para anotação e costuma ser mais prático pois gera em uma interface unificada os arquivos de anotação no formato para essa versão do YOLO – veja aqui a explicação de como usar https://roboflow.com/how-to-label/yolov8

        in reply to: Angents & Tools não funcionam #47179
        Gabriel Alves
        Keymaster

          Olá Leonardo!

          Se entendi corretamente, inicialmente não estava funcionando, mas depois você executou o mesmo código com a mesma pergunta e funcionou. Isso pode estar relacionado à própria biblioteca e não a um erro na programação. Fiz algumas pesquisas e há diversos relatos da comunidade sobre inconsistências no LangChain, especialmente quando ele entra em loops infinitos, mesmo com tudo configurado corretamente.

          Embora o LangChain seja excelente para lidar com várias funções de LLMs, ele apresenta algumas limitações para a implementação nativa de agentes, deixando a desejar em certos quesitos. Por isso, para tentar resolver eu recomendo antes experimentar mudar o prompt do sistema para ficar de acordo com o seu objetivo específico, dá para testar desse modo antes e ver se apresenta melhoras.

          Parece que recentemente os autores da biblioteca passaram a mudar um pouco o foco, fazendo com que o melhor modo de implementar agentes no ecossistema LangChain seja através do LangGraph, que é uma extensão da biblioteca justamente voltada para a criação de agentes personalizáveis.

          Para adaptar é necessário algumas modificações, esse artigo aqui explica bem e detalha exatamente essas mudanças: https://python.langchain.com/docs/how_to/migrate_agent/

          in reply to: Projeto 3 #47178
          Gabriel Alves
          Keymaster

            Opa, parece ser algo que afeta a pré-visualização somente, mas para garantir você consegue me passar a versão do LangChain e a versão do Streamlit que tem instalado em sua máquina local? Para eu tentar reproduzir o problema daqui, já que em meus ambientes está funcionando conforme esperado

            in reply to: Projeto 3 #47159
            Gabriel Alves
            Keymaster

              Olá Fernando,

              Primeiramente, agradeço o feedback positivo! Vamos às suas dúvidas:

              Em relação às respostas incorretas da IA, pela sua descrição parece que o modelo está usando somente conhecimento prévio ou não está encontrando os dados no banco vetorial corretamente. Você comentou que o texto apareceu juntas sem espaçamento, isso mostrou quando clica em cima do botão (popover) para ver a fonte? Se puder mandar um print de onde aparece, pode até ser que seja um bug do streamlit e que nessa caixinha está exibindo o texto sem os espaços ao final de cada bloco. O problema de palavras sem espaçamento poderia estar prejudicando sim a indexação e a recuperação, mas se foi utilizado exatamente o código da aula então não deveria ocorrer pois a função exata já faz esse processamento correto do texto antes de enviar à rede neural (mas só para testar, poderia usar também outro método que faz o pré-processamento do texto). Recomendo fazer novamente o envio dos documentos e testar diferentes parâmetros para o ‘k’ e ‘fetch_k’, dentro de vectorstore.as_retriever().

              Quanto a melhorar o tempo de resposta inicial, você está correto. O carregamento e a indexação podem ser feitos separadamente, em um aplicativo à parte. Isso permite iniciar o chat acessando diretamente o vectorstore já pronto, reduzindo significativamente o tempo de resposta inicial. E caso o arquivo seja enviado apenas uma vez e não mude então pode salvar em disco, assim não precisa executar a indexação toda vez que inicia o app. Para mais velocidade no tempo de indexação/recuperação, sugiro dar uma olhada no Pinecone, que pode ser facilmente integrado com o LangChain, basicamente precisa apenas mudar os métodos para integração e assim pode reaproveitar todo o restante do código (veja mais).

              E em relação às limitações de tamanho do arquivo, é possível sim carregar arquivos grandes porém o processamento e a indexação podem levar mais tempo e consumir mais memória, portanto precisa verificar se o hardware é adequado ou se vale mais a pena usar soluções que rodam em cloud como o Pinecone. Para PDFs extensos, como livros, recomenda-se dividi-los em chunks menores para facilitar o processamento e melhorar a recuperação de informações durante as consultas. A abordagem correta é experimentar diferentes parâmetros para o método do retriever, o que tenderá a funcionar melhor para documentos bem maiores.

              in reply to: Resultados da segmentação #47153
              Gabriel Alves
              Keymaster

                Olá Flávio! Excelente, obrigado pela sua contribuição

                Para não se preocupar com as funções de desenho também é possível usar como alternativa a implementação via CLI, o que pode ser um pouco mais prático

                in reply to: API #47010
                Gabriel Alves
                Keymaster

                  Olá Gabrielli, tudo bem?

                  Agradecemos a sugestão! Estamos planejando um próximo curso sobre LLMs, muito provavelmente abordaremos esses temas

                  in reply to: Reconhecimento pela camera do android #46995
                  Gabriel Alves
                  Keymaster

                    Ah sim entendo, ainda mais considerando que hoje existem várias tecnologias novas e muito relevantes, é complicado arrumar tempo para aprender tudo

                    mas faz no seu tempo, que vai dar certo =)

                    bons estudos!

                    in reply to: Reconhecimento pela camera do android #46831
                    Gabriel Alves
                    Keymaster

                      Olá José!

                      Sim, seria totalmente viável utilizar o reconhecimento facial via câmera do celular como um método de marcação de ponto no seu aplicativo. Para isso bastaria integrar seu software em Delphi com uma tecnologia de reconhecimento facial – como a mostrada nesse curso de visão computacional ou no curso de Reconhecimento facial aqui da plataforma.

                      Para o uso dessas técnicas teria que se conectar via API já que o processamento rodaria em um servidor, portanto precisaria de conexão constante com a internet. Desse modo costuma ser melhor porque o processamento é mais pesado e não dependerá do hardware do dispositivo, mas caso seja um único celular fixo e com excelente configuração então talvez rodar tudo localmente pelo celular seja melhor (ambas as alternativas possuem suas vantagens e desvantagens, então veja qual faz mais sentido).

                      O reconhecimento facial pode ser realizado 100% localmente no dispositivo usando o Google ML Kit ou alguma biblioteca de Face Net em mobile por exemplo, mas como precisa se conectar ao sistema em Delphi então ainda haveria a necessidade de ser enviado a um servidor remoto, onde seu sistema de controle de ponto em Delphi pode validar o registro e associá-lo ao banco de dados.

                      Portanto, quanto ao reconhecimento seria possível sim e você pode integrar com alguma dessas maneiras, a parte mais trabalhosa seria desenvolver o aplicativo em si na linguagem ou framework de sua preferência, contanto que funcione em Android e iOS e tenha biblioteca para se conectar com a câmera do celular de forma eficiente.

                      in reply to: Leitura de documento RG #46819
                      Gabriel Alves
                      Keymaster

                        Opa, isso! Creio que o artigo vá ajudar bastante, mas qualquer dúvida pode postar aqui no fórum!

                        in reply to: Mensurar o tamanho (largura e altura) em imagens 2D. #46818
                        Gabriel Alves
                        Keymaster

                          Disponha =)

                          in reply to: Mensurar o tamanho (largura e altura) em imagens 2D. #46811
                          Gabriel Alves
                          Keymaster

                            Olá Julio!

                            Para medir com precisão o tamanho de um objeto em uma imagem eu sugiro você utilizar um algoritmo específico para isso. Existem várias heurísticas hoje bem definidas feitas para chegar a esse resultado, mas talvez uma das mais confiáveis usam esse artigo como referência. Além disso, o autor também fornece já o código completo para fazer isso no próprio OpenCV.

                            Esse processo exige atenção para alguns detalhes, então recomendo ver com calma o artigo pois lá explica bem certo. É importante seguir as recomendações para deixar o algoritmo bem calibrado, como por exemplo ajustar bem o objeto de referência para medir do modo mais preciso possível (isso é explicado detalhadamente no artigo).

                            in reply to: Extrair textos em arquivos no formato pdf #46810
                            Gabriel Alves
                            Keymaster

                              Olá José! Respondi lá no outro tópico que criou, mas já que perguntou neste tópico deixo a resposta aqui também:

                              Para fazer a leitura de um RG ou outro documento o segredo está em incorporar as técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento, focando em antes extrair as localizações desses textos (regiões de interesse). Se desejar, pode antes fazer o teste com detectores de texto como o EAST para detectar as regiões onde os textos estão localizados, ou também testar com o EasyOCR (que já faz a detecção+reconhecimento).

                              Em um dos projetos do curso é mostrado como fazer o scan de documentos, o que funciona para o caso desse tipo de documento também. Como adicional, você precisa apenas incorporar outras técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento.

                              A minha recomendação mesmo é seguir a lógica mostrada nesse artigo aqui, que explica exatamente uma maneira de como você pode criar um programa para ler melhor os campos de documentos (além disso, é disponibilizado o código fonte completo). Nesse exemplo do artigo ele usa uma CNH mas pode ser adaptado para RG pois o princípio é o mesmo, apenas alguns nomes e localizações de campos que mudam.

                              in reply to: Leitura de documento RG #46809
                              Gabriel Alves
                              Keymaster

                                Olá José!

                                Para fazer a leitura de um RG ou outro documento o segredo está em incorporar as técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento, focando em antes extrair as localizações desses textos (regiões de interesse). Se desejar, pode antes fazer o teste com detectores de texto como o EAST para detectar as regiões onde os textos estão localizados, ou também testar com o EasyOCR (que já faz a detecção+reconhecimento).

                                Em um dos projetos do curso é mostrado como fazer o scan de documentos, o que funciona para o caso desse tipo de documento também. Como adicional, você precisa apenas incorporar outras técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento.

                                A minha recomendação mesmo é seguir a lógica mostrada esse artigo aqui, que explica exatamente uma maneira de como você pode criar um programa para ler melhor os campos de documentos (além disso, é disponibilizado o código fonte completo). Nesse exemplo do artigo ele usa uma CNH mas pode ser adaptado para RG pois o princípio é o mesmo, apenas alguns nomes e localizações de campos que mudam.

                                in reply to: RAG #46790
                                Gabriel Alves
                                Keymaster

                                  Olá! Caso não tenha funcionado esse comando o que eu recomendo é usar o Ollama para rodar a LLM localmente. Aliás, creio que vai ser melhor fazer desse modo mesmo que funcionasse esse comando que te passei, já que você está usando localmente eu sugiro que carregue usando o módulo do Ollama no LangChain pois ele é mais otimizado e vai te causar menos problemas mais tarde.

                                  Para fazer isso use o método ChatOllama(), que é mostrado bem certo na aula “Execução local com Ollama” dentro da seção “LLM com LangChain”.

                                   

                                Viewing 15 posts - 61 through 75 (of 427 total)