Sahara3のAI副業

AI副業でどこまでいけるのか?

AI副業:Pythonで漢字画像を生成してみた。

「さはら3」です。

AI副業でどこまでいけるのか?をテーマに頑張っていきたいと思います。

いつも読んで頂きありがとうございます。



最初に

さて、今回はショート動画などでよく見る

「沢山の漢字の中に似た漢字がどこかにある画像」を生成できないかと

ChatGPTさんに聞いてみて、Pythonスクリプトでできましたので、ご紹介いたします。


成果物(問題)

問題

  • 上記問題の解答は本記事の一番下に置いておきます。

完成したPythonスクリプト

import os
import csv
import random
from PIL import Image, ImageDraw, ImageFont

# CSVファイルから漢字のペアを読み込む
with open(r'C:\Users\Any\Downloads\Kanji\kanji_pairs.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    kanji_pairs = list(reader)

# 画像のサイズとフォントの設定
width, height = 1600, 1600
font_size = 120
font_path = r"C:\Windows\Fonts\YuGothB.ttc"
font = ImageFont.truetype(font_path, font_size)

# センタリングのためのオフセットを計算
offset_x = (width - (font_size * 10)) / 2
offset_y = (height - (font_size * 10)) / 2
spacing = font_size + 2

# 各漢字のペアに対して画像を生成
for pair in kanji_pairs:
    # ランダムな位置に赤色の漢字を配置
    random_row = random.randint(0, 9)
    random_col = random.randint(0, 9)

    # 問題用の画像を作成
    image_question = Image.new("RGB", (width, height), "white")
    draw_question = ImageDraw.Draw(image_question)
    x, y = offset_x, offset_y
    for row in range(10):
        for col in range(10):
            if row == random_row and col == random_col:
                draw_question.text((x, y), pair[1], font=font, fill="black")
            else:
                draw_question.text((x, y), pair[0], font=font, fill="black")
            x += spacing
        x = offset_x
        y += spacing
    image_name_question = f"{pair[0]}_{pair[1]}_1.png"
    save_path_question = os.path.join(r"C:\Users\Any\Downloads\Kanji", image_name_question)
    image_question.save(save_path_question)

    # 回答用の画像を作成
    image_answer = Image.new("RGB", (width, height), "white")
    draw_answer = ImageDraw.Draw(image_answer)
    x, y = offset_x, offset_y
    for row in range(10):
        for col in range(10):
            if row == random_row and col == random_col:
                draw_answer.text((x, y), pair[1], font=font, fill="red")
            else:
                draw_answer.text((x, y), pair[0], font=font, fill="black")
            x += spacing
        x = offset_x
        y += spacing
    image_name_answer = f"{pair[0]}_{pair[1]}_2.png"
    save_path_answer = os.path.join(r"C:\Users\Any\Downloads\Kanji", image_name_answer)
    image_answer.save(save_path_answer)

print("All images have been generated and saved!")


生成条件

  • 画像サイズは1600x1600
  • フォントは「游ゴシックのBold」
  • 漢字数は10x10=100文字
  • 1文字だけ似た漢字をランダムに配置
  • 問題用に「漢字ペア1.png」、回答用に「漢字ペア2.png」として保存
  • 漢字群をセンタリングする
  • 'kanji_pairs.csv'を読み込んで、一括で画像を生成
  • 'kanji_pairs.csv'には「見,貝」の様にカンマ区切りで保存

いかがでしたでしょうか?

実際に動かしてみると、100枚ぐらいの画像が18秒で完成します。

是非皆さんも作ってみてください。


解答

* 初出時、解答画像を間違えておりました。 訂正いたします。

解答


AI関連は日進月歩、日々之精進でございます。

最後まで読んで頂きありがとうございました。

AIさはら


本日のAI着物美女withアニマルズ

Instagram

良かったらInstagramのフォローをお願いします。

https://www.instagram.com/ai_kimono_bijo/

非アダルトで運営しておりますので、職場でも安心して堪能いただけます。