[PYTHON] Générez de nombreuses images à un seul caractère avec Pillow (PIL)

motivation

Pour une raison quelconque, j'ai décidé d'essayer l'OCR dans plusieurs langues, mais je n'avais pas de jeu de données que je pouvais utiliser librement, j'ai donc dû créer le mien, j'ai donc créé un script.

Ce que j'ai utilisé

Utilisez Pillow (PIL), une bibliothèque de traitement d'images Python. http://pillow.readthedocs.org/en/3.0.x/index.html

Image à générer

Génère une image pour chaque personnage.

scénario

Le code du corps de pièce généré est le suivant.

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

def generate_char_img(char, fontname='Osaka', size=(64, 64)):
    img=Image.new('L', size, 'white')
    draw = ImageDraw.Draw(img)
    fontsize = int(size[0]*0.8)
    font = ImageFont.truetype(fontname, fontsize)

    # adjust charactor position.
    char_displaysize = font.getsize(char)
    offset = tuple((si-sc)//2 for si, sc in zip(size, char_displaysize))
    assert all(o>=0 for o in offset)

    # adjust offset, half value is right size for height axis.
    draw.text((offset[0], offset[1]//2), char, font=font, fill='#000')
    return img

def save_img(img, filepath):
    img.save(filepath, 'png')

J'ai mis tout le code exécutable dans l'essentiel. https://gist.github.com/lazykyama/dabe526246d60fa937d1 ** (2015/10/18 23:47 postscript: Il semble que la spécification de ʻImage.save () `ou le nom de fichier des alphabets supérieur et inférieur ne soit pas distinguée, alors soyez prudent.) **

Pour générer une liste de caractères pour chaque langue, procédez comme suit.

Anglais (majuscule + chiffre)

eng_char_list = list(string.digits+string.ascii_letters)

(Référence du module string → http://docs.python.jp/3.3/library/string.html)

Japonais

Faisons de notre mieux et retirons les personnages de Wikipédia.

Autres langues

(゜ ⊿ ゜) Silane

Mise en garde

référence

Recommended Posts

Générez de nombreuses images à un seul caractère avec Pillow (PIL)
Utilisez PIL ou Pillow avec Cygwin Python
Remplacez rapidement les couleurs de l'image par PIL / Pillow
Aide-mémoire PIL / Pillow
Centrer l'image avec python-pptx
Traitement d'image avec PIL
Convertir l'espace colorimétrique RVB en CIELAB avec PIL (Pillow)
Convertir des images en sépia avec PIL (Python Imaging Library)
Convertissez des images numérisées déformées en PDF avec Pillow et PyPDF
L'histoire de l'affichage d'images avec OpenCV ou PIL (uniquement)