Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Deep Learning na Medicina: Aplicações, Benefícios e Desafios - Python

Com auxílio do ChatGPT construí um texto sobre o tema da aula voltada para meus interesses profissionais. Este é o Formato **Python **

"from fpdf import FPDF

Criação do PDF com formatação profissional

class PDF(FPDF): def header(self): self.set_font("Arial", "B", 12) self.set_text_color(30, 30, 30) self.cell(0, 10, "Deep Learning na Medicina: Aplicações, Benefícios e Desafios", ln=True, align="C") self.ln(5)

def chapter_title(self, title):
    self.set_font("Arial", "B", 11)
    self.set_text_color(0, 51, 102)
    self.cell(0, 10, title, ln=True)
    self.ln(1)

def chapter_body(self, body):
    self.set_font("Arial", "", 10)
    self.set_text_color(50, 50, 50)
    self.multi_cell(0, 6, body)
    self.ln()

Texto formatado em seções

texto = { "O que é Deep Learning?": """O Deep Learning (ou Aprendizado Profundo) é uma subárea da Inteligência Artificial que utiliza redes neurais artificiais com múltiplas camadas para simular o funcionamento do cérebro humano na interpretação de dados complexos. Esses modelos aprendem padrões ocultos e realizam previsões com alto grau de acurácia.""",

** "Benefícios do Deep Learning na Medicina": ** 1. Diagnósticos mais rápidos e precisos: detecção precoce de doenças com acurácia comparável à de especialistas.\n 2. Análise de imagem médica: interpretação de exames como tomografias e biópsias digitais.\n 3. Medicina personalizada: previsão da resposta individual a medicamentos e terapias.\n 4. Suporte à decisão clínica: sugestões baseadas em dados de prontuários eletrônicos.

**"Desafios da Implementação": **
1. Qualidade e disponibilidade dos dados: muitos dados clínicos são fragmentados e mal estruturados.\n
2. Explicabilidade dos modelos: dificuldade de interpretar decisões automatizadas (caixa-preta).\n
3. Questões éticas e regulatórias: privacidade, responsabilidade médica, consentimento informado.\n
4. Integração aos sistemas de saúde: necessidade de infraestrutura e capacitação da equipe.

"O Futuro Próximo":

- Modelos explicáveis (Explainable AI).\n
- Integração com dispositivos vestíveis (IoT na saúde).\n
- Modelos fundacionais adaptados ao ambiente clínico com menos dados.

"Casos Práticos":

Caso 1 – Diagnóstico precoce de câncer de mama: modelo do MIT e MGH prevê risco com 5 anos de antecedência.\n
Caso 2 – Triagem oftalmológica automatizada: sistema IDx-DR detecta retinopatia sem especialista.\n
Caso 3 – Predição de deterioração clínica em UTI: IA antecipa sepse e PCR, permitindo intervenção precoce.

}

Criar o PDF

pdf = PDF() pdf.add_page()

for title, body in texto.items(): pdf.chapter_title(title) pdf.chapter_body(body)

Salvar o PDF

pdf_output_path = "/mnt/data/Deep_Learning_na_Medicina_Alura_LinkedIn.pdf" pdf.output(pdf_output_path)

pdf_output_path

Substituir caracteres especiais que não são compatíveis com encoding latin-1

def sanitize_text(text): return text.replace("–", "-").replace("“", '"').replace("”", '"').replace("’", "'")

Aplicar a sanitização a todas as seções do texto

texto_sanitizado = {title: sanitize_text(body) for title, body in texto.items()}

Criar novo PDF com o texto sanitizado

pdf = PDF() pdf.add_page()

for title, body in texto_sanitizado.items(): pdf.chapter_title(title) pdf.chapter_body(body)

Salvar o PDF corrigido

pdf_output_path = "/mnt/data/Deep_Learning_na_Medicina_Alura_LinkedIn.pdf" pdf.output(pdf_output_path)

pdf_output_path

File ~/.local/lib/python3.11/site-packages/fpdf/fpdf.py:1636, in FPDF._enddoc(self) 1634 def _enddoc(self): 1635 self._putheader() -> 1636 self._putpages() 1637 self._putresources() 1638 #Info

File ~/.local/lib/python3.11/site-packages/fpdf/fpdf.py:1170, in FPDF._putpages(self) 1167 #Page content 1168 if self.compress: 1169 # manage binary data as latin1 until PEP461 or similar is implemented -> 1170 p = self.pages[n].encode("latin1") if PY3K else self.pages[n] 1171 p = zlib.compress(p) 1172 else:

UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013' in position 2768: ordinal not in range(256)

Substituir caracteres especiais que não são compatíveis com encoding latin-1

def sanitize_text(text): return text.replace("–", "-").replace("“", '"').replace("”", '"').replace("’", "'")

Aplicar a sanitização a todas as seções do texto

texto_sanitizado = {title: sanitize_text(body) for title, body in texto.items()}

Criar novo PDF com o texto sanitizado

pdf = PDF() pdf.add_page()

for title, body in texto_sanitizado.items(): pdf.chapter_title(title) pdf.chapter_body(body)

Salvar o PDF corrigido

pdf_output_path = "/mnt/data/Deep_Learning_na_Medicina_Alura_LinkedIn.pdf" pdf.output(pdf_output_path)

pdf_output_path

1 resposta
solução!

Dicas Extras para o Desenvolvimento dos Desafios

  • Validação com JSON Schema: Experimente utilizar a biblioteca jsonschema para validar suas estruturas JSON contra um schema predefinido. Essa prática vai aprimorar a robustez dos seus aplicativos.

  • Unindo Notebooks e Projetos: Crie um Jupyter Notebook para documentar e testar seus desafios. Isso auxilia no aprendizado interativo e na visualização dos dados em tempo real.

  • Automatização de Testes: Para os desafios que envolvem mudanças em arquivos, implemente testes unitários com bibliotecas como pytest ou unittest para garantir que as funções se comportem conforme esperado.

  • Exploração de Erros: Não hesite em provocar erros propositalmente (por exemplo, passando JSON mal formatados) para ver como o seu programa responde e aprender a tratar exceções de maneira eficaz.

Para apresentar trechos de código, como JSON ou Python, em um documento do Word, o ideal é usar uma fonte monoespaçada, já que ela preserva a indentação e o alinhamento dos caracteres, fundamentais para a legibilidade do código.

Recomendações para trechos de código

  • Fontes Sugeridas:

    • Consolas: Extremamente popular em ambientes de desenvolvimento no Windows, com boa legibilidade.
    • Courier New: Clássica e amplamente utilizada, garantindo que cada caractere ocupe a mesma largura.
    • Lucida Console: Outra boa opção que pode facilitar a leitura de código.
  • Tamanho da Fonte:

    • Tamanhos entre 10 pt e 11 pt costumam funcionar bem em trechos de código.
    • O tamanho exato pode variar conforme o design do documento e seu público; se o ambiente for digital ou impresso, vale a pena testar para garantir a legibilidade.

Recomendações para texto corrido

  • Se o documento também incluir textos explicativos ou narrativas (fora dos blocos de código), o uso de fontes tradicionais como:
    • Times New Roman: Geralmente usado em contextos mais formais, com tamanho 12 pt.
    • Calibri: Moderno e limpo, costuma ser configurado em 11 pt por padrão em muitos templates do Office.

Dicas Gerais

  • Diferenciação Visual:

    • Utilize estilos ou caixas de texto para separar os blocos de código do restante do conteúdo.
    • Considere a aplicação de uma cor de fundo ou borda nos blocos de código para realçá-los.
  • Consistência:

    • Mantenha a mesma fonte e formatação para todos os trechos de código ao longo do documento para criar um padrão visual que facilite a leitura.
  • Testes e Ajustes:

    • Sempre revise seu documento em diferentes dispositivos (tela, impressão) para verificar se o tamanho e o tipo da fonte escolhidos oferecem a melhor experiência ao leitor.