まずイラレで文字画像を作ります。



それを学習データから判定します。
import cv2
import joblib
def predict_digit(filename):
clf = joblib.load("digits.pkl")
# 自分で用意した手書きの画像ファイルを読み込む
my_img = cv2.imread(filename)
my_img = cv2.cvtColor(my_img, cv2.COLOR_BGR2GRAY)
my_img = cv2.resize(my_img, (8, 8))
my_img = 15 - my_img // 16 # 白黒反転
my_img = my_img.reshape((-1, 64)) # 二次元を一次元に変換
res = clf.predict(my_img)
return res[0]
n = predict_digit("2.png")
print("2.png = " + str(n))
n = predict_digit("5.png")
print("5.png = " + str(n))
n = predict_digit("8.png")
print("8.png = " + str(n))
$ python3 app.py
2.png = 3
5.png = 7
8.png = 3
おいおいおい、全然合ってないじゃん
まー、2と3、5と7、8と3は似てるといえば似てるけど、せめて一個ぐらい合ってもいいのに。。