זיהוי מקוון מאפשר המרת טקסט בעזרת עט או לוח אלקטרוני מיוחד המזהים את תנועות הכלי בזמן הכתיבה עצמה. התנועות מסומנות על ידי המחשב בעזרת וקטור התנועה שלהן בכיווני X ו-Y, ווקטורים אלו נרשמים על ידי התוכנה, שמזהה מקטעים נפרדים של מילים ואותיות, ומנסה לנתח אותן - כל אחת בנפרד.
את האותיות והמילים המתקבלות, התוכנה משווה בצורה סטטיסטית או ישירה למאגר נתונים שבו נרשמו המילים והאותיות של משתמש או משתמשים רבים שנדגמו, ולעיתים נעשה שימוש במילון המאפשר לגלות טעויות נפוצות.
זיהוי כתב יד מקוון אמנם מוכר כבר בציבור ואינו עוד תחום חדש, אך הוא עדיין לא תפס תאוצה, במיוחד במחשבים שניתן להשתמש בהם במקלדת, שהיא בטוחה ואמינה יותר. כמעט בכל מחשב כף יד ניתן כבר להשתמש בצורה זו או אחרת של זיהוי כתב יד, אך אמינות היא עדיין בעיה: גם מחשב שאמינות זיהוי כתב היד שלו היא 98%, עדיין דורש לתקן אות כל חמישים אותיות, בעוד שמקלדת דורשת לתקן אפס; מקלדת היא גם מהירה יותר לכל אחד שתרגל אותה מעט בחייו.
שיטת קריאה נוספת היא כתיבה בעזרת עט הכותב בעזרת דיו רגיל, אולם מכיל בתוכו גם שבב המזהה את התנועות שהוא מבצע. צורה זו עדיין בחיתוליה ואינה מסחרית עדיין.
פיתוח אלגוריתמים ושיטות שונות לזיהוי כתב יד הוא נושא מאוד מרכזי ומושקע בו מאמץ מחקרי ופיתוחי רב. קיימים גם ארגונים שונים לקידום הנושא, המקיימים כנסים מסוגים שונים כמו ה-International Workshop on Frontiers in Handwriting Recognition הנערך מדי שנה.
זיהוי לא מקוון.
זיהוי לא מקוון של תמונה שלמה המכילה בתוכה טקסט, מורכב מניתוח התמונה וזיהוי המקטעים המכילים בתוכם מילים, ואחר כך המרתם לאותיות הניתנות לעריכה.
הבעיה כאן, כזכור, היא שהטקסט נייח ולא ניתן להשתמש בצורת הכתיבה של המשתמש לטובת הזיהוי והסיווג. עם זאת, בשל היכולת להשתמש בבלשנות ובסטטיסטיקות מתאימות, ניתן לפענח את הכתוב ביעילות גבוהה למדי.
השימוש בשיטה זו נעשה בעיקר על ידי חברות המשתמשות הרבה בכתיבה של לקוחות שונים (כמו בנקים, חברות ביטוח, דואר וכו').
המחקרים נעשים על ידי ארגונים כמו IAPR (The International Association for Pattern Recognition – האיגוד הבינ"ל לזיהוי תבניות), IWFHR (The International Workshop for Handwriting Recognition – האיגוד הבינ"ל לזיהוי כתב), IEEE ועוד.
צורת הזיהוי.
זיהוי של כתב הוא למעשה סוג של זיהוי תבניות, ולכן אופיו דומה מאוד לזה של זיהוי תמונה בתוך תמונה אחרת. עם זאת, בשל האופי המיוחד של כתב היד והצורות השונות שכל אות יכולה להיכתב בה, זיהוי האותיות נעשה באופן כללי, בכמה שלבים שאינם כה דומים לנהוג:
סוג נוסף של ייצוג מחדש הוא ייצוג סטטיסטי. בשיטה זו מחשבים את ההיסטוגרמה של מיקום צמתים וקווים בצורות שונות באותיות, צורת הגבולות, פיצולים משולשים ועוד. מחושבת גם השכיחות של מעבר קווים מחוץ לגבול מסוים שנקבע מראש או שיפועים מיוחדים של האות. שכיחויות אלו נרשמות בווקטורים או מטריצות שעליהן ניתן לבצע פעולות הקשורות לניתוח האות.
הייצוג האחרון הוא ייצוג לפי טופולוגיה. תחילה מפעילים אלגוריתם הדקה (Thinning) ואז סופרים את הצמתים, העיקולים, הפיצולים ומודדים את המיקום היחסי שלהם, דבר היוצר אפיון ייחודי לכל אות. משתמשים גם ביחסי אורך – רוחב, שינוי בעיקול האות, יציאה מחוץ לשורה ועוד. ייצוג טופולוגיה נעשה גם בשיטה הנפוצה של קידוד שרשרת – זוהי בעצם חלוקה של האות לשרשרת של וקטורים בסיסיים, באורכים קבועים ובכיוונים שונים, לפי שושנת הרוחות. כך אות הופכת לשרשרת של מספרים, שכל אחד מציין וקטור אחר.
השיטות כיום עובדות ברובן על תמונות בינאריות, אך הכרה בחשיבות ההפרש בגווני האפור הנובע מלחצים שונים של היד בשעת הכתיבה מביאה לפיתוח מואץ של אלגוריתמים לניתוח של כתב היד בצורתו המקורית.
קיימות גם שיטות המעוותות את צורת האות בכמה אפשרויות, כדי לנסות להתאים אותה לבסיס נתונים קיים. יש להיזהר מעיוות יתר, שהרי עם מספיק עיוות נוכל להגיע לכל אות אחרת שהיא... לכן מגדירים מראש את כללי העיוות בצורה שתצמצם את שאר האפשרויות, ולא תגרום לאות אחת להפוך לשנייה.
קיימות שיטות המנתחות את המילה השלמה. שיטות אלו עוקפות את הבעיה של חלוקת המילה לאותיות, משימה קשה במיוחד ומבטיחה טעויות בכתב יד, אך הן תלויות בגודלו של אוצר המילים המוגבל בהכרח של בסיס הנתונים, ודורשות יכולת חישוב גבוהה, במיוחד במילים ארוכות. לשיטות אלו יש בדרך כלל אחוזי הצלחה נמוכים מאחוזי ההצלחה של השיטות המנתחות אות אחר אות.
השוואת תבניות מול השוואה ישירה: השוואת תבניות היא סוג של השוואה לפי וקטורים ופיקסלים הקיימים באות. השוואה מלאה היא השוואה שבה משווים כל פיקסל ופיקסל בתמונת המקור לפיקסלים המקבילים להם בתמונת היעד (או לחלק גדול מהם).
כאשר משתמשים בשיטות סטטיסטיות, מחפשים תכונות של האות או המילה המופיעים בהתפלגות אחידה, נורמלית או גיאוסיאנית. נדרשת תכונה שיש מספיק מופעים ממנה (אחרת קשה להסתמך עליה) וכן תכונות המייצגות את האות כמה שיותר.
את התוכנה "מלמדים" (מראש וגם תוך כדי פעולתה) איך נראית כל אות באלפי דרכים שונות, והיא תיצור קשרים הדומים לקשרים עצביים בין הצורות הדומות של אותה אות. כאשר התוכנה תפגוש צורה חדשה של האות היא תשווה אותה לכל הצורות שיש בידה (כלומר, תעביר אותה דרך כל הצמתים לבדיקה של מה הם מכירים) ותקבע מה האותיות הדומות ביותר, ובנוסף, תוסיף את האות החדשה לאוסף של האותיות הקודמות בקשר חלש. ככל שהתוכנה תראה יותר אותיות דומות לכך, הקשרים שלה לאותן אותיות יתחזקו, כמו שקורה ברשתות של הנוירונים במוח. אגב, אם אות זוהתה בטעות, לא ניתן לגשת לקרבי התוכנה ולתקן זאת. יש להראות לתוכנה אותיות דומות לה הכתובות בצורה שדומה מעט יותר לאות האמיתית, וכך לחזק את הקשר לאות האמיתית. כלומר, הגישה החישובית היא מקבילית, מאחר שהאות תעבור דרך כל הצמתים, אך במשקלים שונים הניתנים לה על ידי כל צומת. ניתן להשוות זאת לווקטור העובר דרך כל הצמתים והוא משתנה לאחר מעבר בכל "עמודה" של הצמתים.
מורכבות הרשת תלויה במספר הצמתים הנמצאים בה, היוצרים מספר רב של עמודות. קיימים מחקרים המשתמשים גם ברשתות תלת ממדיות, והם טוענים לעקומת למידה מהירה וכן לתוצאות טובות יותר. מחקרים נוספים הראו כי למעשה, למרות השוני בגישה, רשתות עצביות פועלות כמו שיטות לזיהוי מרקמים (מבחינת פעולתו הסופית של המחשב).
במחקרים מסוימים, שבהם נתגלה כי שיטת HMM לפעמים "קשוחה מדי" עם האותיות והיא אינה מזהה תווים שאינם דומים מאוד לדוגמאות שיש בידה, מחברים כמה מצבים ביחד ליצירת מצבים חדשים וכך מוסיפים גמישות מסוימת לשיטה. ניתוחים שנערכו מגלים כי אכן משתפרים בהרבה סיכויי ההצלחה של זיהוי התו. לא ניתן לחבר יותר מעשרים דוגמאות של תווים מבלי להגביר מאוד את כוח החישוב הנדרש, אך בדרך כלל לא צריך יותר מעשרה כדי לקבל תוצאות טובות מאוד (מעל 95%).
לימוד התוכנה לזהות תווים בצורה הטובה ביותר כולל בחירה של קבוצת דוגמאות מסוימת, המייצגת את התו בצורה הטובה ביותר. דוגמאות אלו ישמשו ליצירת הפונקציות בהם נשתמש בכל מצב.
בסיסי נתונים מוכרים.
בסיסי נתונים עולמיים קיימים כבר משנות ה-90. הם מאגדים בתוכם דוגמאות רבות לשיטות כתיבה שונות של אותיות משפות רבות. חוקרים, המבקשים לבדוק את האלגוריתמים שכתבו, יכולים להסתייע בבסיס הנתונים להשגת צורות רבות של אותיות כתובות בכתב יד. כמו כן ניתן להוריד חלק ממנו כבסיס נתונים של אלגוריתם מסוים. בסיסי הנתונים גדולים מאוד ולכן לא תמיד משתמשים בכולו כבסיס נתונים, אלא רק בחלק נבחר המייצג כמה שיותר צורות שונות. מגבלה זו של גודל קיימת בעיקר במחשבים ידניים, שאין להם הרבה מקום לבזבז ואין להם גם עצמת חישוב גבוהה.
בסיסי הנתונים מתחלקים לחלקים שונים, הכוללים ספרות, תווים באותיות גדולות, תווים באותיות קטנות, סימנים, צירופים של כל הנ"ל ועוד. כך ניתן לבדוק את התוכנה על סוגים שונים של תווים או על צירוף שלהם.
דוגמה אחת לבסיס נתונים הוא UNIPEN. הוא מכיל שמונה סוגי מידע, ייחודי ומעורב, בשפה האנגלית. הוא מכיל דוגמאות רבות והוא מקובץ בצורה ייחודית הנקראת inkML (אשר משתנה לצורה אחרת, UPX, נכון לזמן כתיבת מסמך זה). נכון ל-2004, יש לו כ-15000 דוגמאות שונות לספרות בלבד.
לשפה העברית אין עדיין בסיס נתונים רציני משלה לכתב יד, אם כי הדבר בשלבי פיתוח בכמה מקומות (כמו תוכנת גרפיטי למשל). לשון הקודש מציבה אתגר רציני למפתחים, ובהדגמות הראשונות של חלונות ויסטה למשל נתברר כי לקח לה כמעט עשר דקות לנתח וללמוד מילה אחת למשתמש חדש (אם כי המצב השתפר בינתיים). ניתן גם להשתמש בתוכנות הלומדות את כתב היד וללמד אותן את התווים העבריים, אבל עדיין אין לתוכנה עצמה בקרה על התוצאות שלה, ומלבד זאת, התוכנה צריכה להיות אחת שיודעת לכתוב מימין לשמאל.
דרך לבחירת שיטה לזיהוי כתב יד.
כחלק מעבודת הגמר לקורס כתבתי קריטריונים לא מחייבים לבחירת הדרך לזיהוי כתב יד. מאחר שכפי שראינו, קיימות דרכים רבות למימוש אלגוריתם לזיהוי כתב יד, נדרשת דרך כלשהי לבחור ביניהן. יש לקבוע קריטריונים גם למפתח, שרוצה לבחור אלגוריתם יעיל שיביא לתוצאות הטובות ביותר בזמן הקצר ביותר, בהתאם לכוח החישוב הנתון, וגם למשתמש, שרוצה לדעת איזו מערכת קיימת לקנות.
זיהוי כתב יד – בחירת שיטה למפתח
מפתח הרוצה לבחור שיטה בה הוא ישתמש לזיהוי כתב יד, חייב לקבוע קודם כל את תכונות הזיהוי הכלליות:
נפרט כל אחד מהנושאים:
משאבים.