Small group letter recognition activities
Alphabet Activities for Small Groups
Hi, friends! I’m here today teaming up with my friend Elyse from Proud to be Primary for a little bit of teacher talk regarding alphabet instruction. Let’s be honest… letter and sound retention can be a struggle for some of our little learners. Some of them need repeated practice to make those letters and sounds stick!
This post contains affiliate links for your shopping convenience. Any purchases made through one of our links earns us a small commission, which helps to support the blog so we can continue sharing content like this with you. All views and opinions expressed are purely our own.
The majority of my introduction of letters occurs during whole group instruction. My number one alphabet teaching tool is my alphabet chart. For each picture, we have a little mnemonic strategy to help us better remember the letter and sound. On my alphabet chart, Aa is for alligator. The students say, “Aa is for alligator, /a/, /a/, /a/,” while opening their hands like an alligator mouth. We also learn the long vowel sound by saying, “and Aa is for /a/, /a/, /a/, /a/ long and strong,” while extending our right arm on the first /a/, extending our left arm on the next /a/, flexing our muscles on the third /a/, straightening them back out on the word “long,” and flexing them again on the word “strong.”
You can grab a copy of this letter chart by clicking HERE or on the picture below!
By the end of the second week, we have learned all of the mnemonics for each letter. This does not mean we are finished with the letter chart. We continue to run through the entire alphabet a few times a day. We use the letter chart to rhyme through the alphabet. This means I choose a word to rhyme with, and we make a rhyme for each letter of the alphabet (excluding the vowels and letter x)… so if I chose the word “man,” I would point to Bb and say /b/, /b/, ban; then, point to Cc and say /c/, /c/ can; then, point to Dd and say /d/, /d/ Dan; and so on.
I have to take a time out to thank my teammate for the idea for this awesome alphabet chart and the accompanying hand motions! She is truly genius!
The students keep a copy of this letter chart inside their writing folders. I also keep a drawer of these back at my small group table to use with my letter/sound strategy groups. We begin by using this chart to warm up our brains. Sometimes, I call out a random letter and the students have to finish with the rest of the words and the hand motion. Other times, I might say “cover the letter that says /m/,” “find the letter that comes before c,” “point to the letter after d,” etc.
I introduce the letters in the sequence outlined in Recipe for Reading by Francis Bloom and Nina Traub. Typically, we cover three letters per week. On the first day, I introduce the letter and we look at the items inside the letter box. Prior to introducing the letter, I choose a student to take home the letter box. I slip a little note inside the box, so the parents know exactly what to do once they get the box. Each student finds 3-5 items beginning with the focus letter to share with the class. You can read more about my letter box here.
After looking at all of the items inside the letter box, we practice writing the letter in the sky with our index finger. I like to play the Hooked on Phonics path of motion videos, which you can find on YouTube. Just type in “hooked on phonic (letter you need)” into the search bar. We practice writing the letter with our index finger a few times, making sure to recite the language for the correct path of motion. Then, we take out the white boards and continue practicing the correct path of motion for that letter. Here is the video for the letter M.
On the second day, we review the letter. This is accomplished a number of ways… sometimes we complete an alphabet craft, such as this little cat made from the letter C.
During small group instruction, we dig deeper into letter/sound recognition. We always begin with reciting the alphabet chart. Then, we practice forming the letter. My kiddos love to write the letter in salt/sand. I simply filled a pencil box with some decorative sand from Michaels.
You could also use regular table salt. As the students are forming the letter, I have them say the language for the correct path of motion. This is a great tactile approach to letter instruction.
Speaking of tactile approaches, my kiddos also enjoy using these alphabet rubbing plates from Lakeshore Learning. I like to tape the plate to the back of the paper to prevent slipping. As the students are creating their alphabet rub, I have them say the name of the letter and the object(s) that begins with that letter… so “Z is for /z/, /z/ zipper.” Sometimes, we will touch the rubbing plate with our finger and trace along the letter while saying this.
One of our favorite games to play is KABOOM! This game is so simple to make. Just jot a letter on the end of each popsicle stick. Then, on a few random sticks write the word “KABOOM!” To play, a student will pull a stick from the cup. If he/she correctly identifies the letter or sound, he/she gets to keep the stick. If not, the stick is placed back inside the cup. If the KABOOM! stick is drawn, that child puts back all of his/her sticks. The idea for this fun game came from the amazing Jillian of Starr Spangled Planner!
Let’s just take a moment to remember the range of academic needs in our classrooms… we all have those high flyers, average Joe’s, and those sweet kiddos who know very few letters and sounds. Because of this range, it’s important for me to differentiate instruction during our small group time, especially since we need to kick it into high gear as we move from emerging readers to independent readers. The rest of the activities in this post are perfect for easy differentiation!
One differentiated activity I like to use in the beginning stages of letter/sound recognition are alphabet puzzles. My lower group works on matching the uppercase and lowercase letters; while my middle group(s) work on matching the uppercase and lowercase letters, as well as a picture beginning with that sound. My high group matches four pieces (uppercase letter, lowercase letter, and two pictures beginning with that sound).
Some days, we use our Alphabet Clip Cards to identify letters. Some of my groups work on marking uppercase or lowercase letters. Others work on matching upper and lower case letters. My highest group works on identifying beginning sounds for each letter.
We also like to use bingo daubers during small group instruction. Spot It! Dot It! is a quick activity that my kiddos can complete independently while I am working with one or two students in the group. First they dot the letter, reciting the correct path of motion. Then, they trace the letter with the correct path of motion. Last, they spot the letter and dot it with the bingo dauber.
Once I have introduced a set of letters, we practice our letter fluency using this Roll and Read activity. The kiddos roll the die and quickly read the letters in that row. My lowest group focuses on uppercase letter recognition, while my middle group focuses on lowercase letter recognition. My highest group uses mixed upper and lowercase Roll and Read boards. I may even have them name the sound. The goal of this activity is to make letter recognition automatic.
As we become better at identifying letters/sounds, we play Alphabet Dominoes. Some kiddos work on just matching the letters, while others work on matching upper and lowercase letters. We even match letters to pictures, as we are working on identifying beginning sounds.
You can grab each of these differentiated games and more in our Reaching Readers Differentiated Alphabet Games Unit 1! Reaching Readers is a program designed to help teachers with their small group, guided reading instruction. Each unit in this program will contain lesson plans, small group games, assessments, paired texts, fluency activities, and more. Each portion of the each unit will be released separately as they are completed. There will be 6 units in total for the Reaching Readers program.
In Reaching Readers Unit 1 Differentiated Alphabet Games, you will receive 9 different games for your guided reading small group instruction. This unit covers all the letters in the alphabet and helps build phonemic awareness. Students will build their upper & lower case letter identification skills and letter sound to picture knowledge. What makes Reaching Readers so special? Every component of this program is DIFFERENTIATED! Each of the 9 games included comes with 3 differentiated levels. This means you will have the same activities/materials for your different leveled groups, but it will be at their level!
Plus, you can grab a sample of each of the games below!
If you’re looking for more great alphabet ideas, you can check out my Alphabet board on Pinterest!
Follow One Sharp Bunch’s board Alphabet Activities on Pinterest.
Don’t forget to head over to Proud to be Primary to check out all of her small group ideas for alphabet instruction!
Thank you for tuning into this edition of Teacher Talk!
6 Free Letter Naming Activities for Small Groups – KindergartenWorks
By Leslie Simpson · About 4 minutes to read this article.
We teach so many different skills to develop young readers. Here is my list of my top teaching alphabet identification printables and favorite free resources used this year in my guided reading groups.
These have helped me focus on specific skills to teach how to read and meet student needs.
Alphabet identification in kindergarten
I use these materials with small groups of students (4-6) who are demonstrating a similar reading level and generally similar strategies and skills.
However, I will mention sometimes I pull just 1-2 students from a group to work on a piece of a skill before calling the rest of the group to come over and join us.
I don't use these for kindergarten literacy center materials (though you could), just small group work.
My literacy centers are broader and differentiate themselves based on where students are at.
My favorite freebies
Let me start by listing some of my top alphabet identification and letter recognition free activities.
I Spy Letters - I like to give students a fun way to work on identifying letters. Once they locate a hidden letter in this I SPY workmat, then they name it and write it.
This is the alphabet version of the beginning reading strategy “What makes sense?” They use the alphabet chart and knowing the abc’s as their background knowledge/schema to draw from.
Strategy Tip: Keep an alphabet chart handy for reference so they can say their abc’s in order to find a match if they have difficulty naming it.
I Spy Jungle Letters - I love I Spy activities so much that I created another version for my class to use.
This one focuses on lowercase letters and has three different recording sheets so you can have options.
Alphabet Rock Paper Scissors - This is a twist on the classic game "rock paper scissors." Use the cards for students to identify and then compare the symbols.
This feels like a war game in the way it's played and is handy to play with an alphabet chart nearby.
Tip! Copy these cards onto colored construction paper to create sets that are easy to keep separate so that you can have multiple games going on at once with easy clean up.
Letter Name Treasure Quest - This game is a simple one. It works where students pull a letter card and identify it.
They keep it for identifying correctly as a point and there are additional cards that change up the rules for play to keep it interesting.
Everyone keeps playing until all the cards are drawn. The winner is the one with the most cards.
Flashcard Flash - This is a less "exciting" activity, but my students enjoy assessing themselves or working in partners so it works for us!
We focus on one set of letters based on the order I introduce them to the class. Each set features letters that look different from each other and have distinct sounds.
Each student has their own set of cards. It's easy to track who's cards belong to who since each child gets their cards printed onto their own color.
They like to keep track of the number they get correctly and try to improve next time.
If they use the strategy of finding it on the alphabet chart... it goes on yellow - but they can still get points for using a strategy.
When they consider the cards they got right as "points" it becomes fun!
Here are some great free letter flashcard sets we used:
- MSTDA | mstda
- NFPGHIJO | nfpghijo
- BWILRUCK | bwilruck
- EQXYZ | eqxyz
Dot Maker Letter Mazes - The idea of using visual discrimination to name letters is powerful. I use a letter maze once I've identified the 1-2 letters that are causing the most difficulty for a student and then use it specifically with them.
They get one focus letter. They begin searching for the focus letter as they practice moving left to right and top to bottom along the letter grid.
Once they find the focus letter, they have to identify its name before stamping it. I choose lots of letters that look similar to make this a challenge.
Let's wrap it up
I hope that you can use one or some of these alphabet identification ideas with your kinders in small groups!
Ready for more skills to work on? Here are my favorite 5 beginning sounds activities for free.
If you like what I do here on KindergartenWorks, then be sure to subscribe today. I look forward to sharing ideas with you weekly.
More reading in kindergarten resources
- Ending Sounds: 9 Guided Reading Skill Group Materials
- Beginning Sounds: 5 Guided Reading Activities
- Handy Guided Reading Mats for Kindergarten Groups
- 12 Must-Have Guided Reading Tools to Use in Kindergarten
About Leslie Simpson
Leslie is the teacher behind KindergartenWorks. She believes in teaching kinders how to be pretty incredible along with teaching them to read, write and think for themselves. She enjoys drinking hot tea, making mud pies with her three kids and sharing what she's learned with teachers.
Reader Interactions
LOGOPED.RU: Abstracts of speech therapy classes. - LOGOPED.RU
Use Search for more convenience.
Front.
Abstract of a lesson on the formation of phonemic representations in the senior speech therapy group for children with ONR “Vowels A, O, U, I, Y”.
Sports and logopedic leisure “Journey to the winter forest”.
Retelling of the Russian folk tale “The Fox and the Crane” with the inclusion of a descriptive monologue in the preparatory group for children with mental retardation.
Synopsis of a frontal lesson on the formation of lexical and grammatical categories in a preparatory group for school.
Lesson with children with OHP in the senior group “Sound Ts. Letter Ts”.
Synopsis of speech leisure on the topic “Summer”.
Synopsis of a comprehensive developmental lesson for children 2-3 years old "Wild animals: fox, bear, hare. "
Integrated lesson for preschool children “Autumn”.
Speech therapy entertainment for pupils of primary and secondary preschool age with ZPRR on familiarization with traffic rules “Svetofor Svetoforovich Migalkin”.
Synopsis of a comprehensive developmental lesson for children 2-3 years old “Journey to the autumn forest”.
Synopsis of the lesson for children with FSF “Letter U”.
Synopsis of a comprehensive frontal lesson on the topic “Utensils” for children of the preparatory group with general underdevelopment of speech.
Summary of the frontal lesson on the topic: “The sound and the letter Щ”.
Speech therapy lesson in the 1st grade “Vowels and consonants”.
Synopsis of an integrated lesson of a speech therapist and psychologist with children with disabilities (children with intellectual disabilities) “Pets”.
Outline of the lesson for children of the preparatory school group “Sound “D”. Letter "D".
Outline of the lesson for children of the group preparatory to school “Differentiation of sounds “h-k”.
Outline of the lesson for children of the group preparatory to school “Sounds “X”, “X”.
Speech therapy entertainment for children of the senior and preparatory groups "Entertaining exam for preschoolers".
NOD “Journey to Dunno”. Final event for children of the senior group.
Summary of the frontal lesson on the topic “Sound and the letter K”.
Synopsis of direct educational activities with children of the senior group "Migratory birds" for the correction of general underdevelopment of speech.
Frontal lesson on the formation of the grammatical structure of speech for children of the preparatory group “Wintering Birds”.
Synopsis of speech therapy frontal lesson “Birthday of a hare. Wild animals".
Summary of directly educational activities for children of the senior speech therapy group (5-6 years old) with OHP on the lexical topic: “Dishes”.
Summary of the final integrated lesson-game in the preparatory speech therapy group of children with ONR “Visiting Aibolit”.
Outline of a speech therapy lesson: "Sound O. Letter O"
Outline of the lesson on the topic: “The sound of Y. Letter Y".
Outline of the lesson on the topic: "Differentiation of sounds n-t-k".
Synopsis of an integrated lesson in the middle group of a speech therapist and educator “Visiting Smeshariki”.
Abstract of the frontal lesson for elementary school (2nd grade) “Parts of speech”.
Synopsis of a lesson on logorhythmics in the middle group for children 4-5 years old with OHP on the topic “Forest. Mushrooms".
Scenario of speech therapy holiday “Big Letters”.
Synopsis of the integrated educational activities of children of the speech therapy group on gender education on the topic: "Magic Flower of Kindness".
Klygina S.B. Synopsis of a frontal lesson for children 5-6 years old with general underdevelopment of speech “Accusative case of singular nouns”.
Brodnikova N.A. Synopsis of an open speech therapy lesson in the preparatory school group “Transport. Rules of the road” for children with OHP 6-7 years old.
Starostenkova O.A. Speech therapy lesson with students of grade 2 on the topic: "Differentiation of vowels A - Z in syllables and words" (in accordance with the requirements of the Federal State Educational Standard).
Beridze N.K., Dunaeva G.A., Novokshchenova N.G. Outline of a speech therapy lesson “Sounds“ to - ky ”. The letter "K".
Fedotova O.A. Abstract of a lesson on the development of coherent speech in the preparatory group for children with OHP "Spring" (development of coherent speech using TRIZ technology).
Gorbatskaya S.G. An open speech therapy lesson with children 6-7 years old on the topic “Retelling of the Russian folk tale “The Fox and the Crane”.
Kokoreva N.N. Synopsis of a frontal lesson on teaching literacy for children of the KRO preparatory group for school (6-7 years old) for children with mental retardation “Speech sounds. Vowels and consonants.
Beridze N.K., Dunaeva G.A., Novokshchenova N.G. Outline of the speech therapy lesson "Sound "T". Letter "T".
Zaripova I.N. Abstract of a speech therapy lesson in the second junior group “On the roof of Carlson”.
Penyushkina O.V. Abstract on the development of speech in the senior group for children with ONR “Birds of our region.”
Grankina O.B. Outline of the GCD on the formation of lexical and grammatical categories and coherent speech in the senior group of compensatory orientation for children with ONR. Lexical theme: "Vegetables".
Barkalova E.V. Synopsis of an open leisure activity “Clever and clever. Differentiation of sounds C-CH ”in a speech therapy preparatory group for school.
Astafieva O.V., Artemyeva O.N. Synopsis of a comprehensive lesson in a speech therapy group (for children with ONR 5-6 years old) “Along the Volga - Mother”.
Revt I. Logopedic lesson for the 3rd grade on mixed dysgraphia “Differentiation of prefixes and prepositions. Journey to the Far North”.
Soldatenkova N.V. Abstract of a lesson on the formation of phonemic perception and auditory attention in the middle group for children with a diagnosis of ONR “Sound U”.
Karnaukhova A.F. Abstract of a speech therapy lesson for a compensatory group preparatory to school for children with severe speech disorders. “Learning is the path to skill. Literacy education”.
Nikitina N.V. Synopsis of an open speech therapy lesson with 1st grade students with FFNR “Differentiation of consonants Ch-Sch in syllables, words and sentences”.
Transition V.V. Synopsis of the frontal correctional and developmental lesson “Circus! The circus! The circus! Sound Automation [p]”.
Krasnikova A.I. Outline of the speech therapy lesson "The house and its parts."
Revt I. Speech therapy lesson for the 2nd grade on the topic "Spelling of unstressed vowels at the root of a word".
Valdman I. Synopsis of direct educational activities with children of the preparatory group ONR "Walk in the spring forest. "
Buyanova I.V. Abstract of the organization of directly educational activities on speech development in the preparatory speech therapy group “Compilation of a story on the lexical topic “Colors of Autumn”.
Miroshnichenko A.A. Synopsis of an open speech therapy lesson on the education of a sound culture of speech in the senior group “Oh, this letter “P”.
Revt I. Synopsis of a speech therapy lesson in the 4th grade for the correction of mixed dysgraphia “Adjective name. Antonyms and synonyms”.
Isakova E.P. Synopsis of an open speech therapy lesson with 3rd grade students who have an unsharply pronounced general underdevelopment of speech. "Differentiation of sounds [g], [w] and letters Zh and Sh".
Isakova E.P. Synopsis of an open speech therapy session with 2nd grade students with a written speech disorder. Topic: "Differentiation of letters Yo - Yu in syllables, words and phrases."
Stepanova T.A. Direct educational activity in a compensatory group for children with severe speech disorders of a group preparatory to school for the formation of normative sound pronunciation with elements of literacy training on the topic “The Adventures of a Bunny”.
Gorbatskaya S.G. An open speech therapy lesson with children aged 6-7 on the topic “The sequence and features of working with one- and two-syllable words without a confluence of consonants”.
Cherednichenko V.V. “The sound and the letter “P”. Correctional and developmental activities to form the phonemic perception of children with mental retardation. First year of study.
Beridze N.K., Dunaeva G.A., Prokopenko E.F. The plan is a compendium of the GCD in the group preparatory to school “Differentiation of sounds “P-P”.
Beridze N.K., Dunaeva G.A., Prokopenko E.F. Synopsis of the speech therapy lesson “Sound “P”. The letter "P".
Shafigulina A. Synopsis of an integrated speech therapy lesson in the preparatory speech therapy group “Let's make a vinaigrette”.
Trubetskaya S.N. Speech therapy lesson “Using words - antonyms in speech” (Grade 2, reading and writing disorders caused by ONR with mental retardation).
Gamidova E. B. Synopsis of the speech therapy lesson “A Book for Mowgli” (Winter. Generalization).
Maksimova O.V. Game - entertainment “What? Where? When?" on the theme "Autumn".
Krivenok E.T. Synopsis of a subgroup lesson on the correction of dysgraphia on the basis of a violation of phonemic recognition “Differentiation of the sounds P and Pb. Spring. Flowers and plants.” (4th grade)
Terekhova O.I. Synopsis of a speech therapy lesson on the topic “Prepositions”.
Golzeker E.I. Literacy lesson “Sounds [C] - [Z]. Stage of differentiation in words”.
Ainetdinova R.M. Synopsis of a subgroup lesson with children of senior preschool age with OHP "Headwear".
Ainetdinova R.M. The script of the logopedic holiday "Logo-Halloween".
Moiseeva V.A. Abstract of the lesson in the senior group for children with OHP level III on the topic “Walking in the forest”.
Golzeker E.I. Lesson on sound pronunciation “Sound “L”. Stage of automation in words”.
Baibar D.S. Abstract of a lesson on the correction of dysgraphia on the basis of a violation of phonemic recognition “Differentiation of sounds C and Sh. Food” Grade 2.
Petrenko O.D., Prokopenko E.F., Novokshchenova N.G. Outline of the speech therapy lesson “Sound “A”. The letter a".
Petrenko O.D., Prokopenko E.F., Novokshchenova N.G. Outline of the speech therapy lesson “Sound “I”. The letter "I".
Petrenko O.D., Prokopenko E.F., Novokshchenova N.G. Outline of the speech therapy lesson “Sound “U”. The letter "U".
Golmakova O.N. Summary of a lesson in a preparatory group for school for children with OHP levels I-II on the topic "We are now not just children, we are sailors today."
Isakova E.P. Synopsis of an open speech therapy lesson with students of the 1st grade who have an unsharply expressed general underdevelopment of speech "Sounds [l], [l '], letters L, l".
Filippova L.N. Synopsis of the frontal lesson “Sound C”.
Efimova I. Synopsis of the lesson in the 2nd grade (ONR level 3) on the topic “Spring”.
Shutova E.A. Abstract of a lesson on the development of the lexical and grammatical side of speech in children with OHP "Transport".
Smirnova T.E. Speech therapy lesson for 4th grade students "Text, topic, main idea as a concept."
Abrukova G.V., Filatova A.I. Synopsis of speech therapy entertainment "SPRING IS COMING TO US ..." in the younger group for children with ONR.
Kochura O.M. Synopsis of the speech therapy lesson "Nouns in the indirect case with the prepositions "in", "under", "for", "above", "in front", "behind", "about".
Nazarova E.A., Zasypkina I.V. Synopsis of the integrated lesson in the 1st junior group “In the clearing”.
Kalashnikova N.A. An open lesson on the development of lexical and grammatical categories in the preparatory group on the topic “Birds in Spring”.
Morina I.A. Abstract of a lesson in a group preparatory to school for children with OHP (II-III levels) on the topic "Use of words - synonyms. "
Sorokina T.V. Synopsis of a speech therapy lesson “Distribution of a complex sentence by definitions.
Shapovalova N. Synopsis of a lesson on teaching literacy “Sounds M-M”. The letter M” in the compensatory preparatory group for children with mental retardation.
Manjavidze T.A. Open speech therapy lesson with students of grades 2-3 using ICT “Differentiation of vowels [I] - [Ы] and letters I - Ы. Designation of softness and hardness of consonants with the help of vowels I - Y.
Smirnova R.Yu. Subgroup lesson “From sound to story”. Automation of the sound R in speech.
Bataeva S.A. An exemplary summary of the GCD on the development of speech “Like the Don Cossacks ...” for children of the group preparatory to school.
Maksimova O.V. Abstract of the directly educational activity “Forest School” on the topic: “Formation of grammatical categories” in the senior speech therapy group.
Zinenko T.K. Speech therapy lesson in grade 1 VII type “Sound [s], letter C. Signs of spring”.
Nekrasova N.P. Synopsis of the subgroup lesson "Transport. Traveling by road."
Nechaeva S.A. Scenario of organizing directly educational activities in the preparatory group "Spring".
Zakharchenko O.V. Summary of the final lesson-game for the development of coherent speech in children with ONR in the preparatory group "Magic Treasure".
Leskova N.S. Synopsis of an open lesson on the development of fine motor skills in the classes on familiarization with sounds and letters for parents on the topic: "Nata's doll is our guest."
Minkina S.A. Summary of directly educational activities on the topic: “Formation of grammatical categories” in the middle speech therapy group.
Pushkareva L.M., Bykovskaya O.S. Synopsis of a comprehensive speech therapy lesson in the senior group “How we helped Spring”.
Sorokina T.V. Abstract of a lesson on teaching literacy in the preparatory group "Consonant sounds N, Nn. Letter N".
Lapina E.V. Synopsis of a subgroup speech therapy lesson on the topic: “Differentiation of sounds “Sh” - “S” in words and phrases. Logopedic Olympiad”
Zakharchenko O.V. Abstract of a communication lesson for children with OHP levels 1-2 “Sound imitation of the voices of wild and domestic birds”.
Egorshina I.N. Synopsis of a frontal lesson on teaching literacy to children with FFN in the preparatory school group “Sounds [L] - [L ']”.
Egorshina I.N. Synopsis of a frontal lesson on teaching literacy to children with FFN in the preparatory group “Sound [m] and letter M”.
Egorshina I.N. Synopsis of a frontal lesson on teaching literacy to children with FFN of the preparatory group "Sounds [f] - [f '], letter F".
Zakharchenko O.V. Abstract of a lesson on the development of coherent speech in children with OHP (senior group, 2nd year of study). Topic: Berries and fruits. Retelling of the text “Dispute between fruits and berries” based on pictures-symbols.
Bortsova Yu.N. Abstract of the combined lesson on the development of speech for middle-aged children "Little Red Riding Hood".
Dzyuban N.A. Synopsis of the frontal lesson in the senior group "Sea inhabitants".
Gulyaeva E.N., Trofimova E.I. Synopsis of organized educational activities “Let's help the clown regain his voice” for children of the preparatory group for school.
Trivozhenko E.I. Synopsis of the directly educational activity “A fairy tale in a fairy tale” on the development of lexical and grammatical means of the language in the preparatory speech therapy group.
Makarova O.S. Synopsis of a frontal speech therapy lesson on the formation of lexical and grammatical means of the language “How to cook porridge from an ax?”.
Tislyuk E.N. Synopsis of direct educational activities in the senior group of compensatory orientation for children with ONR “In the forest clearing”. The development of coherent speech (learning a poem) with the help of mnemonics (mnemotables).
Filatova A.I., Kudryavtseva I.B. “The fairy tale “Turnip” for children in a new way”. Theatrical activities for children younger preschool age with OHP.
Serezhkina N.S. Speech therapy lesson on the topic “Differentiation P-B (P’-B’). Differentiation in syllables, words, phrases, sentences”.
Kochetkova R.N. The game is a competition of teams “Space Adventure”. Development of analysis and synthesis skills in speech therapy classes.
Tislyuk E.N. Summary of directly educational activities in the preparatory group of compensatory orientation for children with general underdevelopment of speech “In the Museum of Cosmonautics”.
Tryapitsyna E.E. Abstract of an open speech therapy lesson with children of a compensatory group preparatory to school for children with general underdevelopment of speech of the III level of speech development "To school".
Blinova O.O. Abstract of a lesson on the development of speech and familiarization with the outside world in the second junior group (ZPR) "Toys".
Tislyuk E.N. Synopsis of the complex lesson “In the library. The history of the creation of a printed book.
Gapich M.R. Speech therapy lesson with a group of children of grade 1 "Distribution of a simple two-part sentence by definition."
Kurtseva L.L., Korskova O.V., Shevlyagina N.A. Synopsis of directly integrated educational activities in the preparatory group for school No. 1 (ZPR) “Gifts of Zimushka-Zima”.
Valiullova I.A. The development of the verb vocabulary. Leisure scenario on the topic “Journey to the world of professions”.
Boyarshinova M.V. Open speech therapy lesson on the topic “Designation of the softness of consonants in words using vowels of the 2nd row”.
Titova O.A., Minkina I.S., Ilyina L.P. The staging of “Once upon a time there was a chicken” based on the work of K.I. Chukovsky "Chicken" for children of the middle group with general underdevelopment of speech.
Lavrenova O.A. Lesson-travel "Winter's Tale" (preparatory speech therapy group for children with general underdevelopment of speech).
Kukhanova I. Synopsis of a speech therapy lesson on the development of speech in children with ONR “Retelling the fairy tale “A chance in the forest”.
Polikarpova Z.V. Master class "The use of innovative technologies in working with children of preschool age in the conditions of the point of correctional and pedagogical assistance (theatrical activities, modeling, computer technology) "Winter's Tale".
Yu.V. Chekhomova Continuous directly-educational activity with children of the senior group in the section: "learning to read and write". Final lesson.
Chamber S.V. The plan is a summary of the integrated direct educational activities in the preparatory group "Insects".
Polikarpova Z.V. Synopsis of an open lesson with pupils of the senior group “Sound and letter Zh”, “Pets”.
Koren A.A. Corrective lesson on the differentiation of sounds from - sh in syllables, words, verses.
Koren A.A. Summary of the speech development lesson “Together with the kolobok” for children 2-3 years old (first junior group).
Latukhina I.G. Synopsis of a frontal lesson in the 5th grade for children with systemic underdevelopment of speech with a mild degree of mental retardation of a special (correctional) school of the VIII type “Words denoting a sign of an object”.
Belozerova I.N. Correction of acoustic disturbances in students of the 1st grade of the OHP of the 3rd level. Speech therapy lesson "Differentiation of phonemes with acoustic-articulatory similarity S-Sh".
Domracheva N.V. Speech therapy lesson on the correction of the syllabic structure of a word in children of older preschool age with phonetic and phonemic underdevelopment of speech (6-7 years old) with elements of theatricalization "In the magical land of tongue twisters".
Ardislamova E.R. Synopsis of directly educational activities on sound pronunciation in the preparatory group for children with ONR "Sound" Ch. "Postman Pechkin brought the parcel."
Soldatenkova N.V. Scenario of folklore leisure "Maslenitsa" in the senior group for children with general underdevelopment of speech.
Maksimenko O.N. Summary of directly educational activities with children 2-3 years old on the topic: Visiting grandparents.
Alferova I.R. Corrective speech therapy lesson on the topic “The letter is a soft sign”.
Soldatenkova N.V. Synopsis of a speech therapy lesson on the topic “Autumn” in a group for children with a diagnosis of general underdevelopment of speech.
Soldatenkova N.V. Synopsis of a speech therapy game - entertainment "Santa Claus's Enchanted Bag".
Bogdanova Yu.O. Speech therapy lesson on fixing the articulation of the sound [w] “Winter fun for children”.
Izgagina M.L. Synopsis of a frontal lesson on the development of speech and the formation of lexical and grammatical means of the language for students in grades 1, 2 with OHP level III. Lexical theme: "Yekaterinburg is the city where I live."
Dolgopolova V.N. Synopsis of an integrated lesson on sound pronunciation correction + speech development on the topic: “Automation of the sounds “C”, “Z” in words and sentences on the lexical material “Autumn”.
Kostyuk I.A. Synopsis of a frontal speech therapy lesson in the senior group for children with a general speech disorder “Dom. Furniture".
Solkina V.A. Synopsis of direct educational activities for teaching literacy in the preparatory school speech therapy group “Sound and the letter Zh”.
Kochetova N.M. Frontal speech therapy lesson on the topic “The gender of nouns. Differentiation of nouns of different kinds”. (First lesson - introduction).
Lavrinenko N. A general literacy lesson “Journey to the Zoo”.
Masalimova A.Z. Lesson "Game Mosaic". Education of phonemic perception.
Maksimenko O.N. Holiday scenario on the theme: “Autumn has come to visit us” with children 3-4 years old.
Kaloeva G.P. Synopsis of a frontal speech therapy lesson with elements of theatricalization in the senior group “The Tale of the Fox - the Red Beauty. Sound Automation C”.
Bogdanova Yu.O. A trip to the winter forest. Lexical theme "New Year".
Tselousova I. Synopsis of a subgroup speech therapy lesson using health-saving technologies in the senior group of compensatory orientation “On a visit to Luntik”.
Kaneva E.V. Synopsis of a subgroup (individual) lesson in a preparatory group on the topic “Sport. Sound Automation C.”
Waldman N.S. Summary of joint educational activities with children of the preparatory group for the correction of general speech underdevelopment "Fedora's Helpers"
Gosteva O.P. Synopsis of a group speech therapy lesson on overcoming acoustic dysgraphia in grade 2 students on the topic "Differentiation of sounds [G] - [K] in syllables, words and sentences."
Filatova V.A. Synopsis of a speech therapy lesson in grade 2 "Logo-rhythmic word schemes. New Year"
Klyueva N.N. Synopsis of the frontal lesson on the topic "Automation of sound L".
Chernova O.S., Laguta I.A. Speech therapy leisure-entertainment “Dunno and things” in the senior group for children with ONR.
Gronskaya E.Yu. Corrective activity in small subgroups “We are playing with the sound [P] ..”.
Kaloeva G.P. Synopsis of an open frontal lesson for parents using modern educational technologies in the senior speech therapy group “Compiling a story-description of fruits using mnemonics. Sounds "A", "U".
Orlova A.S. Synopsis of a subgroup speech therapy lesson with older preschoolers “Relative adjectives. Food".
Andronova N.A. Sub-group speech therapy lesson in preparation for learning to read and write “Sound and letter Sh. Sound analysis of words like SGCC.”
Luft I.P. An open lesson on the formation of the correct pronunciation in children with FFN of preparatory age “Automation of the sound “C” in syllables, words and sentences. Introduction to the letter "C".
Luft I.P. A lesson in preparation for teaching literacy with children of the preparatory group with the FFNR “Sound and the letter “C”.
Shalagina E.N. The scenario of the organization of directly - educational activities for the formation of lexical and grammatical means of the language in the preparatory group for children with OHP “Vegetables. Fruit".
Elsakova O.A. The scenario of organizing directly educational activities for the preparatory group for children with OHP “Circus performance” (on the lexical topic “Animals of hot countries”.
Beridze N.K., Shedko A.N. Synopsis of the subgroup speech therapy lesson “Sound “B”.
Synopsis of a frontal lesson on the development of coherent speech on the topic “Indoor plants” for children of the preparatory group ..
Abstract of the frontal lesson on the formation of lexical and grammatical categories "Words-actions"..
Synopsis of a frontal speech therapy lesson on the development of coherent speech in a group preparatory to school for children with OHP. Retelling of the text based on one plot picture ("At the dacha")..
summary of the GCD on the formation of descriptive speech in children of senior preschool age "On a visit to Smeshariki" ..
Compilation of the story "Feeding Trough" based on a series of plot pictures. Differentiation of sounds [s] - [s ']..
Lesson in the preparatory speech therapy group. Sound and letter R.
Summary of the frontal lesson on the formation of lexical and grammatical categories and the development of coherent speech "Man. Parts of the body." Senior group with ONR..
Lesson on sound pronunciation in the middle group. Sound a..
Synopsis of a subgroup speech therapy lesson with students of grades 1-2 on dysgraphia correction "Syllabic analysis of words".
Synopsis of the GCD on the development of speech "Retelling the text based on the scheme."
Logorhythmic lesson "Spring". Preparatory group.
Abstract of the integrated lesson on the topic "Parts of the body and face" in grade 2 ("Special child").
Differentiation of consonant sounds and letters С – Ш in syllables, words, sentences. Topic: "Clothing in the fall" (children with disabilities, grade 2).
Differentiation of sounds and letters B-D in students with disabilities.
Differentiation of letters p-t..
Speech therapy quiz in the 4th grade "Verbal Mosaic".
Synopsis of an integrated lesson on speech development for children 4-5 years old with OHP.
Summary of the lesson on the lexical topic "Pets".
Abstract on overcoming violations of phonemic processes of students with mild mental retardation Acquaintance with the sound "B" ..
Abstract of the open lesson "Journey through the Magical Forest".
Abstract of a lesson on teaching the retelling of preschoolers 5-6 years old with a mental retardation of the story "The Cat and the Hedgehog" through the use of mnemonics.
Scenario of the holiday - entertainment dedicated to "Mother's Day".
Sounds С and С. Letter C. Lexical theme "Clothes".
Sub-group lesson "Differentiation of whistling sounds; С, Сь, З, Зз in words, sentences.".
Abstract of a lesson on the development of speech (preparatory speech therapy group) Theme "Kingdom of Autumn" . .
Abstract of directly educational activities using LEGO - constructor in the preparatory school group for children with OHP on the lexical topic "Transport".
Summary of the lesson “Relationship between the number and quantity within three” (For children with mental retardation 5 years.).
Synopsis of speech therapy classes on lexical and grammatical categories. Theme "Migratory birds".
Lesson "Journey to the country of Smeshariki" Topic: "Sounds K - K" (senior group for children with severe speech disorders).
Open lesson-entertainment in preparation for learning to read and write in the preparatory logo group.
Abstract of a lesson on the development of speech and correct pronunciation for children with mental retardation 6 years old "Sound K" ..
Synopsis of a speech therapy lesson in a group preparatory to school for children with OHP on the topic “Differentiation of sounds [L] - [R]”.
Abstract of a lesson for children with OHP (6 years old) on the development of the lexical and grammatical structure of speech “The Boy is the other way around”.
Logopedic lesson "Foodstuffs. Antonyms".
Sound-letter analysis. Birds in autumn.
Intellectual and entertaining event Autumn motives.
Lesson notes Denoting the softness of consonants in writing by means of a soft sign.
Abstract of the individual lesson "Poultry".
Synopsis of a speech therapy lesson: Sound C.
Final speech therapy event in grades 1-4 of a special (correctional) school of the VIII type Speech therapy literacy.
Synopsis of an open integrated speech therapy subgroup GCD. Subject: Birds..
Synopsis of speech therapy classes on lexical and grammatical categories. Subject: Spring.
Lesson summary for young children Birds in winter.
Synopsis of a speech therapy lesson on the development of coherent speech ..
Synopsis of direct educational activity on sports and speech therapy leisure: Strong, courageous, grow up.
Synopsis of a speech therapy lesson in the senior group for children with OHP on the topic Sound and letter [B]. .
Frontal lesson Sound L-L.
Synopsis of the frontal speech therapy lesson Island of Lost Words.
Synopsis of a speech therapy lesson on the topic: Prevention of dysgraphia and dyslexia. Automation of sound [l] in syllables and words.
Synopsis of group correction GCD Sound and letter Zh.
Summary of the lesson "Alternative reading"..
Use of nouns in oblique cases on the topic Pets.
Learning to read and write Fun tasks for kids.
Lesson on the development of speech in the preparatory group.
Spring has come. Sounds S-S.
Compilation of a story based on a series of narrative paintings by N. Radlov How a toy bunny saved a living one.
Abstract of a lesson on teaching literacy in the senior group. Topic: Journey to the fairy forest (acquaintance with the sound З and З')..
Sound and letter C. Preparatory group for school..
synopsis of a group speech therapy lesson with elements of logorhythmics. Subject: Visiting the birds. Sounds [G] - [G '] and the letter G.
Synopsis of a correctional lesson on the automation of sound L in children of senior preschool age ..
Synopsis of a speech therapy lesson on lexical and grammatical categories in the preparatory group. Theme: Summer..
NOD Forest walk for older preschool children with disabilities..
Synopsis of a speech therapy lesson in the preparatory group "Sound [Sch] and letter Sch."
Summary of GCD in the preparatory speech therapy group. Theme: "Transport".
Open lesson Journey into a fairy tale.
Synopsis of a comprehensive lesson Journey to the island..
Integrated lesson Forest kindergarten. Differentiation [s-z]..
Text . Sentence. From the cycle of final speech therapy classes with older preschoolers aimed at developing language analysis and synthesis.
Abstract of a speech therapy lesson on the development of lexical and grammatical categories and coherent speech in the preparatory group on the topic Bread. .
Synopsis of a speech therapy lesson in grade 2 Differentiation of sounds sh, sh, letters sh, sh in syllables and words.
Summary of classes in the senior group with children with OHP. Dog with puppy.
Synopsis of a speech therapy lesson with students of grade 2 "Space travel. Differentiation of S-Sh" ..
Outline of the speech therapy lesson "Sound G'. Letter G" ..
Distinguishing voiceless and voiced consonants: T and D..
Cognitive and speech lesson (preparatory group for school) Theme Insects. Writing a descriptive story about an insect.
Speech therapy lesson for grade 3 on the topic: O, E after hissing and C..
Synopsis of the frontal lesson on the sound culture of speech Differentiation of sounds [M] - [M '] .
Open class Journey to the country of correct speech.
Synopsis of a frontal lesson in preparation for learning to read and write Sounds С, СЬ, Ц,. The letters C, S. for children of the preparatory group with general underdevelopment of speech . .
Bogorodsk carved toy.
Literary and musical leisure in the senior speech therapy group.
Synopsis of the frontal lesson on teaching grammar.
"Little literate" manual. Abstracts of classes on teaching literacy.
Synopsis of the frontal lesson Sounds Ch - Shch.
Summary of an open lesson on preparation for teaching literacy in the preparatory group with OHP "Sounds [T] - [T']. Letter T".
Game logopedic training on the topic Animals of the North. Presentation..
Syllabic structure of the word. Two-syllable words with an open syllable.
Abstract of the lesson in the senior group on the topic: Automation of the sound Ш in syllables, words ..
Abstract of an individual lesson "Differentiation of sounds [С-Ш] in syllables, words and phrases" in a group preparatory to school..
Synopsis of the speech therapy lesson "The sound and the letter H" ..
Sound pronunciation lesson "Differentiation of sounds [s - s]". .
Scenario of joint entertainment in the preparatory groups "KVN" on lexical topics "Dishes", "Pets".
Synopsis of the frontal speech therapy lesson on the topic: Visiting Olya. Sound and letter O..
Abstract of a speech therapy lesson on the development of coherent speech for children of senior preschool age with OHP III ur. "Christmas".
Summary of directly - educational activities on the topic: Dishes and products in the preparatory group for children with OHP.
Synopsis of a speech therapy lesson for schoolchildren on the topic: "Separation of first-row vowels from monosyllabic words" Grade 1 (for children with mental retardation)".
Summary of the lesson "Development of auditory perception"..
Synopsis of a subgroup speech therapy lesson in the middle group "Gifts of Autumn".
Synopsis of a speech therapy lesson in the middle group for children with OHP on the topic Wintering birds..
Synopsis of the speech therapy lesson "Sounds [t] - [t'] Letters T, t".
Summary of a lesson on the development of coherent speech “Retelling the fairy tale by Vladimir Grigorievich Suteev “Under the Mushroom” (with elements of dramatization).
Scenario of joint entertainment in preparatory groups "KVN: a general lesson on the topic "Winter".
Synopsis of a frontal speech therapy lesson in a preparatory group of a compensating orientation Topic: Sounds [b], [b]. Our guests are Bim and Bom the clowns.
Final lesson in the senior speech therapy group Toy store..
Outline of the lesson in the group preparatory to school..
Outline of the lesson in the group preparatory to school..
Synopsis of speech therapy lesson "Sounds [M] and [M']. Letter M".
Synopsis of the speech therapy lesson "Sounds [C] [C ']". .
Outline: Sound and letter N..
Summary of the lesson “Wild Animals of Our Forests”.
Synopsis of a speech therapy lesson. Subject: sound [d]..
Synopsis of the frontal speech therapy lesson "Sound and the letter [r]. ..
Summary of the lesson in the preparatory group on the topic Journey to the country of sounds.
Synopsis of GCD on the topic Agreement of numeral and noun in the genitive case.
Workshop for parents "One, two, three, four, five - we start playing!".
Synopsis of a speech therapy lesson with a group for correcting writing and reading disorders in OHP "Formation of words with the help of suffixes" ..
Summary of frontal direct educational activities using ICT "Let's tell Luntik about spring."
Outline of a speech therapy lesson on the topic "Letter R" ..
Plan-outline of a speech therapy lesson on the topic "the sound of Pb" ..
Lesson-game "Star hour" to improve sound analysis..
Open integrated lesson in the Russian language and speech therapy in the 5th grade. Topic: gender of nouns..
Differentiation of paired consonants and letters G and K. Lexical theme Flowers..
Summary of the final lesson in the preparatory group for children with OHP "Curious Bunny".
Summary of direct educational activities in the field of communication on the topic of March 8 in the senior speech therapy group..
Synopsis of OD in the field of communication in the preparatory speech therapy group (sound culture of speech). Topic: Sounds Х-ХЬ, differentiation of sounds..
KVN on the lexical topic Migratory birds..
Synopsis of a speech therapy lesson. Subject: Sound [th], letter Yy..
Synopsis of a speech therapy lesson. Topic: Differentiation of sounds [solution]..
Summary of the lesson "Geometric figures. Circle" ..
Sounds and letters C - C..
Synopsis of a speech therapy lesson for children of the preparatory group with OHP: Sound and letter K..
Differentiation of consonants. Denoting the softness of consonants..
Summary of the lesson: Sound-alphabetic analysis of monosyllabic words with a confluence of consonants. .
Combined pronunciation and literacy lesson for a preparatory group with OHP Sounds [р], [р`]. Suggestion between. .
Synopsis of an open subgroup lesson for children with FFNR. Topic: Sounds [p], [p]. Letter R.
Abstract of the lesson on the formation of lexical and grammatical means of the language in the senior group for children with OHP Fruits.
Summary of GCD on preparation for teaching literacy on the topic: Visiting the Princess of Jokes.
Integrated psycho-speech therapy lesson "A proverb is not said in vain" using a speaking pen "Expert".
Final speech therapy lesson in the preparatory group.
Synopsis of a speech therapy lesson on the automation of sound [w']. Pike and puppy came to your lesson..
Summary of the lesson "Sounds [L] - [L]. Letter [L].".
Game-quest for children 5-6 years old.
Abstract of the lesson in the senior speech therapy group differentiation of sounds r-l ..
Lesson on the formation of lexical and grammatical means of the language in the preparatory group for children with SPD (OND). Topic: Animals of hot countries. Travel to Africa.
do text recognition in half an hour / Sudo Null IT News
Hello Habr.
After experimenting with a well-known database of 60,000 MNIST handwritten digits, a logical question arose whether there is something similar, but with support for not only numbers, but also letters. As it turned out, there is, and such a database is called, as you might guess, Extended MNIST (EMNIST).
If anyone is interested in how this base can be used to make simple text recognition, welcome under cat.
Note : this example is experimental and educational, I was just curious to see what happens. I did not plan and do not plan to make a second FineReader, so many things here, of course, are not implemented. Therefore, claims in the style of “why”, “there is already better”, etc., are not accepted. Probably ready-made OCR libraries for Python already exist, but it was interesting to do it yourself. By the way, for those who want to see how the real FineReader was made, there are two articles in their blog on Habré for 2014: 1 and 2 (but of course, without source codes and details, as in any corporate blog). Well, let's get started, everything is open here and everything is open source.
Let's take plain text as an example. Like this:
HELLO WORLD
And let's see what we can do with it.
Breaking text into letters
The first step is to break the text into individual letters. OpenCV is useful for this, or rather its findContours function.
Open the image (cv2.imread), convert it to b/w (cv2.cvtColor + cv2.threshold), slightly enlarge it (cv2.erode) and find the contours.
image_file = "text.png" img = cv2.imread(image_file) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY) img_erode = cv2.erode(thresh, np. ones((3, 3), np.uint8), iterations=1) # Get contours contours, hierarchy = cv2.findContours(img_erode, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) output = img.copy() for idx, contour in enumerate(contours): (x, y, w, h) = cv2.boundingRect(contour) # print("R", idx, x, y, w, h, cv2.contourArea(contour), hierarchy[0][idx]) # hierarchy[i][0]: the index of the next contour of the same level # hierarchy[i][1]: the index of the previous contour of the same level # hierarchy[i][2]: the index of the first child # hierarchy[i][3]: the index of the parent if hierarchy[0][idx][3] == 0: cv2.rectangle(output, (x, y), (x + w, y + h), (70, 0, 0), 1) cv2.imshow("Input", img) cv2.imshow("Enlarged", img_erode) cv2.imshow("output", output) cv2.waitKey(0)
We get a hierarchical contour tree (parameter cv2.RETR_TREE). The first is the general outline of the picture, then the outlines of the letters, then the internal outlines. We only want the outlines of the letters, so I make sure the "parent" is the overall outline. This is a simplistic approach, and it may not work for real scans, although this is not critical for screenshot recognition.
Result:
The next step is to save each letter, after scaling it to a 28x28 square (this is the format in which the MNIST database is stored). OpenCV is built on top of numpy so we can use array functions for cropping and scaling.
def letters_extract(image_file: str, out_size=28) -> List[Any]: img = cv2.imread(image_file) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY) img_erode = cv2.erode(thresh, np.ones((3, 3), np.uint8), iterations=1) # Get contours contours, hierarchy = cv2.findContours(img_erode, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) output = img.copy() letters = [] for idx, contour in enumerate(contours): (x, y, w, h) = cv2.boundingRect(contour) # print("R", idx, x, y, w, h, cv2.contourArea(contour), hierarchy[0][idx]) # hierarchy[i][0]: the index of the next contour of the same level # hierarchy[i][1]: the index of the previous contour of the same level # hierarchy[i][2]: the index of the first child # hierarchy[i][3]: the index of the parent if hierarchy[0][idx][3] == 0: cv2. rectangle(output, (x, y), (x + w, y + h), (70, 0, 0), 1) letter_crop = gray[y:y + h, x:x + w] # print(letter_crop. shape) # Resize letter canvas to square size_max = max(w, h) letter_square = 255 * np.ones(shape=[size_max, size_max], dtype=np.uint8) if w > h: # Enlarge image top-bottom # ------ # ====== # ------ y_pos = size_max//2 - h//2 letter_square[y_pos:y_pos + h, 0:w] = letter_crop elif w < h: # Enlarge image left-right # --||-- x_pos = size_max//2 - w//2 letter_square[0:h, x_pos:x_pos + w] = letter_crop else: letter_square = letter_crop # Resize letter to 28x28 and add letter and its X-coordinate letters.append((x, w, cv2.resize(letter_square, (out_size, out_size), interpolation=cv2.INTER_AREA))) # Sort array in place by X-coordinate letters. sort(key=lambda x: x[0], reverse=False) return letters
At the end, we sort the letters by X-coordinate, just as you can see, we save the results as a tuple (x, w, letter) so that we can then extract spaces from the spaces between the letters.
Making sure everything works:
cv2.imshow("0", letters[0][2]) cv2.imshow("1", letters[1][2]) cv2.imshow("2", letters[2][2]) cv2.imshow("3", letters[3][2]) cv2.imshow("4", letters[4][2]) cv2.waitKey(0)
The letters are ready for recognition, we will recognize them using a convolutional network - this type of network is well suited for such tasks.
Neural network (CNN) for recognition
The original EMNIST dataset has 62 different symbols (A..Z, 0..9 etc):
emnist_labels = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122]
The neural network, respectively, has 62 outputs, at the input it will receive images 28x28, after recognizing "1" it will be at the corresponding output of the network.
Creating a network model.
from tensorflow import keras from keras.models import Sequential from keras import optimizers from keras.layers import Convolution2D, MaxPooling2D, Dropout, Flatten, Dense, Reshape, LSTM, BatchNormalization from keras.optimizers import SGD, RMSprop, Adam from keras import backend as K from keras.constraints import maxnorm import tensorflow as tf def emnist_model(): model = Sequential() model.add(Convolution2D(filters=32, kernel_size=(3, 3), padding='valid', input_shape=(28, 28, 1), activation='relu')) model.add(Convolution2D(filters=64, kernel_size=(3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(512, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(len(emnist_labels), activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) return model
As you can see, this is a classic convolutional network that highlights certain features of the image (the number of filters is 32 and 64), to the “output” of which is connected the “linear” MLP network, which forms the final result.
Neural network training
Let's move on to the longest stage - training the network. To do this, we will take the EMNIST database, which can be downloaded from the link (archive size 536Mb).
To read the database, use the idx2numpy library. Prepare data for training and validation.
import idx2numpy emnist_path = '/home/Documents/TestApps/keras/emnist/' X_train = idx2numpy.convert_from_file(emnist_path + 'emnist-byclass-train-images-idx3-ubyte') y_train = idx2numpy.convert_from_file(emnist_path + 'emnist-byclass-train-labels-idx1-ubyte') X_test = idx2numpy.convert_from_file(emnist_path + 'emnist-byclass-test-images-idx3-ubyte') y_test = idx2numpy.convert_from_file(emnist_path + 'emnist-byclass-test-labels-idx1-ubyte') X_train = np.reshape(X_train, (X_train.shape[0], 28, 28, 1)) X_test = np.reshape(X_test, (X_test.shape[0], 28, 28, 1)) print(X_train.shape, y_train.shape, X_test.shape, y_test.shape, len(emnist_labels)) k = 10 X_train = X_train[:X_train. shape[0] // k] y_train = y_train[:y_train.shape[0] // k] X_test = X_test[:X_test.shape[0] // k] y_test = y_test[:y_test.shape[0] // k] #Normalize X_train = X_train.astype(np.float32) X_train /= 255.0 X_test = X_test.astype(np.float32) X_test /= 255.0 x_train_cat = keras.utils.to_categorical(y_train, len(emnist_labels)) y_test_cat = keras.utils.to_categorical(y_test, len(emnist_labels))
We have prepared two sets, for training and validation. The symbols themselves are ordinary arrays that are easy to display:
We also use only 1/10 of the dataset for training (parameter k), otherwise the process will take at least 10 hours.
We start network training, at the end of the process we save the trained model to disk.
# Set a learning rate reduction learning_rate_reduction = keras.callbacks.ReduceLROnPlateau(monitor='val_accuracy', patience=3, verbose=1, factor=0.5, min_lr=0.00001) model.fit(X_train, x_train_cat, validation_data=(X_test, y_test_cat), callbacks=[learning_rate_reduction], batch_size=64, epochs=30) model. save('emnist_letters.h5')
The training process itself takes about half an hour:
This needs to be done only once, then we will use the already saved model file. When the training is over, everything is ready, you can recognize the text.
Recognition
For recognition, we load the model and call the predict_classes function.
model = keras.models.load_model('emnist_letters.h5') def emnist_predict_img(model, img): img_arr = np.expand_dims(img, axis=0) img_arr = 1 - img_arr/255.0 img_arr[0] = np.rot90(img_arr[0], 3) img_arr[0] = np.fliplr(img_arr[0]) img_arr = img_arr.reshape((1, 28, 28, 1)) predict = model.predict([img_arr]) result = np.argmax(predict, axis=1) return chr(emnist_labels[result[0]])
As it turned out, the images in the dataset were initially rotated, so we have to rotate the image before recognition.
The final function, which takes an image file as input and a string as output, takes only 10 lines of code:
def img_to_str(model: Any, image_file: str): letters = letters_extract(image_file) s_out="" for i in range(len(letters)): dn = letters[i+1][0] - letters[i][0] - letters[i][1] if i < len(letters) - 1 else 0 s_out += emnist_predict_img(model, letters[i][2]) if (dn > letters[i][1]/4): s_out += ' ' return s_out
Here we use the previously saved character width to add spaces if the gap between letters is more than 1/4 of a character.
Usage example:
model = keras.models.load_model('emnist_letters.h5') s_out = img_to_str(model, "hello_world.png") print(s_out)
Result:
A funny feature - the neural network "mixed up" the letter "O" and the number "0", which, however, is not surprising because the original EMNIST set contains handwritten letters and numbers that do not quite look like printed ones. Ideally, to recognize screen texts, you need to prepare a separate set based on screen fonts, and train the neural network on it.
Conclusion
As you can see, pots are not fired by gods, and what once seemed like “magic” is done quite easily with the help of modern libraries.
Since Python is cross-platform, the code will work everywhere, on Windows, Linux and OSX. It seems that Keras is also ported to iOS/Android, so theoretically, the trained model can be used on mobile devices as well.
For those who want to experiment on their own, the source code is under the spoiler.
keras_emnist.py
# Code source: [email protected] import os # Force CPU # os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # debug messages # 0 = all messages are logged (default behavior) # 1 = INFO messages are not printed # 2 = INFO and WARNING messages are not printed # 3 = INFO, WARNING, and ERROR messages are not printed os. environ['TF_CPP_MIN_LOG_LEVEL'] = '3' import cv2 import imghdr import numpy as np import pathlib from tensorflow import keras from keras.models import Sequential from keras import optimizers from keras.layers import Convolution2D, MaxPooling2D, Dropout, Flatten, Dense, Reshape, LSTM, BatchNormalization from keras.optimizers import SGD, RMSprop, Adam from keras import backend as K from keras.constraints import maxnorm import tensorflow as tf from scipy import io as spio import idx2numpy # sudo pip3 install idx2numpy from matplotlib import pyplot as plt from typing import * import time # dataset: # https://www.nist.gov/node/1298471/emnist-dataset # https://www.itl.nist.gov/iaui/vip/cs_links/EMNIST/gzip.zip def cnn_print_digit(d): print(d.shape) for x in range(28): s="" for y in range(28): s += "{0:.1f} ".format(d[28*y + x]) print(s) def cnn_print_digit_2d(d): print(d.shape) for y in range(d.shape[0]): s="" for x in range(d. shape[1]): s += "{0:.1f} ".format(d[x][y]) print(s) emnist_labels = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100 , 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122] def emnist_model(): model = Sequential() model.add(Convolution2D(filters=32, kernel_size=(3, 3), padding='valid', input_shape=(28, 28, 1), activation='relu')) model.add(Convolution2D(filters=64, kernel_size=(3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(512, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(len(emnist_labels), activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) return model def emnist_model2(): model = Sequential() # In Keras there are two options for padding: same or valid. Same means we pad with the number on the edge and valid means no padding. model.add(Convolution2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', input_shape=(28, 28, 1))) model.add(MaxPooling2D((2, 2))) model.add(Convolution2D(64, (3, 3), activation='relu', padding='same')) model.add(MaxPooling2D((2, 2))) model.add(Convolution2D(128, (3, 3), activation='relu', padding='same')) model.add(MaxPooling2D((2, 2))) # model.add(Conv2D(128, (3, 3), activation='relu', padding='same')) #model.add(MaxPooling2D((2, 2))) ##model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(512, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(len(emnist_labels), activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) return model def emnist_model3(): model = Sequential() model.add(Convolution2D(filters=32, kernel_size=(3, 3), padding='same', input_shape=(28, 28, 1), activation='relu')) model. add(Convolution2D(filters=32, kernel_size=(3, 3), padding='same', activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Convolution2D(filters=64, kernel_size=(3, 3), padding='same', activation='relu')) model.add(Convolution2D(filters=64, kernel_size=(3, 3), padding='same', activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(512, activation="relu")) model.add(Dropout(0.5)) model.add(Dense(len(emnist_labels), activation="softmax")) model.compile(loss='categorical_crossentropy', optimizer=RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0), metrics=['accuracy']) return model def emnist_train(model): t_start = time.time() emnist_path = 'D:\\Temp\\1\\' X_train = idx2numpy.convert_from_file(emnist_path + 'emnist-byclass-train-images-idx3-ubyte') y_train = idx2numpy.convert_from_file(emnist_path + 'emnist-byclass-train-labels-idx1-ubyte') X_test = idx2numpy. convert_from_file(emnist_path + 'emnist-byclass-test-images-idx3-ubyte') y_test = idx2numpy.convert_from_file(emnist_path + 'emnist-byclass-test-labels-idx1-ubyte') X_train = np.reshape(X_train, (X_train.shape[0], 28, 28, 1)) X_test = np.reshape(X_test, (X_test.shape[0], 28, 28, 1)) print(X_train.shape, y_train.shape, X_test.shape, y_test.shape, len(emnist_labels)) #Test: k = 10 X_train = X_train[:X_train.shape[0] // k] y_train = y_train[:y_train.shape[0] // k] X_test = X_test[:X_test.shape[0] // k] y_test = y_test[:y_test.shape[0] // k] #Normalize X_train = X_train.astype(np.float32) X_train /= 255.0 X_test = X_test.astype(np.float32) X_test /= 255.0 x_train_cat = keras.utils.to_categorical(y_train, len(emnist_labels)) y_test_cat = keras.utils.to_categorical(y_test, len(emnist_labels)) # Set a learning rate reduction learning_rate_reduction = keras.callbacks.ReduceLROnPlateau(monitor='val_accuracy', patience=3, verbose=1, factor=0. 5, min_lr=0.00001) model.fit(X_train, x_train_cat, validation_data=(X_test, y_test_cat), callbacks=[learning_rate_reduction], batch_size=64, epochs=30) print("Training done, dT:", time.time() - t_start) def emnist_predict(model, image_file): img = keras.preprocessing.image.load_img(image_file, target_size=(28, 28), color_mode='grayscale') emnist_predict_img(model, img) def emnist_predict_img(model, img): img_arr = np.expand_dims(img, axis=0) img_arr = 1 - img_arr/255.0 img_arr[0] = np.rot90(img_arr[0], 3) img_arr[0] = np.fliplr(img_arr[0]) img_arr = img_arr.reshape((1, 28, 28, 1)) predict = model.predict([img_arr]) result = np.argmax(predict, axis=1) return chr(emnist_labels[result[0]]) def letters_extract(image_file: str, out_size=28): img = cv2.imread(image_file) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY) img_erode = cv2.erode(thresh, np.ones((3, 3), np.uint8), iterations=1) # Get contours contours, hierarchy = cv2. findContours(img_erode, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) output = img.copy() letters = [] for idx, contour in enumerate(contours): (x, y, w, h) = cv2.boundingRect(contour) # print("R", idx, x, y, w, h, cv2.contourArea(contour), hierarchy[0][idx]) # hierarchy[i][0]: the index of the next contour of the same level # hierarchy[i][1]: the index of the previous contour of the same level # hierarchy[i][2]: the index of the first child # hierarchy[i][3]: the index of the parent if hierarchy[0][idx][3] == 0: cv2.rectangle(output, (x, y), (x + w, y + h), (70, 0, 0), 1) letter_crop = gray[y:y + h, x:x + w] # print(letter_crop. shape) # Resize letter canvas to square size_max = max(w, h) letter_square = 255 * np.ones(shape=[size_max, size_max], dtype=np.uint8) if w > h: # Enlarge image top-bottom # ------ # ====== # ------ y_pos = size_max//2 - h//2 letter_square[y_pos:y_pos + h, 0:w] = letter_crop elif w < h: # Enlarge image left-right # --||-- x_pos = size_max//2 - w//2 letter_square[0:h, x_pos:x_pos + w] = letter_crop else: letter_square = letter_crop # Resize letter to 28x28 and add letter and its X-coordinate letters. append((x, w, cv2.resize(letter_square, (out_size, out_size), interpolation=cv2.INTER_AREA))) # Sort array in place by X-coordinate letters.sort(key=lambda x: x[0], reverse=False) # cv2.imshow("Input", img) # # cv2.imshow("Gray", thresh) # cv2.imshow("Enlarged", img_erode) # cv2.imshow("output", output) # cv2.imshow("0", letters[0][2]) # cv2.imshow("1", letters[1][2]) # cv2.imshow("2", letters[2][2]) # cv2.imshow("3", letters[3][2]) # cv2.imshow("4", letters[4][2]) # cv2.waitKey(0) return letters def img_to_str(model: Any, image_file: str): letters = letters_extract(image_file) s_out="" for i in range(len(letters)): dn = letters[i+1][0] - letters[i][0] - letters[i][1] if i < len(letters) - 1 else 0 s_out += emnist_predict_img(model, letters[i][2]) if (dn > letters[i][1]/4): s_out += ' ' return s_out if __name__ == "__main__": # model = emnist_model() # emnist_train(model) #model.