O que Texto para Notas Manuscritas faz?
Você transforma conteúdo em páginas que parecem escritas à mão. O renderizador é scripts/handnotes.py. Ele só precisa de Python com Pillow e numpy, que já estão presentes nas sandboxes de código do ChatGPT e Claude.
Resultado padrão: uma foto de celular de uma página de caderno em papel quadriculado, com tinta azul, escrita na caligrafia padrão inclusa. Se o usuário não pedir nada especial, entregue isso.
Passo 0: de quem é a caligrafia?
Pergunte uma vez, de forma breve: "Envie-me quantas fotos da sua própria caligrafia puder (qualquer página que você já escreveu: anotações, lições de casa). Caso contrário, usarei a caligrafia padrão."
- Sem fotos: use a caligrafia padrão. Não pergunte novamente.
- Com fotos: aprenda-as primeiro (veja Aprendendo uma caligrafia a partir de fotos abaixo), depois renderize com
--hand your-hand. Mais páginas fornecem mais amostras por letra e um resultado mais natural. De 3 a 6 páginas é o ideal.
Passo 1: leia a entrada
- PDF: extraia o texto com pypdf, pdftotext ou seu próprio leitor. Para um PDF escaneado, examine as imagens das páginas.
- Foto, captura de tela, quadro branco: leia você mesmo com visão computacional. Não execute bibliotecas de OCR.
- Texto, uma solução, uma página web: use como está.
Passo 2: escreva a página
Existem dois casos.
- Anotações de uma aula: escreva o que um bom aluno escreve. Linhas curtas, palavras-chave, a estrutura da fonte, 15 a 30% do seu comprimento.
- Uma solução ou lição de casa que o usuário fornece: mantenha cada passo e cada número. Escreva da forma que um aluno escreve no papel: rótulos
1/,a)eb), uma equação por linha,=>entre os passos. Não adicione decoração com aparência de IA: sem "Dica:", sem realces em todos os lugares, sem negrito. Sublinhe ou coloque!!em um resultado final apenas se o usuário faria isso.
Mantenha o idioma do usuário. Mantenha números, nomes e fórmulas exatos.
Marcação:
# Título ## Cabeçalho ### Subcabeçalho (sublinhado)
- marcador (2 espaços = um nível mais profundo) 1. numerado
-> linha de seta !! LINHA IMPORTANTE (vermelho) > nota lateral (tinta de destaque)
[ ] a fazer [x] feito (marcado) --- separador linha em branco = pular uma linha
em linha: ==destacar== **negrito** __sublinhado__ ~~riscado~~ {red}tinta colorida{/} -> (seta desenhada)
\$ = um cifrão $...$ matemática em linha $$...$$ sozinho em uma linha = fórmula exibida
Matemática. Coloque toda fórmula em $...$, mesmo uma curta como $x^2$ ou $E_2$. Suportado:
\frac{a}{b}, \sum_{k=1}^{n}, \prod, \int_a^b, \lim_{n \to +\infty}, \sqrt{x}, \sqrt[3]{x}, x^{n+1}, x_i, \left( ... \right), \binom{n}{k}, \vec{u}, \bar{x}, \mathbb{R}, \text{...}, \mid, letras gregas, \in \subset \cup \cap \emptyset \forall \exists \leq \geq \neq \approx \pm \times \cdot \infty \to \implies \iff, e espaços \, \; \quad.
Escreva decimais como a fonte faz (0,81 ou 0.81), e números grandes como 50\,000 dentro da matemática. Escreva intervalos como são lidos: $[0, 1[$. Coloque fórmulas grandes em sua própria linha $$...$$. Uma fórmula muito larga para a página é reduzida para caber, mas dividir uma longa no sinal de = em duas linhas parece mais natural.
Salve a página como notes.md.
Passo 3: renderize
python scripts/handnotes.py render notes.md -o notes.pdf
Isso dá o padrão: uma foto de caderno, papel quadriculado, tinta azul, caligrafia padrão. Altere apenas o que o usuário pediu:
| opção | valores |
|---|---|
--style | notebook (foto de celular de uma página real: luz irregular, linhas descendo, folha inclinada, tinta esferográfica) · ipad (motor separado: letras retraçadas como sólidas, traços uniformes de Apple Pencil em uma página limpa) |
--paper | squared (notebook) ou grid (ipad), lines, college, seyes, dots, blank |
--hand | default, ou uma pasta criada por build-hand ou learn |
--font | use uma fonte de caligrafia alternativa: caveat, kalam, patrick, gochi, indie, playpen |
--ink | blue (notebook) ou black (ipad), red, green, purple, pencil |
--page | a4, letter, ipad, ipad-landscape |
--seed N | a mesma página sempre; altere N para uma nova versão |
Use -o notes.png para obter imagens (notes-1.png, notes-2.png, e assim por diante) em vez de um PDF.
Passo 4: verifique e entregue
Veja a página 1 (renderize um PNG se não conseguir visualizar PDFs). Verifique se nenhuma linha sai da página ou se sobrepõe a outra, e se cada número corresponde à fonte. Em seguida, entregue o arquivo.
Aprendendo uma caligrafia a partir de fotos
Isso funciona a partir de qualquer página que a pessoa já escreveu. Eles não precisam preencher nada.
-
Recortar:
python scripts/handnotes.py segment p1.jpg p2.jpg p3.jpg -o hand-workIsso remove as linhas impressas do caderno, recorta cada pedaço de tinta e escreve folhas numeradashand-work/folha-páginaN-K.png. -
Rotular: veja cada folha. Você sabe o que as páginas dizem, porque pode ler as fotos originais. Escreva
hand-work/labels.json(os números das páginas seguem a ordem das fotos):{"1": {"12": "a", "13": "(", "40": "o", "41": "7"}, "2": {"5": "é", "9": "dy"}}- Rotule apenas os pedaços dos quais tem certeza. Pule qualquer coisa pouco clara, cortada ao meio, grudada a um vizinho, riscada, ou apenas um fragmento de linha.
- Um pedaço contendo várias letras unidas pode ser rotulado como aquela palavra ou par ("o", "le", "qu"). Ele será reutilizado sempre que essa sequência aparecer, o que parece muito natural.
- Procure obter pelo menos 2 ou 3 amostras de cada letra minúscula e de cada dígito.
-
Construir:
python scripts/handnotes.py build-hand hand-work hand-work/labels.json -o hand-delesIsso normaliza tamanhos e intensidade da tinta, descarta amostras mal cortadas e constrói letras faltantes a partir dos próprios traços do escritor (u de n, m de dois n, w de dois v, r, q). Os acentos (é è à ê ç ë) são desenhados em sua própria letra simples. Ele imprime as letras que uma fonte ainda substitui. -
Verifique uma renderização. Veja uma página e amplie qualquer letra que pareça quebrada ou muito fraca. Encontre suas amostras nos arquivos
hand-deles/glyphslistados emhand-deles/hand.json, remova o rótulo ruim e construa novamente.
Mantenha a pasta hand-deles: é a caligrafia deles. Ofereça-se para compactá-la em um zip para que possam reutilizá-la na próxima vez.
Há também uma rota de template (template, depois learn): a pessoa preenche uma grade de 2 páginas com caixas. É mais limpo, mas dá mais trabalho para eles, então ofereça apenas se preferirem.