# Cnn for Combination of both digits and letters(small and capital) [closed]

Hi I am new to machine learning can anyone suggest open dataset consists of both digits and letters(small,capital)

I want images consisisting of both digits and letters to train my cnn model and make the model recognize the real time images

• Hello. This type of question (i.e. asking for a dataset) is off-topic here. Please, read our on-topic page ai.stackexchange.com/help/on-topic to know more about our scope. You could try to ask this question on Open Data Stack Exchange. I will wait for the votes of the community members to close this question (the community needs to self-moderate without my or another moderator's intervention). – nbro May 14 at 21:39
• While not directly an ML question, it is definitely related @nbro . I think many people struggle with where to find data. While Google is a great resource, there really aren't that many datasets around. This question allows us to suggest ways to build your own. :) – David Hoelzer May 15 at 21:45
• @DavidHoelzer I understand that it may not always be easy to find the dataset you're looking for, but, as far as I interpret it, the question is not about "how to build this dataset", but "where can I find this dataset". In both cases, I think the questions are off-topic. There's already Open Data Stack Exchange for the first and Data Science SE for the second. I really appreciate that you're trying to help, but I think we should focus on our scope as defined in the on-topic page. If you think we should change it, feel free to create a post on meta to discuss this ;) – nbro May 16 at 1:14
• @nbro Oh, I get that he's asking "where can I find this dataset..." I'm trying to nudge him toward being able to create his own dataset. :) I'll switch to meta if I'm motivated. :) – David Hoelzer May 16 at 14:46

As for me, the easiest path to what you are asking for is generating them yourself.

## An Example

I usually grab some TTF fonts and put them into a directory so that I have variety for character identification. Begin by importing dependencies and creating a generator function:

from PIL import Image, ImageDraw, ImageFont
from os import listdir

WIDTH       =   200
HEIGHT      =   100
MINX        =    20
MINY        =    20
MAXX        =    WIDTH-60
MAXY        =    HEIGHT-60
MINSIZE     =    24
MAXSIZE     =    48

fonts = [i for i in filter(lambda i:i[-3:]=="ttf", listdir("../data/fonts"))]

def generate_character_image():
fonts = [i for i in filter(lambda i:i[-3:]=="ttf", listdir("../data/fonts"))]
charset=list("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
while 1:
img = Image.new('RGB', (WIDTH,HEIGHT), color = (255,255,255))
font = ImageFont.truetype(f'../data/fonts/{fonts[randrange(len(fonts))]}', randrange(MINSIZE,MAXSIZE))
canvas = ImageDraw.Draw(img)
where = (randrange(MINX,MAXX), randrange(MINY,MAXY))
character = charset[randrange(len(charset))]
coords = canvas.textbbox(where, character, font)
# The coordinates are the top left corner
bounding_box = (coords[0], coords[1], coords[2]-coords[0], coords[3]-coords[1])
#canvas.rectangle(coords, outline=0, width=1)
canvas.text(where, character, font=font, fill=(0,0,0), anchor="la")
yield (character, coords, img)

for i in range(5):
print(f"{character} is in Bounding Box: {coords}")
display(image)
print(image)


You can then use this to generate an infinite number of training samples pretty trivially.

## Why This Might Be Good

Personally, I prefer to generate my datasets whenever possible. It allows me to do the following:

• Train without ever repeating a sample
• The validation data changes every time (in fact, I'll often not bother with a validation step since every epoch uses different data)
• Zero storage required

Hope this helps!

• thank you I didnt get what your code gives me an image? an dataset can you give me a brief please – madhavi May 16 at 5:57
• This code is taken from another project. It will generate a single random character at a random size an with a random font in a random location in an image. It's perfect for generating a dataset on the fly for training a CNN for character recognition. You would need to adjust the sizes, etc. for your own problem. – David Hoelzer May 16 at 14:45