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

[Projeto] Deep Learning na Medicina: Aplicações, Benefícios e Desafios - 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**? é uma subárea da IA 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:

- Diagnósticos mais rápidos e precisos: detecção precoce de doenças com acurácia comparável à de especialistas.\n

- Análise de imagem médica: interpretação de exames como tomografias e biópsias digitais.\n

- Medicina personalizada: previsão da resposta individual a medicamentos e terapias.\n

- Suporte à decisão clínica: sugestões baseadas em dados de prontuários eletrônicos.

Desafios da Implementação:

- Qualidade e disponibilidade dos dados: muitos dados clínicos são fragmentados e mal estruturados.\n

- Explicabilidade dos modelos: dificuldade de interpretar decisões automatizadas (caixa-preta).\n

- Questões éticas e regulatórias: privacidade, responsabilidade médica, consentimento informado.\n

- 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.