Oi! Tudo certo?
Sobre sua última dúvida: Sua ideia faz sentido, veja como ajustar: processadores de texto não usam banco de dados para editar cada letra/palavra. Eles carregam o arquivo (DOCX/ODT), que é um ZIP com XML, em estruturas de dados em memória para edição rápida e rodadas de análise (ortografia, gramática, morfologia).
O XML não separa letras por si; ele guarda parágrafos, “runs” (trechos com o mesmo estilo), tabelas, etc. A separação em letras/palavras e as correções acontecem enquanto o documento está aberto, via buffers de texto e tokenizadores incrementais, sem IA.
Pontos importantes para uma implementação técnica (sem IA):
- Edição: use um piece table (ou rope / gap buffer) para inserir/apagar sem copiar o texto inteiro.
- Tokenização incremental: ao digitar, re-tokenize só a região afetada (ex.: a palavra atual e vizinhos).
- Ortografia: dicionários + regras de afixos (Hunspell-like) para marcar palavras desconhecidas.
- Morfologia: lemmatização/stemming (ex.: FSTs) para reconhecer variações (pegar, peguei).
- Gramática/estilo: regras (regex/AFDs) e análise de POS leve (sem IA) para vírgulas, concordância básica, etc.
- Layout: motor de quebra de linha (line breaking) e hifenização (padrões ao estilo TeX).
- Salvar: serialize o modelo em memória de volta para o XML dentro do ZIP.
Fico à disposição!