Histórico de tradução e privacidade: o que fica no seu dispositivo
O histórico de tradução é um artefacto local. Cada entrada de histórico é armazenada numa base de dados SQLite local do dispositivo gerida pelo Drift, mais uma miniatura JPEG da foto original. Nada é carregado para qualquer servidor. Este artigo explica em detalhe o que é armazenado, o que é apagado e qual é o modelo de privacidade da app.\n\n## O que o histórico armazena\n\nCada registo de histórico contém:\n\n- Foto original como miniatura JPEG, redimensionada para caber numa aresta máxima. A foto em resolução completa é descartada após o redimensionamento para manter o armazenamento limitado.\n- Idioma de origem detetado pelo OCR (ou definido manualmente).\n- Idioma de destino selecionado para a captura.\n- Blocos OCR com as suas caixas delimitadoras, texto detetado e confiança.\n- Traduções por bloco e a tradução completa do parágrafo unido.\n- Carimbo de data/hora de criação para ordenação e exibição.\n\nAs traduções de texto não são guardadas automaticamente. A página de tradução de texto mostra o resultado na sua área de resultado até tocar em Limpar ou navegar para fora. As capturas de câmara e fotos importadas podem ser guardadas no histórico a partir da página de resultado.\n\n## Onde vive\n\nO histórico é armazenado em dois locais:\n\n- Base de dados. Uma base de dados SQLite local do dispositivo gerida pelo Drift. O ficheiro da base de dados está na sandbox da app; não é acessível a outras apps.\n- Fotos. Miniaturas JPEG no sistema de ficheiros da sandbox da app sob um diretório específico do histórico.\n\nAmbos são removidos ao desinstalar a app.\n\n## O que nunca é carregado\n\n- Fotos. Não carregadas, não sincronizadas, não salvaguardadas.\n- Texto OCR. Não carregado.\n- Texto traduzido. Não carregado.\n- Entradas de histórico. Não carregadas, não sincronizadas, não salvaguardadas.\n- Preferências de idioma. Não carregadas.\n\nTodo o histórico está no dispositivo. Não há cópia na nuvem para limpar.\n\n## A eliminação é permanente\n\n- Eliminar uma. O botão eliminar numa linha da página de histórico remove o registo e a sua miniatura de foto. A ação é protegida por um diálogo de confirmação para evitar eliminações acidentais.\n- Eliminar tudo. Desinstalar a app remove toda a base de dados de histórico como parte da desinstalação da plataforma.\n- Sem cópia na nuvem. A eliminação é permanente. Não há estado do lado da nuvem para limpar.\n\n## Análises\n\nA app emite relatórios de falhas anónimos e contadores agregados (por ex., "traduções por dia") com o objetivo de compreender a estabilidade da app e os padrões de uso. Estes não incluem:\n\n- Conteúdo de fotos\n- Texto OCR\n- Texto traduzido\n- Entradas de histórico\n\nSe um relatório futuro alguma vez incluir conteúdo, isso seria um bug e deveria ser reportado.\n\n## Um modelo de ameaça prático\n\nA app é desenhada para utilizadores que querem traduzir documentos sensíveis sem os enviar a terceiros. As ameaças relevantes são:\n\n- Exfiltração para a nuvem. Não possível porque nada é carregado.\n- Acesso entre apps. Não possível porque a sandbox isola a base de dados e os ficheiros de fotos.\n- Fuga de cópia de segurança. Não possível porque a sandbox está excluída das cópias de segurança automáticas na nuvem do dispositivo.\n- Perda do dispositivo. O histórico perde-se com o dispositivo a menos que seja feita uma cópia de segurança manual do dispositivo; a cópia de segurança manual está encriptada e acessível apenas ao proprietário do dispositivo.\n\nPara utilizadores cujo modelo de ameaça inclui adversários ao nível estatal, o pipeline no dispositivo elimina a superfície de ataque de rede mas não protege contra um dispositivo comprometido. A proteção padrão do dispositivo aplica-se.\n\n## Um resumo numa frase\n\nO histórico é local. As fotos são locais. As traduções são locais. Eliminar uma entrada remove-a do dispositivo; não há cópia na nuvem para eliminar.