
Convertir los caracteres chinos en fuentes de una sola línea utilizando visión por computadora
Las fuentes de una sola línea, como las fuentes de Hershey, son enormemente útiles para hacer gráficos de procedimiento geniales y para grabar. También son posiblemente más fáciles de aprender para redes neuronales.
Esta herramienta genera automáticamente fuentes chinas de una línea de una sola línea dado un archivo de fuentes de tipo verdadero regular (TTF/TTC). Puede generar el formato clásico de Hershey o un archivo JSON que contiene todas las polilíneas.
El algoritmo escanea una representación del trama de un personaje en muchos ángulos diferentes para encontrar segmentos de línea que probablemente formen parte de un derrame cerebral. Luego estima los trazos conectando, fusionando y limpiando los segmentos de línea.

pip install pillow ) Los siguientes son tipos de archivos que este software puede producir para codificar fuentes de una sola línea.
Un archivo json con un objeto. Las claves del objeto son índices unicode de caracteres. Cada llave se mapea a una matriz de polilíneas. Una polilínea es una variedad de puntos. Un punto es una matriz de 2 elementos que contiene coordenadas X e Y. Una coordenada es un flotador entre 0.0 y 1.0, y (0,0) es la esquina superior izquierda. Por ejemplo:
{
"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 ]]]
}La codificación anterior contiene los dos primeros caracteres chinos en Unicode, "一" y "丁".
Las fuentes Hershey son una colección de fuentes vectoriales desarrolladas c. 1967 por el Dr. Allen Vincent Hershey en el Laboratorio de Armas Navales, originalmente diseñada para ser representada utilizando vectores en pantallas de tubo de rayos cáculos tempranos. Las fuentes están disponibles públicamente y tienen pocas restricciones de uso. Las fuentes vectoriales se escalan y giran fácilmente en dos o tres dimensiones; En consecuencia, las fuentes Hershey se han utilizado ampliamente en gráficos por computadora, programas de diseño asistidos por computadora, y más recientemente también en aplicaciones de fabricación asistidas por computadora como el grabado con láser. (Wikipedia)
Este enlace ofrece una visión general sobre cómo analizar las fuentes de Hershey. También puede encontrar mi propia implementación en Lingdong/P5-Hershey-JS.
En comparación con los archivos de accidente cerebrovascular, las fuentes de Hershey son muchas veces más compactos, pero también tienen coordenadas menos precisas.
Si solo está interesado en utilizar fuentes de una sola línea previa a la generación, puede tomarlas en los siguientes lugares:
Nota:
Heiti.hf.txt y Kaiti.hf.txt se basaron originalmente en fuentes de sistema de macOS patentados STHeiti y STKaiti . Ahora se reemplazan con alternativas de código abierto.
Si desea generar nuevas fuentes de una sola línea a partir de archivos TTF/TTC personalizados, primero use el siguiente comando para generar un archivo de trazo codificado por JSON.
python char2stroke.py build path/to/font.ttf
Argumentos opcionales:
--first [FIRST]
--height [HEIGHT]
--last [LAST]
--ngradient [NGRADIENT]
--output [OUTPUT]
--strw [STRW]
--width [WIDTH]
width y height determinan la dimensión de las imágenes ráster de los caracteres a escanear. Cuanto más grandes sean estos números, más detallados y más lentos. El valor predeterminado es 100 para ambos.strw es el ancho de carrera aproximado (en píxeles, en width y height dados). Esto se usa al fusionar los trazos. El valor predeterminado es 10 .first y last especifica el rango de caracteres Unicode para incluir. Los valores predeterminados son 0x4e00 y 0x9fef , que contiene todos los glifos "ideógrafo CJK".ngradient es el número de diferentes gradientes utilizados para escanear la imagen. En ngradient = 1 , solo se escanean los trazos a 0 °, 45 ° y 90 °, mientras que a 2 , 3 y 4 , también se incluyen pendientes de atan(1/2) , atan(1/3) y atan(1/4) . El valor predeterminado es 2 .output : ruta para escribir el archivo de salida. Cuando esto no se especifica, el programa escribe en stdout , y > (información) y | (Información) se puede usar para redirigir la salida.Antes de generar archivos grandes, es útil hacer algunas pruebas rápidas en pequeños conjuntos de caracteres, comparar cómo resultan diferentes fuentes y ajustar los parámetros. El siguiente comando facilita este proceso con la visualización de lado a lado de los resultados de la visión por computadora.
python char2stroke.py test path/to/font1.ttf path/to/font2.ttf ...
Argumentos opcionales:
--corpus [CORPUS]
--height [HEIGHT]
--ngradient [NGRADIENT]
--nsample [NSAMPLE]
--strw [STRW]
--width [WIDTH]
corpus : cadena para probar. El valor predeterminado es el texto de mil caracteres clásico.nsample : Número de caracteres para ser elegidos al azar del corpus. El valor predeterminado es 8 .build .El siguiente comando genera una fuente de Hershey a partir de un archivo de accidente cerebrovascular producido en el paso anterior.
python tohershey.py path/to/input.json > path/to/output.hf.txt
