
Converta caracteres chineses em fontes de linha única usando visão computacional
Fontes de linha única, como as fontes Hershey, são massivamente úteis para fazer gráficos processuais legais e para gravar. Eles também são indiscutivelmente mais fáceis de aprender para redes neurais.
Essa ferramenta gera automaticamente fontes de linha única chinesa, com um arquivo de fonte de tipo verdadeiro regular (TTF/TTC). Ele pode gerar o formato clássico Hershey ou um arquivo JSON contendo todas as polilinhas.
O algoritmo digitaliza uma renderização raster de um personagem em muitos ângulos diferentes para encontrar segmentos de linha que provavelmente fazem parte de um derrame. Em seguida, estima os golpes conectando, mesclando e limpando os segmentos de linha.

pip install pillow ) A seguir, são apresentados tipos de arquivos que este software pode produzir para codificar fontes de linha única.
Um arquivo json com um objeto. As chaves do objeto são índices unicode de caracteres. Cada tecla mapas para uma variedade de polilinas. Uma poliina é uma variedade de pontos. Um ponto é uma matriz de 2 elementos contendo coordenadas x e y. Uma coordenada é uma bóia entre 0,0 e 1,0 e (0,0) é o canto superior esquerdo. Por exemplo:
{
"U+4E00" :[[[ 0.0 , 0.55 ], [ 1.0 , 0.55 ]]],
"U+4E01" :[[[ 0.02 , 0.02 ], [ 0.99 , 0.02 ]], [[ 0.51 , 0.02 ], [ 0.53 , 0.925 ], [ 0.31 , 1.0 ]]]
}A codificação acima contém os dois primeiros caracteres chineses no Unicode, "一" e "丁".
As fontes Hershey são uma coleção de fontes vetoriais desenvolvidas c. 1967 pelo Dr. Allen Vincent Hershey no Laboratório de Armas Navais, originalmente projetado para ser renderizado usando vetores em exposições de tubo de raios catódicos. As fontes estão disponíveis ao público e têm poucas restrições de uso. As fontes vetoriais são facilmente dimensionadas e giradas em duas ou três dimensões; Consequentemente, as fontes Hershey têm sido amplamente utilizadas em gráficos de computadores, programas de design auxiliado por computador e, mais recentemente, também em aplicações de fabricação auxiliadas por computador, como gravação a laser. (Wikipedia)
Este link fornece uma visão geral de como analisar as fontes Hershey. Você também pode encontrar minha própria implementação em Lingdong/P5-Hershey-Js.
Comparados aos arquivos de AVC, as fontes Hershey são muitas vezes mais compactas, mas também têm coordenadas menos precisas.
Se você estiver interessado apenas em utilizar fontes de linha única pré-gerada, poderá agarrá-las nos seguintes locais:
Observação:
Heiti.hf.txt e Kaiti.hf.txt foram originalmente baseados nas fontes proprietárias do sistema de macos STHeiti e STKaiti . Eles agora são substituídos por alternativas de código aberto.
Se você deseja gerar novas fontes de linha única a partir de arquivos TTF/TTC personalizados, primeiro use o seguinte comando para gerar um arquivo de AVC codificado por JSON.
python char2stroke.py build path/to/font.ttf
Argumentos opcionais:
--first [FIRST]
--height [HEIGHT]
--last [LAST]
--ngradient [NGRADIENT]
--output [OUTPUT]
--strw [STRW]
--width [WIDTH]
width e height determinam a dimensão das imagens rasters dos caracteres a serem digitalizados. Quanto maiores esses números, mais detalhados e mais lentos. O padrão é 100 para ambos.strw é a largura aproximada do AVC (em pixels, com dada width e height ). Isso é usado na fusão de traços. O padrão é 10 .first e last especifica o intervalo de caracteres Unicode para incluir. Os valores padrão são 0x4e00 e 0x9fef , que contém todos os glifos "ideografia cjk".ngradient é o número de diferentes gradientes usados para digitalizar a imagem. Em ngradient = 1 , apenas acidente vascular cerebral a 0 °, 45 ° e 90 ° são digitalizados, enquanto em 2 , 3 e 4 , também são incluídas as inclinações de atan(1/2) , atan(1/3) e atan(1/4) . O padrão é 2 .output : caminho para gravar o arquivo de saída. Quando isso não é especificado, o programa grava para stdout e > (info) e | (Info) pode ser usado para redirecionar a saída.Antes de gerar arquivos grandes, é útil fazer alguns testes rápidos em pequenos conjuntos de caracteres, comparar como as fontes são diferentes e os parâmetros de ajuste. O comando a seguir facilita esse processo com a visualização lado a lado dos resultados da visão computacional.
python char2stroke.py test path/to/font1.ttf path/to/font2.ttf ...
Argumentos opcionais:
--corpus [CORPUS]
--height [HEIGHT]
--ngradient [NGRADIENT]
--nsample [NSAMPLE]
--strw [STRW]
--width [WIDTH]
corpus : string para testar. O padrão é o texto do clássico de mil personagens.nsample : número de caracteres a serem escolhidos aleatoriamente no corpus. O padrão é 8 .build .O comando a seguir gera uma fonte Hershey a partir de um arquivo de AVC produzido na etapa anterior.
python tohershey.py path/to/input.json > path/to/output.hf.txt
