import re

def clean_text(text: str) -> str:
    """
    Limpa o texto mantendo quebras de linha e acentos.
    Remove caracteres de controle, códigos (cid) e normaliza espaços.
    """
    if not text:
        return ""

    # Remove códigos (cid:123) comuns em PDFs mal convertidos
    text = re.sub(r'\(cid:[^)]+\)', '', text)

    # Remove caracteres de controle (exceto \n, \r, \t)
    text = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]', '', text)

    # Normaliza quebras de linha: \r\n -> \n, \r -> \n
    text = re.sub(r'\r\n', '\n', text)
    text = re.sub(r'\r', '\n', text)

    # Remove espaços no início e fim de cada linha
    lines = [line.strip() for line in text.splitlines()]
    text = '\n'.join(lines)

    # Remove linhas completamente vazias (opcional, pode ajudar)
    # text = '\n'.join(line for line in lines if line)

    # Normaliza múltiplos espaços dentro de uma linha, mas mantém quebras
    # Isso evita juntar palavras quebradas
    text = '\n'.join(re.sub(r'[ \t]+', ' ', line) for line in text.splitlines())

    return text