
Convertir les caractères chinois en polices à une seule ligne à l'aide de la vision informatique
Des polices à ligne unique telles que les polices Hershey sont massivement utiles pour fabriquer des graphiques procéduraux sympas et pour la gravure. Ils sont également sans doute plus faciles à apprendre pour les filets neuronaux.
Cet outil génère automatiquement des polices à ligne unique chinoises étant donné un fichier de police de type vrai régulier (TTF / TTC). Il peut sortir soit le format Hershey classique, soit un fichier JSON contenant toutes les polylines.
L'algorithme scanne un rendu raster d'un personnage à de nombreux angles différents pour trouver des segments de ligne qui font très probablement partie d'un AVC. Il estime ensuite les traits en connectant, fusionnant et nettoyant les segments de ligne.

pip install pillow ) Voici les types de fichiers que ce logiciel peut produire pour coder les polices à ligne unique.
Un fichier JSON avec un objet. Les clés de l'objet sont des indices Unicode de caractères. Chaque clé se correspond à un tableau de polylines. Une polyligne est un éventail de points. Un point est un tableau à 2 éléments contenant des coordonnées x et y. Une coordonnée est un flotteur entre 0,0 et 1,0, et (0,0) est le coin supérieur gauche. Par exemple:
{
"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 ]]]
}Le codage ci-dessus contient les deux premiers caractères chinois dans Unicode, "一" et "丁".
Les polices Hershey sont une collection de polices vectorielles développées c. 1967 par le Dr Allen Vincent Hershey au Naval Weapons Laboratory, à l'origine conçu pour être rendu à l'aide de vecteurs sur les premiers écrans de tube à rayons cathodiques. Les polices sont accessibles au public et ont quelques restrictions d'utilisation. Les polices vectorielles sont facilement mises à l'échelle et tournées en deux ou trois dimensions; Par conséquent, les polices Hershey ont été largement utilisées dans les graphiques informatiques, les programmes de conception assistés par ordinateur et, plus récemment, également dans des applications de fabrication assistées par ordinateur comme la gravure laser. (Wikipedia)
Ce lien donne un aperçu de la façon d'analyser les polices Hershey. Vous pouvez également trouver ma propre implémentation sur Lingdong- / P5-Hershey-JS.
Par rapport aux fichiers de l'AVC, les polices Hershey sont plusieurs fois plus compactes, mais ont également des coordonnées moins précises.
Si vous êtes seulement intéressé à utiliser des polices à une ligne à ligne pré-générées, vous pouvez les saisir aux endroits suivants:
Note:
Heiti.hf.txt et Kaiti.hf.txt étaient à l'origine basés sur des polices de système macOS propriétaires STHeiti et STKaiti . Ils sont maintenant remplacés par des alternatives open source.
Si vous souhaitez générer de nouvelles polices à ligne unique à partir de fichiers TTF / TTC personnalisés, utilisez d'abord la commande suivante pour générer un fichier d'AVC codé JSON.
python char2stroke.py build path/to/font.ttf
Arguments facultatifs:
--first [FIRST]
--height [HEIGHT]
--last [LAST]
--ngradient [NGRADIENT]
--output [OUTPUT]
--strw [STRW]
--width [WIDTH]
width et height déterminent la dimension des images raster des caractères à analyser. Plus ces nombres sont grands, plus le lendemain et plus lent. La valeur par défaut est 100 pour les deux.strw est la largeur de course approximative (en pixels, à width et à height données). Ceci est utilisé lors de la fusion des traits. La valeur par défaut est 10 .first et last spécifie la gamme des caractères Unicode à inclure. Les valeurs par défaut sont 0x4e00 et 0x9fef , qui contient tous les glyphes "CJK idéographe".ngradient est le nombre de gradients différents utilisés pour scanner l'image. À ngradient = 1 , seuls les traits à 0 °, 45 ° et 90 ° sont scannés, tandis qu'à 2 , 3 et 4 , des pentes d' atan(1/2) , atan(1/3) et atan(1/4) sont également incluses. La valeur par défaut est 2 .output : chemin pour écrire le fichier de sortie. Lorsque cela n'est pas spécifié, le programme écrit sur stdout , et > (info) et | (info) peut être utilisé pour rediriger la sortie.Avant de générer des fichiers volumineux, il est utile de faire des tests rapides sur de petits ensembles de caractères, de comparer comment les différentes polices se révèlent et de modifier les paramètres. La commande suivante facilite ce processus avec une visualisation côte à côte des résultats de la vision par ordinateur.
python char2stroke.py test path/to/font1.ttf path/to/font2.ttf ...
Arguments facultatifs:
--corpus [CORPUS]
--height [HEIGHT]
--ngradient [NGRADIENT]
--nsample [NSAMPLE]
--strw [STRW]
--width [WIDTH]
corpus : chaîne à tester. La valeur par défaut est le texte de mille caractères Classic.nsample : Nombre de caractères à choisir au hasard dans le corpus. La valeur par défaut est 8 .build .La commande suivante génère une police Hershey à partir d'un fichier de trait produit à l'étape précédente.
python tohershey.py path/to/input.json > path/to/output.hf.txt
